【程序11】
一、题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
二、程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
三、程序源代码: main() { long f1,f2; int i; f1=1; f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n"); /*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f2+f1; /*前两个月加起来赋值给第三个月*/ } }
【程序12】 一、题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
二、程序分析:采取逆向思维的方法,从后往前推断。
三、程序源代码:
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); }
【程序13】 一、题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定 比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出 三队赛手的名单。
二、程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
三、程序源代码:
main() {char i,j,k; /*i是a的对手,j是b的对手,k是c的对手*/ for(i='x';i<='z';i++) for(j='x';j<='z';j++) {if(i!=j) for(k='x';k<='z';k++) {if(i!=k&&j!=k) { if(i!='x'&&k!='x'&&k!='z') printf("order is a--%c\tb--%c\tc--%c\n",i,j,k); } } } }
【程序14】
一、题目:打印出如下图案(菱形)
* *** ****** ******** ****** *** *
二、程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。
三、程序源代码:
main() { int i,j; for(i=0;i<=3;i++) /*输出上面4行*号*/ { for(j=0;j<=3-i;j++) printf(" "); /*输出*号前面的空格*/ for(j=0;j<=2*i;j++) printf("*"); /*输出*号*/ printf("\n\n"); /*输出完一行*号后换行*/ } for(i=0;i<=2;i++) /*输出下面3行*/ { for(j=0;j<=i+1;j++) printf(" "); /*输出*号前面的空格*/ for(j=1;j<=5-2*i;j++) printf("*"); printf("\n\n"); } }
【程序15】
一、题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
二、程序分析:请抓住分子与分母的变化规律。
三、程序源代码:
main() {int n,t; float a=2,b=1,s=0; for(n=1;n<=20;n++) { s=s+a/b; t=a; a=a+b; b=t; } printf("sum is %9.6f\n",s); }
|