C语言循环例题.docx
《C语言循环例题.docx》由会员分享,可在线阅读,更多相关《C语言循环例题.docx(29页珍藏版)》请在冰豆网上搜索。
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;
elsef=0;
}
returnf;
}
intsupperPrime(intn)//判断某数就是否就是超素数
{
intt=n;
while(t>0)
{
if(isPrime(t)==1)
t=t/10;
else
break;
}
if(t==0)return1;
elsereturn0;
}
voidprintSupperPrime(inta,intb)//输出a到b之间所有的超素数
{
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
#include
intgouGuShu()
{
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
#include
inthouZiChiTaoZi()
{
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,则输出:
//3月日一二三四五六
//1234
//567891011
//12131415161718
//19202122232425
//262728293031
#include
#include
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;iprintf("%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("\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
#include
voidchengFaKouJueBiao1()
{
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
#include
voidshuChuSanJiaoXing(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
#include
voidshuChuKongXinlingXing(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
#include
voidzhenTanDuanAn()
{
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
#include
voidshuiZuoLeHaoShi()
{
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=(