《2022年C语言循环例题 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言循环例题 .pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、有关循环的编程例题1 1. / 输出 a 和 b 之间的所有素数 , 10 个素数为一行输出#include #include #include int panDuanSuShu(int x) /判断 x 是否是素数 int i,m,flag; /flag为 1 表示是素数, flag 为 0 表示不是素数 m=(int)sqrt(x); if(x=2) flag=1; else for(i=2;im) flag=1; return flag; int shuChuSuShu(int a,int b) int i,k=0;/i是循环变量, k 表示已经输出了 k 个素数for(i=a;i=b;
2、i+) if(panDuanSuShu(i)=1) printf(%6d,i); k+; if(k%10=0) printf(n); printf(n); return k; int main() int a,b,t; printf(输入 a 和 b,以便求 a 和 b之间的所有素数 n); scanf(%d%d,&a,&b); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 有关循环的编程例题2 while(a2|bb) t
3、=a;a=b;b=t; printf(%d和%d之间共有 %d个素数 ,a,b,shuChuSuShu(a,b); printf(nn); return 0; 2. / 用户输入 2 个数,输出这 2 个数之间所有的超素数/ 超素数 (质数) 的概念: 7193 是素数, 719是素数, 71 是素数, 7 是素数,则 7193是素数#include #include #include int isPrime(int n)/判断某数是否是素数 int i,f,m=(int)sqrt(n); if(n=1) f=0; else for(i=2;im) f=1; else f=0; return
4、f; int supperPrime(int n)/判断某数是否是超素数 int t=n; while(t0) if(isPrime(t)=1) t=t/10; else break; if(t=0) return 1; else return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 有关循环的编程例题3 void printSupperPrime(int a,int b)/输出 a 到 b 之间所有的超素数 i
5、nt i,m=0; for(i=a;i=b;i+) if(supperPrime(i) printf(%8d,i); m+; if(m%5=0) printf(n); printf(n); int main() int a,b,t; printf(input a,b:); scanf(%d%d,&a,&b); while(a2 | bb) t=a;a=b;b=t; printSupperPrime(a,b); printf(n); /system(pause); return 0; 3. / 满足 a*a+b*b=c*c 的 a,b,c 三个数,称为勾股数/ 编程输出 100 以内的所有勾股数
6、#include #include int gouGuShu() int x=0; for(int a=1;a=100;a+) for(int b=a;b=100;b+) for(int c=b;c=100;c+) if(a*a+b*b=c*c) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 16 页 - - - - - - - - - 有关循环的编程例题4 if(x%4=0) printf(n); printf(%4d%4d%4d ,a,b,c); x+; retur
7、n x; int main() printf(nn 100以内的勾股数共有: %d个。n,gouGuShu(); / system(pause); return 0; 4. / 有一堆桃子,第一天猴子吃掉桃子的一半又多吃1 个,第二天猴子再吃掉桃子的一半又多吃一个/ 第 10 天只剩下 1 个桃子,问最初有多少个桃子#include #include int houZiChiTaoZi() int day=10,x1,x2=1; while(day1) x1=(x2+1)*2; x2=x1; day-; return x1; int main() printf(最初桃子有 %d个n,houZi
8、ChiTaoZi(); /system(pause); return 0; 5. / 由用户输入一个年份,再输入该年的元旦是星期几,再输入一个月份,则打印输出该月的日历。/ 例如:输入年份是2000年,输入元旦为星期6,输入月份为 3,则输出:/3 月日一二三四五六/ 1 2 3 4 / 5 6 7 8 9 10 11 / 12 13 14 15 16 17 18 / 19 20 21 22 23 24 25 / 26 27 28 29 30 31 #include #include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
9、- 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - 有关循环的编程例题5 int LeepYear(int y)/判断某年是否是闰年 if(y%4=0&y%100!=0|y%400=0) return 1; else return 0; int HowManydays(int y,int m)/判断该月有多少天 int thisMonthDays; switch(m) case 1: case 3: case 5: case 7: case 8: case 10: case 12: thisMonthDays=31;break; case
10、 4: case 6: case 9: case 11:thisMonthDays=30;break; case 2: if(LeepYear(y)=1) thisMonthDays=29; else thisMonthDays=28; return thisMonthDays; /whichWeek 函数判断该月的 1 号是星期几int whichWeek(int y,int m,int w) /w表示该年的元旦是星期几 int febDay;/存放 2 月份有多少天int days;/存放该月的 1 号距离元月 1 号有多少天int thisWeek;/存放该月的 1 号是星期几if(Le
11、epYear(y) febDay=29; else febDay=28; switch(m) case 1: days=0;break; case 2: days=31;break; case 3: days=31+febDay;break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 16 页 - - - - - - - - - 有关循环的编程例题6 case 4: days=2*31+febDay;break; case 5: days=2*31+30+febDa
12、y;break; case 6: days=3*31+30+febDay;break; case 7: days=3*31+2*30+febDay;break; case 8: days=4*31+2*30+febDay;break; case 9: days=5*31+2*30+febDay;break; case 10: days=5*31+3*30+febDay;break; case 11:days=6*31+3*30+febDay;break; case 12:days=6*31+4*30+febDay;break; thisWeek=(days+w)%7; return thisW
13、eek; /shuChuRiLi函数的功能是输出日历void shuChuRiLi(int year,int month,int week) /week表示该年的元旦是星期几 int ThisMonthDay,ThisWeek,d,i; ThisMonthDay=HowManydays(year,month);/计算这个月有多少天ThisWeek=whichWeek(year,month,week);/计算这个月的 1 号是星期几printf(nn); printf(%4d月日一二三四五六n,month); printf(%6c, ); d=1; for(i=0;iThisWeek;i+) /
14、输出 1 号前面的空格printf(%6c, ); for(i=ThisWeek;i=6;i+,d+) /输出 1 号所在的那 1 行日历printf(%6d,d); while(d=ThisMonthDay) if(i%7=0) printf(n); printf(%6c, ); printf(%6d,d); d+; i+; printf(nn); int main() int year=-20,month=13,week=9; while(year12|month7|week1) printf(该年的元旦是星期几? ); scanf(%d,&week); shuChuRiLi(year,m
15、onth,week); system(pause); return 0; 6. / 输出三种形式的九九乘法口诀表#include #include void chengFaKouJueBiao1() int i,j; printf( *|); for(i=1;i=9;i+) printf(%4d,i); printf(n); for(i=1;i=40;i+) printf(-); printf(n); for(i=1;i=9;i+) printf(%2d|,i); for(j=1;j=9;j+) printf(%4d,i*j); printf(n); printf(nn); void chen
16、gFaKouJueBiao2() int i,j; printf( *); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页 - - - - - - - - - 有关循环的编程例题8 for(i=1;i=9;i+) printf(%4d,i); printf(n); for(i=1;i=9;i+) printf(%2d,i); for(j=1;j=i;j+) printf(%4d,i*j); printf(n); printf(nn); void chengFaK
17、ouJueBiao3() int i,j; printf(n); for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-4d,i,j,i*j); printf(n); printf(nn); int main() chengFaKouJueBiao1(); chengFaKouJueBiao2(); chengFaKouJueBiao3(); / system(pause); return 0; 7. / 用户输入三角形的高度,输出由*构成的三角形。#include #include void shuChuSanJiaoXing(int n) int h
18、,k,s; for(h=1;h=n;h+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - 有关循环的编程例题9 for(k=1;k=n-h+1;k+) printf( ); for(s=1;s=2*h-1;s+) printf(*); printf(n); printf(nn); int main() int n; printf(输入三角形的行数: ); scanf(%d,&n); while(n2) printf(输入三角
19、形的行数: ); scanf(%d,&n); shuChuSanJiaoXing(n); /system(pause); return 0; 8. / 输出边长为 n 的空心菱形#include #include void shuChuKongXinlingXing(int n) int h,k,s; for(k=1;k=n;k+) printf( ); printf(*n); for(h=2;h=n;h+) for(k=1;k=n-h+1;k+) printf( ); printf(*); for(k=1;k=2*h-3;k+) printf( ); printf(*); printf(n)
20、; for(h=1;h=n-2;h+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - 有关循环的编程例题10 for(k=1;k=h+1;k+) printf( ); printf(*); for(k=1;k=2*n-2*h-3;k+) printf( ); printf(*); printf(n); for(k=1;k=n;k+) printf( ); printf(*); printf(nn); int main() i
21、nt n; printf(输入菱形的边长: ); scanf(%d,&n); while(n2) printf(菱形边长必须大于2,请重新输入菱形的边长:); scanf(%d,&n); shuChuKongXinlingXing(n); / system(pause); return 0; 9. #include #include / 输出所有三位的水仙花数void sanWeiShuiXianHuaShu() int i,a,b,c; for(i=100;i=999;i+) a=i/100; b=i/10%10; / b=i%100/10; c=i%10; if(i=a*a*a+b*b*b
22、+c*c*c) printf(%6d,i); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - 有关循环的编程例题11 / 输出所有四位的水仙花数void siWeiShuiXianHuaShu() int i,a,b,c,d; for(i=1000;i=9999;i+) a=i/1000; b=i/100%10; c=i/10%10; d=i%10; if(i=a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
23、 printf(%6d,i); int main() printf(三位的水仙花数有: n); sanWeiShuiXianHuaShu(); printf(nn); printf(四位的水仙花数有: n); siWeiShuiXianHuaShu(); printf(nn); /system(pause); return 0; 10. / 一个整数的所有因子之和等于该数,则这个数是完数。/ 输出 1000以内的完数及其因子#include #include void wanShu() int i,k,sum; for(i=1;i=1000;i+) sum=0; for(k=1;k=i-1;k
24、+) if(i%k=0) sum=sum+k; if(sum=i) printf(%5d:its factors are ,i); for(k=1;k=i-1;k+) if(i%k=0) printf(%d,k); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - 有关循环的编程例题12 printf(n); int main() wanShu(); printf(n); system(pause); return 0; 11
25、. / 有 6 个嫌疑人 , 案件分析如下 : /1.A,B至少有一人作案/2.A,E,F中至少有两人作案/3.A,D不可能是同案犯/4.B,C或同时作案 , 或与本案无关/5.C,D中有且仅有一人作案/6. 如果 D没作案 , 则 E也没作案。/ 假设案件分析正确 , 请编程将作案人找出来/ 分析: /1. x1=A|B /2. x2=A&E | A&F | E&F /3. x3=!(A&D) /4. x4=B&C | !B&!C /5. x5=C&!D | !C&D /6. x6=!D!E 等价于 x6=D|!E / 令 X=x1+x2+x3+x4+x5+x6为 6 的结果就是答案#inc
26、lude #include void zhenTanDuanAn() int a,b,c,d,e,f,x1,x2,x3,x4,x5,x6,x; for(a=0;a=1;a+) for(b=0;b=1;b+) for(c=0;c=1;c+) for(d=0;d=1;d+) for(e=0;e=1;e+) for(f=0;f=1;f+) x1=a|b; x2=a&e|a&f|e&f; x3=!(a&d); x4=b&c|!b&!c; x5=c&!d|!c&d; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
27、 - - - - 第 12 页,共 16 页 - - - - - - - - - 有关循环的编程例题13 x6=d|!e; x=x1+x2+x3+x4+x5+x6; if(x=6) printf(A%s罪犯,B%s罪犯,C%s罪犯,D%s罪犯,E%s罪犯,F%s罪犯nn, a=1?是: 不是,b=1? 是: 不是,c=1? 是: 不是, d=1? 是: 不是,e=1? 是: 不是,f=1? 是: 不是); /printf(A=%d,B=%d,C=%d,D=%d,E=%d,F=%dn,a,b,c,d,e,f); int main() zhenTanDuanAn(); /system(pause)
28、; return 0; 12. / 一学校有 4 位学生中的 1 位做了好事不留名,/ 表扬信来了之后,校长问这4 位是谁做了好事。/A 说:不是我; B说:是 C;C说:是 D;D说:他胡说。/ 已知 3 个人说的是真话,一个人说的是假话。/ 请编程找出做好事的人。#include #include void shuiZuoLeHaoShi() int k,f=0;/f是找到的标记, f=0 表示还没找到 for(k=1;k=4;k+)/k=1表示第 1 个人做了好事, k=3 表示第 3 个人做了好事 . / 如果 4 句话中有 3 句话为真,则输出做好事者 if(k!=1)+(k=3)+
29、(k=4)+(k!=4)=3) printf(做好事者为 %c,char(64+k); f=1;/f=1表示找到了 if(f!=1)/如果循环结束后没有找到 printf(找不到! n); int main() shuiZuoLeHaoShi(); printf(n); /system(pause); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - 有关循环的编程例题14 return 0; 13. /4 人谈论 4 湖/A
30、 说: 洞庭湖( d)最大 , 洪泽湖 h 最小, 鄱阳湖 b 第三/B 说: 洪泽湖 h 最大, 洞庭湖 d 最小, 鄱阳湖 b 第二, 太湖 t 第三/C 说: 洪泽湖 h 最小, 洞庭湖 d 第三/D 说: 鄱阳湖最大 , 太湖最小 , 洪泽湖第二 , 洞庭湖第三。/4 个人每个人仅答对了一个。/ 编程给出 4 个湖从大到小的顺序。/ 分析:/A=(d=1)+(h=4)+(b=3) /B=(h=1)+(d=4)+(b=2)+(t=3) /C=(h=4)+(d=3) /D=(b=1)+(t=4)+(h=2)+(d=3) #include #include void panDuanSiDaD
31、anShuiHu() int b,d,h,t,A,B,C,D; for(b=1;b=4;b+) for(d=1;d=4;d+) for(h=1;h=4;h+) for(t=1;t=4;t+) A=(d=1)+(h=4)+(b=3); B=(h=1)+(d=4)+(b=2)+(t=3); C=(h=4)+(d=3); D=(b=1)+(t=4)+(h=2)+(d=3); if(A=1&B=1&C=1&D=1&b!=d&b!=h&b!=t&d!=h&d!=t&h!=t) printf(洪泽湖第 %dn鄱阳湖第 %dn太湖第 %dn洞庭湖第 %dnn,h,b,t,d); int main() pan
32、DuanSiDaDanShuiHu(); / system(pause); return 0; 14. / 猜一个 1-100 之间的数并以最快的速度根据提示猜出所产生的随机数#include #include #include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - 有关循环的编程例题15 void caiShu() char ch; clock_t start,end; /clock_t数据类型用来记录CPU 的
33、运行单元时间( clocks 数)double var; /var存放玩游戏所用的秒数int i,guess; /i存放计算机产生的随机数,guess 存放玩家猜的数srand(time(0); printf(想测测你的智力么?来试一下?(Y/N)n); ch=getchar(); while(ch=y|ch=Y) i=rand()%100+1; printf(n请猜一个 1-100 之间的数并以最快的速度根据提示猜出所产生的随机数:n); start=clock(); /clocks()函数,返回类型 clock_t ,返回的是从程序开始,到你掉用clock() 函数这段时间的clocks
34、scanf(%d,&guess); while(guess!=i) if(guessi) printf(大点! n); else printf(小点! n); scanf(%d,&guess); end=clock(); var=(double)(end-start)/CLOCKS_PER_SEC; /end-start是段时间的 clocks ,除以系统常量CLOCKS_PER_SEC 才能得到秒数printf(11:你花了 %6.3f 秒n,var); if(var15) printf(11 太棒了 ! 你很聪明 ! 11nn); else if(var25) printf(11 还可以啦
35、,继续努力 ! 11nn); else printf(11 你好笨呐,再来 11nn); printf(n 再来一次吗? (y.or.n)n); scanf(%*c%c,&ch); int main() caiShu(); / system(pause); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 16 页 - - - - - - - - - 有关循环的编程例题16 15. / 四则运算游戏#include #include #include
36、#include #define XiaoShu 1e-2 /让 XiaoShu 表示一个很小的数,比如1 的-2 次方。void siZeYunSuanYouXi() int x,y,f,s,n=0,w=0; /n是总游戏次数, w是赢的次数char q=y; double d; srand(time(0); while(q=y|q=Y) x=rand()%1000; /随机产生第一个操作数y=rand()%999+1;/随机产生第二个操作数f=rand()%3+1; /随机产生运算符号switch(f) case 1:d=x+y;printf(%d+%d=,x,y);break; case
37、 2:d=x-y;printf(%d-%d=,x,y);break; case 3:d=x*y;printf(%d*%d=,x,y);break; case 4:d=(double)x/y;printf(%d/%d=,x,y);break; scanf(%d,&s); n+; if(fabs(d-s) XiaoShu) printf(正确! 1n);w+; else printf(错! 正确答案是: %-12.2lfn,d); printf(继续吗?( y/n )n); scanf( %c,&q); printf(n总结: 共计算 %d次,赢 %d次,获胜率为 %.2lf%nn,n,w,(double)w/n*100); int main() siZeYunSuanYouXi(); system(pause); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 16 页 - - - - - - - - -
限制150内