收藏 分享(赏)

C语言循环例题.doc

上传人:HR专家 文档编号:11560093 上传时间:2020-06-24 格式:DOC 页数:16 大小:49KB
下载 相关 举报
C语言循环例题.doc_第1页
第1页 / 共16页
C语言循环例题.doc_第2页
第2页 / 共16页
C语言循环例题.doc_第3页
第3页 / 共16页
C语言循环例题.doc_第4页
第4页 / 共16页
C语言循环例题.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、1./输出a和b之间的所有素数, 10个素数为一行输出#include#include#includeint 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;i+)if(panDuanSuShu(i)=1)printf(%6d,i

2、);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); while(a2|bb) t=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#includein

3、t 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 f;int supperPrime(int n)/判断某数是否是超素数int t=n;while(t0)if(isPrime(t)=1)t=t/10;elsebreak;if(t=0) return 1;else return 0;void printSupperPrime(int a,int b)/输出a到b之间所有的超素数int i,m=0;for(i=a;i=b;i+)if(supperPrim

4、e(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以内的所有勾股数#include#includeint gouGuShu()int x=0;for(int a=1;a=100;a+)

5、for(int b=a;b=100;b+)for(int c=b;c=100;c+)if(a*a+b*b=c*c)if(x%4=0)printf(n);printf(%4d%4d%4d ,a,b,c);x+;return x;int main()printf(nn 100以内的勾股数共有:%d个。n,gouGuShu();/ system(pause);return 0;4./有一堆桃子,第一天猴子吃掉桃子的一半又多吃1个,第二天猴子再吃掉桃子的一半又多吃一个/第10天只剩下1个桃子,问最初有多少个桃子#include#includeint houZiChiTaoZi()int day=10,

6、x1,x2=1; while(day1) x1=(x2+1)*2; x2=x1; day-; return x1;int main() printf(最初桃子有%d个n,houZiChiTaoZi(); /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 2

7、7 28 29 30 31#include#includeint LeepYear(int y)/判断某年是否是闰年if(y%4=0&y%100!=0|y%400=0)return 1;elsereturn 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 4: case 6: case 9: case 11:thisMonthDays=30;b

8、reak; 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(LeepYear(y) febDay=29;else febDay=28; switch(m)case 1: days=0

9、;break;case 2: days=31;break;case 3: days=31+febDay;break;case 4: days=2*31+febDay;break;case 5: days=2*31+30+febDay;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;brea

10、k;case 11:days=6*31+3*30+febDay;break;case 12:days=6*31+4*30+febDay;break;thisWeek=(days+w)%7;return thisWeek;/shuChuRiLi函数的功能是输出日历void shuChuRiLi(int year,int month,int week) /week表示该年的元旦是星期几int ThisMonthDay,ThisWeek,d,i; ThisMonthDay=HowManydays(year,month);/计算这个月有多少天ThisWeek=whichWeek(year,month,

11、week);/计算这个月的1号是星期几printf(nn);printf(%4d月 日 一 二 三 四 五 六n,month);printf(%6c, );d=1;for(i=0;iThisWeek;i+) /输出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,we

12、ek=9;while(year12|month7|week1)printf(该年的元旦是星期几?);scanf(%d,&week);shuChuRiLi(year,month,week);system(pause);return 0;6./输出三种形式的九九乘法口诀表#include#includevoid 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|,

13、i);for(j=1;j=9;j+)printf(%4d,i*j);printf(n);printf(nn);void chengFaKouJueBiao2()int i,j;printf( *);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 chengFaKouJueBiao3()int i,j; printf(n); for(i=1;i=9;i+) for(j=1;j=i;j+)pr

14、intf(%d*%d=%-4d,i,j,i*j);printf(n);printf(nn);int main()chengFaKouJueBiao1();chengFaKouJueBiao2();chengFaKouJueBiao3();/ system(pause);return 0;7./用户输入三角形的高度,输出由*构成的三角形。 #include#includevoid shuChuSanJiaoXing(int n)int h,k,s;for(h=1;h=n;h+)for(k=1;k=n-h+1;k+)printf( );for(s=1;s=2*h-1;s+)printf(*);pr

15、intf(n);printf(nn); int main()int n;printf(输入三角形的行数:);scanf(%d,&n);while(n2)printf(输入三角形的行数:);scanf(%d,&n);shuChuSanJiaoXing(n);/system(pause);return 0; 8./输出边长为n的空心菱形 #include#includevoid 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;

16、k+) printf( ); printf(*); for(k=1;k=2*h-3;k+) printf( ); printf(*); printf(n); for(h=1;h=n-2;h+) 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() int n; printf(输入菱形的边长:); scanf(%d,&n); while(

17、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+c*c*c)printf(%6d,i);/输出所有四位的水仙花数void siWeiShuiXianHua

18、Shu()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)printf(%6d,i);int main()printf(三位的水仙花数有:n);sanWeiShuiXianHuaShu();printf(nn);printf(四位的水仙花数有:n);siWeiShuiXianHuaShu();printf(nn); /system(pause);return 0; 10./一个整数的所有因子之和等于该数,则这个数是完数。/输

19、出1000以内的完数及其因子#include#includevoid wanShu()int i,k,sum;for(i=1;i=1000;i+) sum=0;for(k=1;k=i-1;k+) 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); printf(n);int main()wanShu();printf(n); system(pause);return 0; 11./有6个嫌疑人,案件分析如下:/1.A,B至少有一人作案/2.A

20、,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的结果就是答案#include#includevoid zhenTanDuanAn()int a,b,c,d,e,f,x1,x2,x3,x4,x5,x6,x;

21、 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; 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?是:不是);

22、 /printf(A=%d,B=%d,C=%d,D=%d,E=%d,F=%dn,a,b,c,d,e,f); int main()zhenTanDuanAn(); /system(pause); return 0;12./一学校有4位学生中的1位做了好事不留名,/表扬信来了之后,校长问这4位是谁做了好事。/A说:不是我;B说:是C;C说:是D;D说:他胡说。/已知3个人说的是真话,一个人说的是假话。/请编程找出做好事的人。#include#includevoid shuiZuoLeHaoShi()int k,f=0;/f是找到的标记,f=0表示还没找到 for(k=1;k=4;k+)/k=1表示

23、第1个人做了好事,k=3 表示第3个人做了好事. /如果4句话中有3句话为真,则输出做好事者 if(k!=1)+(k=3)+(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); return 0;13./4人谈论4湖/A说:洞庭湖(d)最大,洪泽湖h最小,鄱阳湖b第三/B说:洪泽湖h最大,洞庭湖d最小,鄱阳湖b第二,太湖t第三/C说:洪泽湖h最小,洞庭湖

24、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#includevoid panDuanSiDaDanShuiHu()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)

25、+(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()panDuanSiDaDanShuiHu(); / system(pause); return 0;14./猜一个1-100之间的数并以最快的速度根据提示猜出所产生的随机数#include#include#includevoid caiShu()char ch;clock_

26、t start,end;/clock_t数据类型用来记录CPU的运行单元时间(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,返回的是从程序开始,到你掉用c

27、lock()函数这段时间的clocks scanf(%d,&guess);while(guess!=i)if(guessi)printf(大点!n); elseprintf(小点!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 还

28、可以啦,继续努力! 11nn); else printf(11 你好笨呐,再来 11nn);printf(n 再来一次吗?(y.or.n)n);scanf(%*c%c,&ch); int main()caiShu();/system(pause);return 0;15./四则运算游戏 #include#include#include#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

29、 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 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;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报