计算机编程试题汇编..docVIP

  • 4
  • 0
  • 约4.13千字
  • 约 6页
  • 2016-12-23 发布于重庆
  • 举报
计算机编程试题汇编01 1 编写一个函数,将一个含十进制数字的字符串转化为十进制的整数。 例如: 将 “-12345670456” 转化为 整数 #coding=gbk #将一个含十进制数字的字符串转化为十进制的整数 #例如: 将 -12345670456 转化为 整数 def mystrToInt( s ): n = len(s) x = 0 #已转换的值 f = 1 #符号 flag = 0 #是否已遇到数字 for i in range(0,n): c = s[i] if (0=c and c=9): flag += 1 x = x*10 + (ord(c) - ord(0)) else: if flag0: break elif ( c == - ): f = -1 return f*x print( mystrToInt(-12345670456) ) print( mystrToInt(abcd你好001234-apc) ) -12345670456 1234 2 求数组中出现次数超过一半的元素 分析: 在一个规模为N的数组A中,所谓过半元素就是出现次数大于N/2的元素, 例如 a=[3,3,4,2,4,4,2,4,4 ]中 有一个过半元素4 (1) 这个数组有没有一个元素是其出现的次数是过半的? x 是 a的一个元素,其出现的次数 Px n/2 (2) 这个元素是什么? 用途举例: 在计算选举结果超过半数的那个人的编号。 #coding=gbk #求数组中出现次数超过一半的元素 def find_Guo_ban( A ): n = len( A ) if n1: return False, 0,0 # 有没有找到, 找到的元素, 出现的次数 X = A[0] P = 1 for i in range(1,n): if A[i]==X: P = P + 1 else: P = P - 1 if P=0: P = 1 X = A[i] #最后的确认 P = 0 for i in range(0,n): if X==A[i]: P = P+1 return Pn/2, X,P A = [3,3,4,2,4,4,2,4,4 ] print( find_Guo_ban( A )) (True, 4, 5) 3 求四位数的黑洞数。 黑洞数又称陷阱数,是一类具有奇特转换特性的整数。 任何一个数字不全相同的正整数,经有限次“重排求差”操作,总会得到某一个数,这个数即为黑洞数。 重排求差操作,即组成该数的所有数字重排后的最大数减去重排后的最小数。   举个例子,三位数的黑洞数为495   简单推导过程:随便找个数,如297,三个位上的数从小到大和从大到小各排一次,为972和279,相减,得693 按上面做法再做一次,得到594,再做一次,得到495,之后反复都得到495 分析: 我们需要: ( 1 ) 将一个自然数 x 分解成一个 w 位的数组,每个元素是x的一个10进制的数字位 int_to_arr( x, w ) 入口: x 要分解的正整数 w 要分解的位数( w=1) 说明: x 的实际位数可能是w位也可能不是。 当 x 的实际位数w 时,仅从右侧取 w 位 当 x 的实际位数w 时, 从左侧补0,以填满 w 位 返回: 分解的数组 ( 2 ) 将一个上面的数组,组装成一个自然数 arr_to_int( A ) 入口: A: 上面的数组 返回: 组装后的自然数 (

文档评论(0)

1亿VIP精品文档

相关文档