- 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)