这些本事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道题值得一提。要计算最大公约数!!我竟然没做!!就跟当年考试市有道二进制转十六进制我也没做一样,尼玛完全不会!

这你敢信