for(kx; k<=z; k++) i if(il=k&&jl=k) f if(il=x'&&k!=x,'&&k!=z printf("order is a--%cItb--%cItc--%cIn", 1, j, k) 【程序23】 题目:打印出如下图案(菱形) 幸 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第 层控制行,第二层控制列。 2.程序源代码: int i,j, k; for(i=0;i<=3;i++) printf( fo(k=0k<=2*k++) printf("\n") for(i=0;i<=2;i++) for(=0: j<=1 j ++ for(k=0k<=42*ik++) printf("*") printf("\n") 【程序24】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。 11
11 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); } } } } ============================================================== 【程序 23】 题目:打印出如下图案(菱形) * *** ****** ******** ****** *** * 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for 循环,第一 层控制行,第二层控制列。 2.程序源代码: main() { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(" "); for(k=0;k<=4-2*i;k++) printf("*"); printf("\n"); } } ============================================================== 【程序 24】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和
1.程序分析:请抓住分子与分母的变化规律 2.程序源代码: int n t number=20 float a=2. b=1.s=0 for(n=l; n<=number; n++ s=sta/b t=aa=a+b.b=t;/*这部分是程序的关键,请读者猜猜t的作用* printf("sum is %9.6f\n", s) 【程序25】 题目:求1+2+3!++20!的和 1.程序分析:此程序只是把累加变成了累乘 2.程序源代码: no float ns-0t=l for(n=l;n<=20,n++) s+=t; printf("1+2!+3!. +201=%eIn"s) 【程序26】 题目:利用递归方法求5!。 1程序分析:递归公式:fn=fn1*4! 2程序源代码: #include " stdio h no Int I int fact( for(i=0;i<5;i++) printf("140: %d! =%odin" i, fact(O) int fact() J
12 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 is %9.6f\n",s); } ============================================================== 【程序 25】 题目:求 1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。 2.程序源代码: main() { float n,s=0,t=1; for(n=1;n<=20;n++) { t*=n; s+=t; } printf("1+2!+3!...+20!=%e\n",s); } ============================================================== 【程序 26】 题目:利用递归方法求 5!。 1.程序分析:递归公式:fn=fn_1*4! 2.程序源代码: #include "stdio.h" main() { int i; int fact(); for(i=0;i<5;i++) printf("\40:%d!=%d\n",i,fact(i)); } int fact(j) int j; { int sum; if(j==0)
else sum=j*fact(j-1); return sum 【程序27】 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来 1程序分析: 2.程序源代码 #include"stdio. h" maino void palin(int n) printf("\40 palin(i) printf("\n"); void palin(n Int n char next: if(n<=1) next=getchar printf("\n\0: " putchar( next) next=getchar palin(n-1); putchar(next) 【程序28】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个 人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他 说是10岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的 岁数,依次类推,推到第一人(10岁),再往回推 2程序源代码:
13 sum=1; else sum=j*fact(j-1); return sum; } ============================================================== 【程序 27】 题目:利用递归函数调用方式,将所输入的 5 个字符,以相反顺序打印出来。 1.程序分析: 2.程序源代码: #include "stdio.h" main() { int i=5; void palin(int n); printf("\40:"); palin(i); printf("\n"); } void palin(n) int n; { char next; if(n<=1) { next=getchar(); printf("\n\0:"); putchar(next); } else { next=getchar(); palin(n-1); putchar(next); } } ============================================================== 【程序 28】 题目:有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个 人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他 说是 10 岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的 岁数,依次类推,推到第一人(10 岁),再往回推。 2.程序源代码: age(n) int n;
if(n=1)c=10 Ise c=age(n-1)+2 eturn(c) maino i printf("%d", age(5)); 【程序29】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字 程序分析:学会分解出每一位数,如下解释 2.程序源代码: main( long a, b, c, d e, x scanf("%ld", &x) a=x/10000/*分解出万位* %100001000/*分解出千位* C=x%1000100,/*分解出百位* d=x%100/10/分解出十位* e=x%10,/分解出个位* if(al=0)printf("there are 5, %ld %ld %ld %ld %ld\n",e, d, c, b, a) else if (b!=0) printf("there are 4, %ld %ld %ld%ld\n,e, d, c, b); else if(cl=0)printf("there are 3, %ld %ld %ld\n", e, d, c); else if (d=0)printf("there are 2, %ld%ld\n",e, d) else if (el=0) printf("there are 1, %ld\n", e); 【程序30】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同 1程序分析:同29例 2.程序源代码 sh scanf("%ld", &x) qan=x%100001000 ge=x%10 f(ge=wan&&shi==qan)/*个位等于万位并且十位等于千位* printf("this number is a huiwen"); printf("this number is not a huiwen");
14 { int c; if(n==1) c=10; else c=age(n-1)+2; return(c); } main() { printf("%d",age(5)); } ============================================================== 【程序 29】 题目:给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1. 程序分析:学会分解出每一位数,如下解释: 2.程序源代码: main( ) { long a,b,c,d,e,x; scanf("%ld",&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); } ============================================================== 【程序 30】 题目:一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。 1.程序分析:同 29 例 2.程序源代码: main( ) { long ge,shi,qian,wan,x; scanf("%ld",&x); wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/ printf("this number is a huiwen\n"); else printf("this number is not a huiwen\n");
【程序31】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或i语句判断第二个字母。 2.程序源代码: #include <stdio. h> char letter. printf("please input the first letter of someday In"); while( etter=getch()!=Y)当所按字母为Y时才结束* i switch(letter) cases printf("please input second letterIn") if((letter=getchO)=='a) printf("saturday \n") else if (letter=getchO)=u") printf("sundayin") else printf("data errorin") break. case F: printf("friday"); break I: printf("monday In"); break case T' printf("please input second letter In") f((letter=getcho)-=u) printf("tuesday In") else if((letter=-getcho)h") printf("thursday\n"); else printf("data errorin") break. printf("wednesday\n"); break; default: printf("data errorIn") 【程序32】 NE: Press any key to change color, do you want to try it. Please hurry up! 1程序分析: 2.程序源代码: #include <conio. h> void main( void) int color. for(color =0; color <8; color++) textbackground( color)/设置文本的背景颜色* 15
15 } 【程序 31】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个 字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或 if 语句判断第二个字母。 2.程序源代码: #include <stdio.h> void main() { char letter; printf("please input the first letter of someday\n"); while ((letter=getch())!='Y')/*当所按字母为 Y 时才结束*/ { switch (letter) {case 'S':printf("please input second letter\n"); if((letter=getch())=='a') printf("saturday\n"); else if ((letter=getch())=='u') printf("sunday\n"); else printf("data error\n"); break; case 'F':printf("friday\n");break; case 'M':printf("monday\n");break; case 'T':printf("please input second letter\n"); if((letter=getch())=='u') printf("tuesday\n"); else if ((letter=getch())=='h') printf("thursday\n"); else printf("data error\n"); break; case 'W':printf("wednesday\n");break; default: printf("data error\n"); } } } ============================================================== 【程序 32】 题目:Press any key to change color, do you want to try it. Please hurry up! 1.程序分析: 2.程序源代码: #include <conio.h> void main(void) { int color; for (color = 0; color < 8; color++) { textbackground(color);/*设置文本的背景颜色*/