C语言循环例题_第1页
C语言循环例题_第2页
C语言循环例题_第3页
C语言循环例题_第4页
已阅读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;elsefor(i=2;i<=m;i+)if(x%i=0)flag=0;break;if(i>m) flag=1; return flag;int shuChuSuSh

2、u(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(

3、a<2|b<2)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&

4、lt;stdio.h>#include<stdlib.h>#include<math.h>int isPrime(int n)/判断某数是否是素数int i,f,m=(int)sqrt(n);if(n=1) f=0;elsefor(i=2;i<=m;i+)if(n%i=0)break;if(i>m)f=1;elsef=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

5、return 0;2精选文库void printSupperPrime(int 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

6、<2)printf("input a,b:");scanf("%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=

7、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精选文库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./ 有一堆桃子,第一天猴子吃掉桃子的一半又

8、多吃1 个,第二天猴子再吃掉桃子的一半又多吃一个/ 第 10 天只剩下 1 个桃子,问最初有多少个桃子#include<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./ 由用户输入一个年份,再输入该年的元旦是

9、星期几,再输入一个月份,则打印输出该月的日历。/ 例如:输入年份是 2000 年,输入元旦为星期 6,输入月份为 3,则输出:/3月日一二三四五六/1234/567891011/12131415161718/19202122232425/ 26 27 28 29 30 31 #include<stdio.h> #include<stdlib.h>4精选文库int LeepYear(int y)/判断某年是否是闰年if(y%4=0&&y%100!=0|y%400=0)return 1;elsereturn 0;int HowManydays(int y,i

10、nt 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;break;case 2: if(LeepYear(y)=1) thisMonthDays=29;elsethisMonthDays=28;return thisMonthDays;/whichWeek 函数判断该月的1 号是星期几intwhichWeek(int y,int

11、 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;break;case 2: days=31;break;case 3: days=31+febDay;break;5精选文库case 4: days=2*31+febDay;break;case 5: days=2*31+30+febDay;break;case

12、 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 thisWeek;/shuChuRiLi函数的功能是

13、输出日历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

14、(i=0;i<ThisWeek;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(

15、)int year=-20,month=13,week=9;while(year<0)6精选文库printf("请输入年份: ");scanf("%d",&year);while(month>12|month<1)printf("请输入月份: ");scanf("%d",&month);while(week>7|week<1)printf("该年的元旦是星期几? ");scanf("%d",&week);shuChuRiL

16、i(year,month,week);system("pause");return 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&

17、quot;);for(i=1;i<=9;i+)printf("%2d|",i);for(j=1;j<=9;j+)printf("%4d",i*j);printf("n");printf("nn");void chengFaKouJueBiao2()int i,j;printf(" *");7精选文库for(i=1;i<=9;i+)printf("%4d",i);printf("n");for(i=1;i<=9;i+)printf(&

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

19、ngFaKouJueBiao1();chengFaKouJueBiao2();chengFaKouJueBiao3();/ 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+)8精选文库for(k=1;k<=n-h+1;k+)printf(" ");for(s=1;s<=2*h-1

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

21、de<stdio.h>#include<stdlib.h>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("*")

22、;printf("n");for(h=1;h<=n-2;h+)9精选文库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 mai

23、n()int n;printf("输入菱形的边长: ");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 sanWeiShuiXia

24、nHuaShu()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);10精选文库/ 输出所有四位的水仙花数 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(&qu

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

26、stdlib.h>void 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);11精选文库printf("n");int main()wanShu();printf("n");system("

27、pause");return 0;11./ 有 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.

28、x5=C&&!D | !C&&D/6.x6=!D! E等价于 x6=D|!E/ 令 X=x1+x2+x3+x4+x5+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<

29、=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;12精选文库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?" 是":&

30、quot; 不是 ",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");return 0;12./ 一学校有 4

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

32、+(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");13精选文库return 0;13./4 人谈论 4 湖/A 说: 洞庭湖( d)最大 , 洪泽湖 h 最小 , 鄱阳湖 b 第三/B 说: 洪泽湖 h 最大 , 洞庭湖 d 最小 , 鄱阳湖 b 第二

33、, 太湖 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<stdio.h>#include<stdlib.h>void panDuanSiDaDanShuiHu()int b,d,h,t,A,B,C,D;for(b=1;b<

34、;=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(" 洪泽湖第

35、%dn 鄱阳湖第 %dn 太湖第 %dn 洞庭湖第 %dnn",h,b,t,d);int main()panDuanSiDaDanShuiHu();/ system("pause"); return 0;14./ 猜一个 1-100 之间的数并以最快的速度根据提示猜出所产生的随机数#include<time.h>#include<stdio.h>#include<stdlib.h>14精选文库void caiShu()char ch;clock_tstart,end;/clock_t数据类型用来记录CPU的运行单元时间( clo

36、cks 数)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 ,返回的是从程序

37、开始,到你掉用clock()函数这段时间的clocksscanf("%d",&guess);while(guess!=i)if(guess<i) 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&quo

温馨提示

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

评论

0/150

提交评论