C语言循环例题_第1页
C语言循环例题_第2页
C语言循环例题_第3页
C语言循环例题_第4页
C语言循环例题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、有关循环的编程例题1./输出a和b之间的所有素数, 10个素数为一行输出#include<stdio.h>#include<stdlib.h>#include<math.h>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;i<=m;i+)if(x%i=0) flag=0;break;if(i>m) flag=1; return flag;int shuChuS

2、uShu(int a,int b)int i,k=0;/i是循环变量,k表示已经输出了k个素数for(i=a;i<=b;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); while(a<2|b<2

3、) printf("重新输入n和m:");scanf("%d%d",&a,&b); if(a>b) 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<stdio.h>#include<stdlib.h>#

4、include<math.h>int isPrime(int n)/判断某数是否是素数int i,f,m=(int)sqrt(n);if(n=1) f=0;else for(i=2;i<=m;i+)if(n%i=0)break;if(i>m) f=1;else f=0;return f;int supperPrime(int n)/判断某数是否是超素数int t=n;while(t>0)if(isPrime(t)=1)t=t/10;elsebreak;if(t=0) return 1;else return 0;void printSupperPrime(int

5、a,int b)/输出a到b之间所有的超素数int 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(a<2 | b<2)printf("input a,b:");scan

6、f("%d%d",&a,&b);if(a>b) 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<stdio.h>#include<stdlib.h>int gouGuShu()int x=0;for(int a=1;a<=100;a+)for(int b=a;b<=100;

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

8、stdio.h>#include<stdlib.h>int houZiChiTaoZi()int day=10,x1,x2=1; while(day>1) x1=(x2+1)*2; x2=x1; day-; return x1;int main() printf("最初桃子有%d个n",houZiChiTaoZi(); /system("pause"); return 0;5./由用户输入一个年份,再输入该年的元旦是星期几,再输入一个月份,则打印输出该月的日历。/例如:输入年份是2000年,输入元旦为星期6,输入月份为3,则输出:

9、/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<stdio.h>#include<stdlib.h>int 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

10、(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;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

11、febDay;/存放2月份有多少天int days;/存放该月的1号距离元月1号有多少天int thisWeek;/存放该月的1号是星期几if(LeepYear(y) febDay=29;else febDay=28; switch(m)case 1: days=0;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: da

12、ys=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 thisWeek;/shuChuRiLi函数的功能是输出日历void shuChuRiLi(int year,int month,i

13、nt 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;i<ThisWeek;i+) /输出1号前面的空格pri

14、ntf("%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(year&l

15、t;0)printf("请输入年份:");scanf("%d",&year);while(month>12|month<1)printf("请输入月份:");scanf("%d",&month);while(week>7|week<1)printf("该年的元旦是星期几?");scanf("%d",&week);shuChuRiLi(year,month,week);system("pause");retur

16、n 0;6./输出三种形式的九九乘法口诀表#include<stdio.h>#include<stdlib.h>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|"

17、;,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("

18、%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+)printf("%d*%d=%-4d",i,j,i*j);printf("n");printf("nn");int main()chengFaKouJueBiao1();chengFaKouJueBiao2();chengFaK

19、ouJueBiao3();/ system("pause");return 0;7./用户输入三角形的高度,输出由*构成的三角形。 #include<stdio.h>#include<stdlib.h>void 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("*");printf("n");printf(

20、"nn"); int main()int n;printf("输入三角形的行数:");scanf("%d",&n);while(n<2)printf("输入三角形的行数:");scanf("%d",&n);shuChuSanJiaoXing(n);/system("pause");return 0; 8./输出边长为n的空心菱形 #include<stdio.h>#include<stdlib.h>void shuChuKongX

21、inlingXing(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"); for(h=1;h<=n-2;h+)

22、 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("输入菱形的边长:"

23、;); scanf("%d",&n); while(n<2) printf("菱形边长必须大于2,请重新输入菱形的边长:"); scanf("%d",&n); shuChuKongXinlingXing(n); / system("pause"); return 0; 9.#include<stdio.h>#include<stdlib.h>/输出所有三位的水仙花数void sanWeiShuiXianHuaShu()int i,a,b,c;for(i=100;i<

24、;=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 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)printf("%6d",i);int main()printf("三

25、位的水仙花数有:n");sanWeiShuiXianHuaShu();printf("nn");printf("四位的水仙花数有:n");siWeiShuiXianHuaShu();printf("nn"); /system("pause");return 0; 10./一个整数的所有因子之和等于该数,则这个数是完数。/输出1000以内的完数及其因子#include<stdio.h>#include<stdlib.h>void wanShu()int i,k,sum;for(i=1

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

27、至少有一人作案/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+

28、x6为6的结果就是答案#include<stdio.h>#include<stdlib.h>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&&am

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

30、=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"); return 0;12./一学校有4位学生中的1位做了好事不留名,/表扬信来了之后,校长问这4位是谁做了好事。/A说:不是我;B说:是C;C说:是D;D说:他胡说。/已知3个人说的是真话,一个人说的是假话。/请编程找出做好事的

31、人。#include<stdio.h>#include<stdlib.h>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)+(k=4)+(k!=4)=3) printf("做好事者为%c",char(64+k); f=1;/f=1表示找到了 if(f!=1)/如果循环结束后没有找到 printf("找不到!n"

32、;);int main() shuiZuoLeHaoShi(); printf("n"); /system("pause"); return 0;13./4人谈论4湖/A说:洞庭湖(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=

33、(b=1)+(t=4)+(h=2)+(d=3)#include<stdio.h>#include<stdlib.h>void 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)+(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&a

34、mp;&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<time.h>#inc

35、lude<stdio.h>#include<stdlib.h>void caiShu()char ch;clock_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

36、+1;printf("n请猜一个1-100之间的数并以最快的速度根据提示猜出所产生的随机数:n");start=clock(); /clocks()函数,返回类型clock_t,返回的是从程序开始,到你掉用clock()函数这段时间的clocks scanf("%d",&guess);while(guess!=i)if(guess<i)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(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论