之后很多是练习c调用c的函数的,估计要跳过了~
# 【程序21】
# 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
#第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半
#零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
# 程序分析:采取逆向思维的方法,从后往前推断。
# 程序源代码:
s= 1
for j in
range(1,10):
s = (s+1)*2
print s
su = s
# 【程序22】
# 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
#u 比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
#u 三队赛手的名单。
# 程序分析: 用i,j,k 表示a,b,c的未知对手。三个for加前两个if表
# 示i j k 互不相同,第三个if表示a说他不和x比,c说他不和x,z比
# 程序源代码:
for i in
range(ord('x'),ord('z') + 1):
for j in range(ord('x'),ord('z') + 1):
if i != j:
for k in range(ord('x'),ord('z') +
1):
if (i != k) and (j != k):
if (i != ord('x')) and (k
!= ord('x')) and (k != ord('z')):
print 'order is a --
%s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))
# 【程序23】
# 题目:打印出如下图案(菱形)
# *
# ***
# ******
# ********
# ******
# ***
# *
# 程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
#l for循环,第一层控制行,第二层控制列。
# 程序源代码:
for i in range(1,5):
for j in range(0,i):
print '*',
print ''
for i in range(1,4):
for j in range(0,4-i):
print '*',
print ''
# 【程序24】
# 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
# 程序分析:请抓住分子与分母的变化规律。
# 程序源代码:
fz = 2.0
fm = 1.0
s = 0
for i in
range(1,21):#k = range(2,8)=[2, 3, 4, 5, 6, 7]
fz = fm + fz
fm = fz - fm #fz后 = fm+ fz前,则 fz前 = fz后- fm
s = s + fz/fm
print s
# 【程序25】
# 题目:求1+2!+3!+...+20!的和
# 程序分析:此程序只是把累加变成了累乘。
# 程序源代码:
s =0
for i in
range(1,21):
sn = 1
for j in range(1,i+1):
sn = sn*j
s = s+sn
print s
#【程序26】
#题目:利用递归方法求5!。
#程序分析:递归公式:fn=fn_1*4!
#程序源代码:
def fa(num):
if num <= 1:
return 1
else:
return num*fa(num-1)
print fa(5)
#【程序27】
#题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#程序分析:
#程序源代码:
#明明可以用s.reverse()的
s = raw_input('plz
enter five char')
def fa(num):
if num <= 1:
print s[0],
return 1
else:
print s[num-1],
return fa(num-1)
fa(len(s))
#【程序28】
#题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,
#他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人
#大两岁。最后 问第一个人,他说是10岁。请问第五个人多大?
#程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,
#需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
#程序源代码:
# 应该还有其他的要s传递的方式,等以后了解更多了
def fa(num,s):
if num <= 1:
return s
else:
s = s+2
return fa(num-1,s)
print fa(5,10)
#【程序29】
#题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
#程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
#程序源代码:
s =
list(raw_input('plz enter a number'))
print len(s)
s.reverse()
for i in
range(0,len(s)):
print int(s[i]),
#【程序30】
#题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#程序分析:同29例
#程序源代码:
s =
list(raw_input('plz enter a number'))
m = range(0,len(s))
for i in range(0,len(s)):#直接m = s的话,s逆序了,m会跟着变,只好一个个来赋值了
m[i]=s[i]
s.reverse()
if(s == m):
print 'ok'
else:
print 'no'