c程序实现以下问题
- 提问者网友:杀生予夺
- 2021-05-16 13:10
(2)编写程序实现以下问题:一球从100米高度自由落下,每次落地后反跳回原高度的一半,求它在第10次落地时,共经历多少米?第10次反弹多高?
(3)编写程序实现以下问题(选作):打印出以下图案:
- 五星知识达人网友:鱼芗
- 2021-05-16 14:27
推理:
第一步:
1分的最高能有100枚,减去2分的最少1枚,5分的最少1枚,1分的最高能有93枚
1:93,1,1
2分的最高能有50枚,减去1分1枚,5分1枚,2分的最高能有48枚
2:1,48,1
5分的最高能有20枚,减去1分的1枚,2分的两枚,5分的最高能有19枚
3:1,2,19 or 3,1,19
第二步:
1分的从1枚开始,每增加1枚,有几种可能?
假设2分的x枚,5分的y枚 x(1-48) y(1-19)
应该:1+2x+5y=100 => 2x+5y=99 => 推理,因为总和尾数为单数,所以y肯定为单数,y的基数是5,只有一个1分,所以,要达到尾数9,那么一定要有2个2分的,所以,2分的起点是2枚,每一个5分都可以由1个1分和两个2分组成,所以,y在(1-19)以内,单数都有解,而当1分,5分都确定时,2分的枚数一定也是确定的,所以,当1分为1个时,有10个解(19的单数个数)
先不考虑1分的双数,从单数开始算,下一个是3枚一分的,这样等于减少了1枚两分的,5分的个数最多还是19个,所以,当1分为3个时,也有10个解
当1分为5个时,5分必须减少两个以形成一个双数的空余给2分,所以解是8个
当1分为7个时,还是10个解
当1分为9个时,还是10个解
当1分为11个时,9各解
好了,咱们把这个规律找到:
1分的个数:1, 3, 5, 7, 9, 11,13,15,17,19,21,23,25,27.......
解的个数:10,10,8, 10,10,9, 9, 7, 9, 9, 8, 8, 6,8........
看出规律没有? (10,10,8,10,10)(9,9,7,9,9)(8,8,6,8,8)
所以,单数1的所有解的个数是:
10.10.8.10.10.9.9.7.9.9.8.8.6.8.8.7.7.5.7.7.6.6.4.6.6.5.5.3.5.5.4.4.2.4.4.3.3.1.3.3.2.2.0.2.2.1.1 (共47组到93)
加一下:(10+9+8+7+6+5+4+3+2)×4+(8+7+6+5+4+3+2+1)+1+1=254种
下面看1的双数
当1分有双数枚时,由于不可能跟2分的结合成单数以便和5分结成双数,所以,5分的枚数肯定是双数。即2,4,6.....18
从1分2枚开始:2+2x+5y=100=》 2x+5y=98=>推理,y最多有90/5/2=9个,每个y只有1个x组合,所以,当1分有2枚时解为9个
当1分有4枚时,4+2x+5y=100 => 2x+5y=96,同解,9个
当1分有6枚时,6+2x+5y=100 => 2x+5y=94,同解,9个
当1分有8枚时,8+2x+5y=100 => 2x+5y=92,同解,9个
当1分有10枚时,10+2x+5y=100 => 2x+5y=90,要减去两个y空出x需要的双数,解为7个
1分硬币的总和应在90分以下
规律如下:99997888867777566664555534444233331222201111
加一下:(9+8+7+6+5+4+3+2+1)×4+7+6+5+4+3+2+1=208
208+254=462种
算完了,你演算一下,我这个应该是笨方法吧。但是我觉得思路应该是对的。
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
1.程序分析:见下面注释
2.程序源代码:
#include “stdio.h“
#include “stdio.h“
main()
{
float sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;
hn=hn/2;
}
printf(“the total of road is %f\n“,sn);
printf(“the tenth is %f meter\n“,hn);
getch();
}
这个是WIN-TC的教程,如果你用C++编译器,不用打最后的getch();