C语言循环例题.docx
《C语言循环例题.docx》由会员分享,可在线阅读,更多相关《C语言循环例题.docx(20页珍藏版)》请在冰豆网上搜索。
C语言循环例题
1、
//输出a与b之间的所有素数,10个素数为一行输出#include
#include
#include
intpanDuanSuShu(intx)//判断x就是否就是素数
{
inti,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;}
}
returnflag;
}
intshuChuSuShu(inta,intb)
{
inti,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");
returnk;
}
intmain()
{
inta,b,t;
printf("输入a与b,以便求a与b之间的所有素数\n");scanf("%d%d",&a,&b);
while(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("\n\n");
return0;
}
2、
//用户输入2个数,输出这2个数之间所有的超素数
//超素数(质数)的概念:
7193就是素数,719就是素数,71就是素数,7就是素数,则7193就是素数#include
#include
#include
intisPrime(intn)//判断某数就是否就是素数
{
inti,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;
}
returnf;
}
intsupperPrime(intn)//判断某数就是否就是超素数{
intt=n;
while(t>0)
{
if(isPrime(t)==1)t=t/10;
elsebreak;
}
if(t==0)return1;
elsereturn0;
输出a到b之间所有的超素数
}
voidprintSupperPrime(inta,intb)//
{
inti,m=0;for(i=a;i<=b;i++)
{if(supperPrime(i)){printf("%8d",i);
m++;if(m%5==0)printf("\n");
}
}printf("\n");
}
intmain()
{
inta,b,t;printf("inputa,b:
");scanf("%d%d",&a,&b);
while(a<2||b<2)
{printf("inputa,b:
");scanf("%d%d",&a,&b);
}
if(a>b){t=a;a=b;b=t;}printSupperPrime(a,b);
printf("\n");
//system("pause");
return0;
}
3、
//满足a*a+b*b==c*c的a,b,c三个数,称为勾股数
//编程输出100以内的所有勾股数#include#includeintgouGuShu()
{
intx=0;
for(inta=1;a<=100;a++)for(intb=a;b<=100;b++)
for(intc=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++;
returnx;
}
intmain()
{
printf("\n\n100以内的勾股数共有:
%d个。
\n",gouGuShu());
//system("pause");
return0;
}
4、
//有一堆桃子,第一天猴子吃掉桃子的一半又多吃1个,第二天猴子再吃掉桃子的一半又多吃一个//第10天只剩下1个桃子,问最初有多少个桃子
#include
#includeinthouZiChiTaoZi()
{
intday=10,x1,x2=1;
while(day>1)
{x1=(x2+1)*2;x2=x1;day--;
}
returnx1;
}
intmain()
{
printf("最初桃子有%d个\n",houZiChiTaoZi());
//system("pause");
return0;
}
5、//由用户输入一个年份,再输入该年的元旦就是星期几,再输入一个月份,则打印输出该月的日历
//例如:
输入年份就是2000年,输入元旦为星期6,输入月份为3,则输出:
intLeepYear(inty)//判断某年就是否就是闰年
{
if(y%4==0&&y%100!
=0||y%400==0)return1;
else
return0;
}intHowManydays(inty,intm)//判断该月有多少天
{
intthisMonthDays;switch(m)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
thisMonthDays=31;break;
case4:
case6:
case9:
case11:
thisMonthDays=30;break;
case2:
if(LeepYear(y)==1)thisMonthDays=29;elsethisMonthDays=28;
}
returnthisMonthDays;
}
//whichWeek函数判断该月的1号就是星期几
intwhichWeek(inty,intm,intw)//w表示该年的元旦就是星期几{
intfebDay;//存放2月份有多少天
intdays;//存放该月的1号距离元月1号有多少天
intthisWeek;//存放该月的1号就是星期几if(LeepYear(y))
{febDay=29;}else
{febDay=28;}switch(m)
{
case1:
days=0;break;
case2:
days=31;break;
case3:
days=31+febDay;break;
case4:
days=2*31+febDay;break;
case5:
days=2*31+30+febDay;break;
case6:
days=3*31+30+febDay;break;
case7:
days=3*31+2*30+febDay;break;
case8:
days=4*31+2*30+febDay;break;
case9:
days=5*31+2*30+febDay;break;
case10:
days=5*31+3*30+febDay;break;
case11:
days=6*31+3*30+febDay;break;
case12:
days=6*31+4*30+febDay;break;
}
thisWeek=(days+w)%7;
returnthisWeek;
}
//shuChuRiLi函数的功能就是输出日历
voidshuChuRiLi(intyear,intmonth,intweek)//week表示该年的元旦就是星期几
{
intThisMonthDay,ThisWeek,d,i;
ThisMonthDay=HowManydays(year,month);//计算这个月有多少天ThisWeek=whichWeek(year,month,week);//计算这个月的1号就是星期几printf("\n\n");
printf("%4d月日一二三四五六\n",month);
printf("%6c",'');
d=1;
for(i=0;ifor(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("\n\n");
}
intmain()
{
intyear=-20,month=13,week=9;
while(year<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");
return0;
}
6、
//输出三种形式的九九乘法口诀表#include#includevoidchengFaKouJueBiao1()
{
inti,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("\n\n");
}
voidchengFaKouJueBiao2()
{
inti,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("\n\n");
}
voidchengFaKouJueBiao3()
{
inti,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("\n\n");
}
intmain()
{
chengFaKouJueBiao1();
chengFaKouJueBiao2();
chengFaKouJueBiao3();
//system("pause");
return0;
}
7、
//用户输入三角形的高度,输出由*构成的三角形#include#includevoidshuChuSanJiaoXing(intn)
{
inth,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("\n\n");
}
intmain()
{
intn;
printf("输入三角形的行数:
");
scanf("%d",&n);
while(n<2)
{
printf("输入三角形的行数:
");scanf("%d",&n);
}
shuChuSanJiaoXing(n);
//system("pause");
return0;
}
8、
//输出边长为n的空心菱形#include#includevoidshuChuKongXinlingXing(intn){
inth,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++)
{
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("\n\n");
}
intmain()
{
intn;
printf("输入菱形的边长:
");scanf("%d",&n);
while(n<2)
{
printf("菱形边长必须大于2,请重新输入菱形的边长:
");scanf("%d",&n);
}
shuChuKongXinlingXing(n);
//system("pause");
return0;
}
9、
#include#include//输出所有三位的水仙花数voidsanWeiShuiXianHuaShu(){
inti,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);
}
}
//输出所有四位的水仙花数
voidsiWeiShuiXianHuaShu()
{
inti,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);
}
}
intmain()
{
printf("三位的水仙花数有:
\n");sanWeiShuiXianHuaShu();printf("\n\n");
printf("四位的水仙花数有:
\n");siWeiShuiXianHuaShu();
printf("\n\n");
//system("pause");
return0;
}
10、
//一个整数的所有因子之与等于该数,则这个数就是完数。
//输出1000以内的完数及其因子
#include
#include
voidwanShu()
{
inti,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:
itsfactorsare",i);
for(k=1;k<=i-1;k++)
{
if(i%k==0)printf("%d,",k);
}
printf("\n");
}
}
}
intmain()
{
wanShu();
printf("\n");
system("pause");
return0;
}
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、x5=C&&!
D||!
C&&D
//6、x6=!
D→!
E等价于x6=D||!
E//令X=x1+x2+x3+x4+x5+x6为6的结果就就是答案#include
#includevoidzhenTanDuanAn(){
inta,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;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罪犯\n\n",a==1?
"就是":
"不就是",b==1?
"就是":
"不就是",c==1?
"就是":
"不就是",d==1?
"就是":
"不就是",e==1?
"就是":
"不就是",f==1?
"就是":
"不就是");
//printf("A=%d,B=%d,C=%d,D=%d,E=%d,F=%d\n",a,b,c,d,e,f);
}
}
}
intmain()
{
zhenTanDuanAn();
//system("pause");
return0;
}
12、
//一学校有4位学生中的1位做了好事不留名,//表扬信来了之后,校长问这4位就是谁做了好事。
//A说:
不就是我;B说:
就是C;C说:
就是D;D说:
她胡说。
//已知3个人说的就是真话,一个人说的就是假话。
//请编程找出做好事的人。
#include#includevoidshuiZuoLeHaoShi(){
intk,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");
}
intmain()
{
shuiZuoLeHaoShi();
printf("\n");
//system("pause");
return0;
}
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=(b==1)+(t==4)+(h==2)+(d==3)#include#includevoidpanDuanSiDaDanShuiHu(){
intb,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("洪泽湖第%d\n鄱阳湖第%d\n太湖第%d\n洞庭湖第%d\n\n",h,b,t,d);}
}
intmain()
{
panDuanSiDaDanShuiHu();
//system("pause");
return0;
}
14、
//猜一个1-100之间的数并以最快的速度根据提示猜出所产生的随机数
#include
#incl