这些本事C语言100例中的练习,无奈VC++的环境实在一头雾水,连编译都得出错,更别说运行了。所以继续昨天的python。
先来看这道:
【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
怡情的小题,来回顾一下代码:
1 #!/usr/bin/env python
2 # -*- coding: cp936 -*-
3 print'''题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
4 第10次落地时,共经过多少米?第10次反弹多高?
5 '''
6
7 raw_input(" 按任意键继续 \n")
8 raw_input(" *想让我帮你算吗?按Enter开始* \n")
9 n = int(raw_input(" **打算反弹几次?把数字输下面** \n"))
10 d = 0.0
11 #第n次落下反弹高度
12 print "第n次落下反弹高度:%s"%(100*1/2.0**n)
13
14 #第n次落地时共经过多少米
15 for i in range(n):
16 d += 100*1/2.0**i
17 print "第n次落地时共经过多少米:%s\n"%d
18 #按Enter继续
19 raw_input("按任意键退出")
就把里面零碎的知识点展开说一下吧:
三个引号中的内容可以跨行打印出来,而且保持原样。
除法有”/“和”//“两种:后一种只做整除,小数一概舍掉;前一种根据数据类型而定,都是int时跟第二种一样,有float时保留小数。
”**“这样两个星号是幂运算,第一次见。
大概就这么多。不过有一点体会不得不说,那就是写注释!
不仅有助于别人理解你的代码,也让你自己在写的时候思路更加清晰。刚开写第一道题的时候,简直要疯掉,几行代码写了一个小时,写着后面的忘着前面的,而且调试语法错误时还会忘掉要调试的这句是干嘛的!
简直受不鸟!!
好了,继续下一题。
【程序18】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
关键是计算出每一项的值,其余就很好处理了(可是天生有手残的缺陷啊
,语法错,类型不对,值无效,bug满天飞有木有啊
,可代码就那么几行有木有啊!
)
受不鸟我自己。
上菜:
1 #!/usr/bin/env python
2 # -*- coding: cp936 -*-
3 #输入用来叠加的数字
4 a = int(raw_input("输入用来叠加的数字"))
5 #输入数字控制叠加次数
6 x = int(raw_input("输入叠加次数"))
7 #定义一个函数来求第n次叠加时需加上的数值
8 def dj(x="",y=""):
9 s = 0
10 for i in range(1,y+1):
11 s += x * 10 ** (i-1)
12 return s
13 #计算叠加结果,将过程一并打印输出
14 s = a
15 print s,
16 for i in range(2,1+x):
17 s += dj(a,i)
18 print "+%s"%(dj(a,i)),
19 print "=%s"%s
20 #按Enter继续
21 raw_input("press Enter")
这个不想多说。不过另外有3道题值得一提。要计算最大公约数!!我竟然没做!!就跟当年考试市有道二进制转十六进制我也没做一样,尼玛完全不会!
这你敢信