
规律递推同愿 【程序1】 题目:飘子吃桃月题:毅子第一天摘下若干个桃子,当即吃了一半,还不意,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了酸一天剩下的一 半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码: mainO int day,x1.x2; day=9: x2-1: while(day>0) (x1-(x2+1)2:/第一天的桃子数是第2天桃子数加1后的2倍/ x2=x1: day--: printf("the total is %d\n",xl): 【程序2】 题目:一球从100米高度自由落下,每次落地后反跳国原高度的一半:再落下,求它在第 10次落地时,共经过多少米?第10次反弹多高? 1.程序分析:见下面注释 2.程序源代码: mainO float sn=100.0,hn=sn/2; int n: for(n-2:n<=10:n++)
规律递推问题 【程序 1】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一 半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码: main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第一天的桃子数是第 2 天桃子数加 1 后的 2 倍*/ x2=x1; day--; } printf("the total is %d\n",x1); } 【程序 2】 题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高? 1.程序分析:见下面注释 2.程序源代码: main() { float sn=100.0,hn=sn/2; int n; for(n=2;n<=10;n++)

ssn+2n;/体第n次落地时共经过的米数/ hn=hn/2:/体第n次反跳高度*/ printf(the total of road is &f\n",sn); printf(the tenth is sf meter'\n",hn): 【程序3】 思目:求s=a+ad+aaa+as8a+aa.,a的值,其中a是一个数字.例知2+22+222+2222+22222(此 时共有5个数相加),几个数相如有键盘控制, 1.程序分析:关键是计算出每一项的值, 2.程序源代码: main() int a,n.count=1: long int sn=0,tn=0: printf('please input a and n'\n"): scant(d,”,ka,kn: printf ("a=sd,n=sd\n",a.n) while(coumt<=n) tn=tnta: sn"sn+t■: aa◆10: **count: printf("ataat...=sld\n",sn)
{ sn=sn+2*hn;/*第 n 次落地时共经过的米数*/ hn=hn/2; /*第 n 次反跳高度*/ } printf("the total of road is %f\n",sn); printf("the tenth is %f meter\n",hn); } 【程序 3】 题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此 时共有 5 个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 2.程序源代码: main() { int a,n,count=1; long int sn=0,tn=0; printf("please input a and n\n"); scanf("%d,%d",&a,&n); printf("a=%d,n=%d\n",a,n); while(count<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++count; } printf("a+aa+...=%ld\n",sn); }

【程序4】 题目:吉典利题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三 个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为量列1,1,2,3,5,8,1321.… 2.程序源代码: main() long f1,f2: int i: f1=f2=1: for(i=1:1<-20:1+) (printf(s121d $121d".fl,f2): if(i20)printf(n):/控制输出,每行四个*/ 1=f1+2:/*前两个月加起米赋值给第三个月*/ 2-1+2:/,前两个月如起来赋值给第三个月*/ 【程序5】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和. 1,程序分析,请抓住分子与分母的变化规律。 2.程序源代码: mainO 【 int n.t,nunber=20: f10at4=2,b=1,s=0: for(n=]:n<=mumber:n++) s=s+a/b: t=:=:+比:b=t:/这都分是程序的关键,请读者猜猜。的作用/
【程序 4】 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三 个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列 1,1,2,3,5,8,13,21.... 2.程序源代码: main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 【程序 5】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。 1.程序分析:请抓住分子与分母的变化规律。 2.程序源代码: main() { int n,t,number=20; float a=2,b=1,s=0; for(n=1;n<=number;n++) { s=s+a/b; t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜 t 的作用*/ }

printf(sum is9.6fn”,s》: 1 【程序6】 思目,海灌上有一堆桃子,五只张子来分。第一只张子把这堆桃子凭据分为五份,多了一个, 这只张子把多的一个扔入海中,拿走了一份,第二只验子把剩下的桃子又平均分成五份,又 多了一个,它同样把多的一个扔入海中,拿走了一份,第三,第四、第五只聚子都是这样做 的,日海滩上原来最少有多少个株子? 1.程序分析: 2程序源代码: mainO (int i,m j.k,count: for(i=4:1<10000:1+=40 【count-=0: mi: fog(k=0:k<5:k+】 =1/4*5+1日 i-j: if(4=00 count++: else break; 10 if (count=4) {printf(dn°,count): break:】
printf("sum is %9.6f\n",s); } 【程序 6】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又 多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做 的,问海滩上原来最少有多少个桃子? 1.程序分析: 2.程序源代码: main() {int i,m,j,k,count; for(i=4;i<10000;i+=4) { count=0; m=i; for(k=0;k<5;k++) { j=i/4*5+1; i=j; if(j%4==0) count++; else break; } i=m; if(count==4) {printf("%d\n",count); break;} } }