预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

c语言程序设计课后习题答案例1、求100到999之间的所有水仙花数。#includevoidmain(void){intn,b,s,g;for(n=100;nb=n/100;s=(n-b*100)/10;g=(n%100)%10;if(b*b*b+s*s*s+g*g*g==n)printf("%d\n",n);}}例2、求两个整数的最大公约数和最小公倍数gcd(x,y)=gcd(x,x%y)lcm(x,y)=(x×y)/gcd(x,y)#includevoidmain(void){intx,y,r,n,gcd,lcm;scanf("%d%d",&x,&y);n=x*y;r=x%y;gcd=y;while(r!=0){x=y;y=r;r=x%y;gcd=y;}lcm=n/gcd;printf("gcd=%dlcm=%d\n",gcd,lcm);}例3、将一张面值是100元的钱等值转换为5元、1元和0.5元的零钞,要求每种零钞至少一张,求所有的兑换方式。#includevoidmain(void){inti,j,k;for(i=1;ifor(j=1;jfor(k=1;kif(i*5+j+0.5*k==100)printf("%d%d%d\n",i,j,k);}}}}例4、求爱因斯坦数学问题:有一条长台阶,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,则最后正好一阶不剩。求台阶长度。#includevoidmain(void){intn;n=7;while(1){if((n%2==1)&&(n%3==2)&&(n%5==4)&&(n%6==5))break;n=n+7;}printf("%d\n",n);}例5、验证歌德巴赫猜想(任意一个大于6的偶数都可以分解为两个素数之和),验证范围是6~2000的偶数。#include#includevoidmain(void){intn,i,k1,k2;intisPrimeFlag1,isPrimeFlag2;for(n=6;nfor(k1=3;k1isPrimeFlag1=1;//假设是素数for(i=3;iif(k1%i==0){isPrimeFlag1=0;break;}}if(isPrimeFlag1==0)continue;k2=n-k1;isPrimeFlag2=1;//假设k2是素数for(i=3;iif(k2%i==0){isPrimeFlag2=0;break;}}if(isPrimeFlag1&&isPrimeFlag2){printf("%d=%d+%d\n",n,k1,k2);break;}}}}例6、已知一正整数递增等差数列,前5项的和是25,前5项的积是945,根据上述条件,输出该数列的前10项。#includevoidmain(void){inta,d,i,s,r,x;for(a=1;afor(d=1;ds=0;r=1;for(i=0;ix=a+d*i;s=s+x;r=r*x;}if(s==25&&r==945)gotoloop_exit;}}loop_exit:for(i=0;ix=a+d*i;printf("%d\n",x);}}例7、A、B、C、D和E合伙捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方休息。日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条扔掉,拿走自己的一份。C、D、E依次醒来,也按同样的方法分鱼。求他们合伙至少捕了多少鱼。#includevoidmain(void){intzs,n,i,flag;zs=6;while(1){flag=1;n=zs;for(i=0;iif(n%5!=1){flag=0;break;}n=n-(n-1)/5;}if(flag==1)break;n=++zs;}printf("%d\n",zs);}例8、一辆卡车违反交通规则,撞人逃跑。现场有三个目击证人,但没有记住车号,只记下一些车号的特征。甲说:牌照的前两位数字相同;乙说:牌照的后两位数字是相同的;丙说:四位的车号刚好是一个整数的平方。根据上述线索求车号。#include#includevoidmain(void){intn,x,k1,k2,k3,k4;for(n=1000;nx=(int)sqrt(n);if(x*x!=n)continue;k1=n/1000;k2=(n-k1*1000)/100;k3=(n-k1*1000-k2*100)/10;k4=(n-k1*1000-k2*100-k3*10);if(k1==k2&&k3==k4)printf("%d\n",n);}}例9、某数组有20个元素,编程序将该