新概念C语言能力教程练习试题05答案.pdf
练习55.1 计算循环体的执行次数并上机验证。1.int i=0;while(1)(+i;printf(%dn,i);3.short i=1;while(i*i=0)(+i;printf(“dn,i);2.short i=1;while(i 0)(+i;printf(n%dnnz i);)4.char c=a1;while(c=0)(-c;printf(n%cnn,c)答:1.表达式1恒真,因此循环体会执行无数次,具体分析为:循环体循环控制-+i;printf(n%dnnz i);1变量i的值由1变为2输出2/1变量i的值由2变为3输出3/1.1.2.在数学上,变量i的初值为1,每次自增1后会一直大于0,也就是说表达式i 0恒真,但是,计算机中整型构成一个环,short型变量的取值范围为-3276832767,当变量i的值自增到32767后再加1就变成了-32768,表达式i0为假,循环退出,因此循环体执行了 32767次。循环体循环控制+i;printf(%dnz i);循环变量ii 011(真)变量i的值由1变为2输出2/21(真)变量i的值由2变为3输出3/.1(真).327671(真)变 量i的 值 由32767变为-32768输出-32768/-327680(假)循环退出不再执行循环退出不再执行3.表达式i*i=0恒真,因此循环体会执行无数次。循环体循环控制+i;printf(%dnn,i);循环变量ii*i=011(真)变量i的值由1变为2输出2/21 (真)变量i的值由2变为3输出3/.1 (真).3 2 7 6 71 (真)变 量i的 值 由3 2 7 6 7变为-3 2 7 6 8输出-3 2 7 6 8 /-3 2 7 6 81 (真)变 量i的 值 由-3 2 7 6 8变为-3 2 7 6 7输出-3 2 7 6 7/.1 (真).4 .字符型变量c的值是字符,a,查表可知为9 7号字符,在比较操作中字符型表现为整型,因此,因此从9 7至0,循环体共执行了 9 8次。查表可知具体的执行过程如下。循环体循环控制-C;pri n tf (%c nnz c);循环变量Cc =0&(9 7)1 (真)变量c的值由9 7变为9 6输出,/、,(9 6)1 (真)变量c的值由9 6变为9 5输出_/.1 (真).,0!(0)1 (真)变量c的值由0变为-1输 出/(0号字符没有形状)(-1)0 (假)循环退出不再执行循环退出不再执行5.2 画出例5-4 的程序流程图。(开 始)c结 束)5.3 对折一张厚1毫米的纸,每折一次,纸的厚度就翻一倍,理论上折多少次后厚度可以达到珠穆朗玛峰的高度(按 8848米计算)。(实际上一张纸最多只能对折七次左右)答:1234567891011分析:I tinclude uoid main()in t i =1,sum=0;w h ile(i 8848000)printFC%d:%dn,sum,i);循环体循环控制i+=i;+sum;循环变量ii884800011(真)变量i的值由1变为2变量sum的值由0变为121(真)变量i的值由2变为4变量sum的值由1变为241(真)变量i的值由4变为8变量sum的值由2变为3.1(真).?0(假)循环退出不再执行循环退出不再执行5.4 编程输出整数n的阶乘。(n!=n *(n-l)*2 *1)答:与例5-4 类似的:1 0include 23456789101112uoid n a in()in t i =2,Fac=1,n;scanFCd,&n);v ih ile(i=n)printF(%d?=%dn,n,Fac);55?=120循环结构执行过程分析如下:循环控制循环体fac*=i;+i;变量i变量ni=n151(真)变量f a c的值由1变为1变量i的值由1变为2251(真)变量f a c的值由1变为2变量i的值由2变为3351(真)变量f a c的值由2变为6变量i的值由3变为4451(真)变量f a c的值由6变为24变量i的值由4变为5551(真)变量f a c的值由2 4变为120变量i的值由5变为660(假)循环退出不再执行循环退出不再执行0 的阶乘等于1,此程序能正确输出吗?fo r循环结构的程序。1 ttinclude 23456789uoid m a in()in t i,Fac=1,n;s c a n R W,&n);F o r(i=2;i=n;+i)fac*=i;p rin tfC d f d X n,n,Fac);用户输入5 时循环结构执行过程分析如下:循环控制循环体fac*=i;+i;变量i变量ni=n251(真)变量f a c的值由1变为2变量i的值由2变为3351(真)变量f a c的值由2变为6变量i的值由3变为4451(真)变量f a c的值由6变为24变量i的值由4变为5551(真)变量f a c的值由2 4变为120变量i的值由5变为6650(假)循环退出不再执行循环退出不再执行还可以用:include 234567891011121314151617uoid m a in()1)Fac*=n;-n;/*相应的f 结构为fo r(;n1;-n)表达式1为空fac*=n;*/p rin tf(,%dn,Fac);与前面两个程序相比,少用了一个变量。用户输入5 时循环结构具体执行过程如下:循环控制循环体fac*=n;n;循环变量nnl51(真)变量f a c的值由1变为5变量n的值由5变为441(真)变量f a c的值由5变为20变量n的值由4变为331(真)变量f a c的值由2 0变为60变量n的值由3变为221(真)变量f a c的值由6 0变为120变量n的值由2变为110(假)循环退出不再执行循环退出不再执行5.5 编程输出一个正整数各位上数字中零的个数。1I tinclude 2uoid main()3 0)70300301(真)m由?变为0真sum由0变为1n 由 30030 变为 300330031(真)m由0变为3假不执行选择语句n由3003变为3003001(真)m由3变为0真sum由1变为2n由3 0 0变为30301(真)m由0变为0真sum由2变为3n由3 0变为331(真)m由0变为3假不执行选择语句n由3变为000(假)循环退出不再执行循环退出不再执行循环退出不再执行表中?的意思表示:变量m之前没有赋值,它的值不确定。5.6 编程输出正整数各位上数字中的最大数。23ttinclude uoid nain()56in t n9 mv sun=s c a n ffW,&n);while(n 0)890n=n%10;iF(m sum)sum=m;n/=10;23p rin te r各位上数字中的最大数为%d n sun);当用户输入6 9 5 6 3 时循环结构具体的执行过程分析如下。请自行补充完整。循环体循环控制m=n%10;if(msum)sum=m;n/=10;循环变量nn0695631(真)m 由?变为3真 sunt由0 变为3n 由 69563 变为 695669561(真)m 由 3 变为6真sum由3 变为6n 由 6956变为695.或 者(注意体会两者的区别)12345678910111213141516include uoid nain()0)sum)sum=R;n/=10;p rin tf(“各位上数字中的最大数为2dn”,sum);用户输入6 9 5 6 3 时循环结构具体的执行过程分析如下。请自行补充完整。循环体循环控制m=n%10;if(msum)sum=m;n/=10;循环变量nn069561(真)m 由?变为6真sum由3 变为6n 由 6956变为6956951(真)m 由 6 变为5假不执行选择语句n 由695变为69.两者的主要区别在于:变量sum 用于保存各位上数字中的最大数,第一个程序中sum 初始化为0,意味着先假设最大的数为0,而第二个程序中sum 先被赋值为n个位上的数,意味着先假设用户输入数的个位上的数最大。5.7 以小僧的人数为循环变量求解例5-6,要求程序不仅没有逻辑错误而且无解时可以输 出“问题没有解!答:2345678910111213141516include uoid n a in()(in t i =3,flag =0;w h ile(i=99)i f(i /3+(100-i)*3=100)i +=3;iF(Flag=0)p r in tf(“无解,n”);注意:在用穷举法解决此类问题时要防止因四舍五入而出错的情况.如此题中设大僧每人2个馍,小僧4人一个馍,则问题应该无解,但用例5-6 的算法求解时程序却会给出错误的结果。七僧:4 3,小僧:57当然了也可以加一个(1 0 0-i)%3 =0的条件来防止类似的错误。5.8 鸡兔同在一个笼子里,从上面数有3 5 个头,从下面数有9 4 只脚。求笼中各有几只鸡和兔。12345678910111213ttinclude uoid nain()in t n,Flag=0;For(n=1;n=35;+n)if(n *2+(35-n)*4=94)p rin tF(鸡 二 常d 兔,n,35-n);Flag=1;“(Flag=6)p r in te r无 解,n“);或:1include 2uoid main()34in t n;5For(n=1;n*2+(35-n)*4?=94&n=35;+n)691if(n 5.9编程输出正整数n的所有因数。1 ttinclude 2 uoid m a in()3456789in t i,n;scanFC%d,&n);For(i=1;i=n;+i)if(n%i=0)printF(%d,i);或:include 23568910111213include uoid main()in t i,n9 m;scanF(,%di,&n);m =s q rt(n);For(i=1;in;+i)iF(n%i=8)printF(%d 老d i f(n%m =0)p rin tf(%d,n);i,n/i);5.1 0有508个西瓜,第一天卖了一半多2个,以后每天卖剩下的一半多2个,问几天后能卖完?答:123456789101112131415ttinclude uoid m a in()in t sum=508,day=0;while(sun?=0)/*相应的fo r结构为For(day=0;sun?=0;+day)sum-=sun/2+2;*/p rin tF%d天后能卖完 n day);考虑无解的情况:1234567891011121314ttinclude uoid m a in()0)if(s u n =0)printf(%d天后能卖完n,day);elsep rin tf(无解八n”);5.1 1 分析下面循环的作用。,1.for(i=l;i100;+i)(if(i%2=0)printf(n%3dHz i);if(i%20=0)printf(nn);)3.for(i=l;i100;+i)(+i;printf(%3dz i);if(i%20=0)printf(n);2.for(i=2;i100;i+=2)printf(%3dz i);if(i%20=0)printf(nn);)4.for(1=1r j=l;i+j100;+i,+j)(printf(“%3d”,i+j);if(i+j)%20=0)printf(Xn);答:输 出 1 0 0 以 内(不 含 1 0 0?)的偶数,每 行 1 0 个。1.循环结构具体的执行过程分析如下。循环体循环控制i f(i%2=0)p r in tf (,%3d,z i);i f (i%20=0)p r i n t f(nnH);+i循环变量ii10011(真)假选择语句不执行假选择语句不执行i由1变221(真)真,输 出2假选择语句不执行i由2变331(真)假选择语句不执行假选择语句不执行i由3变4.1(真).1000(假)循环退出不再执行不再执行不再执行2.循环结构具体的执行过程分析如下。循环体循环控制p r i n t f(3d”,i);i f(i%20=0)p r i n t f(nnn);i+=2循环变量ii10021(真)输 出2假选择语句不执行i由2变441(真)输 出4假选择语句不执行i由4变6.1(真).1000(假)循环退出不再执行不再执行不再执行3.循环结构具体的执行过程分析如下。环体循 环 控 制 +i;p r i n t f(“3d”,i);i f (i%20=0)p r i n t f(n );+i循环变量ii10011(真)i由1变2输 出2假选择语句不执行i由2变331(真)i由3变3输 出4假选择语句不执行i由4变5.1(真).991(真)i由9 9变100输出100真输出/i由9 9变1001000(假)循环退出不再执行不再执行不再执行不再执行与其它循环结构相比,它可以输出偶数100及多一个回车。4.循环结构具体的执行过程分析如下。循环体循环控制p r in tf (n%3d,zi +j);i f(i%20=0)p r i n t f(nH);+i+jiji+j100111(真)输 出2假选择语句不执行i由1变2j由1变2221(真)输 出4假选择语句不执行i由2变3j由2变3.1(真).50500(假)循环退出不再执行不再执行不再执行不再执行5.12 编程输出 1 -3+5-7+99+101 的值。235618910111213ttinclude uoid main()in t i,j,sun=0;For(j=1,i=1;i=101;i+=2,+j)printF(1-3+5-7+.-9 9+1 01=%dn,sum);注:程序中变量i表示加数的绝对值,变 量j表示加的是第几项,j为1时sum加 第1项即1,j为2时sum加第2项即-3。或:12345618910111213ttinclude uoid nain()in t i,sum=0;For(i=1;i=101;i+=2)printF(-1-3+5-7+.-99+101=%dn,sum);或:2345678910111213ttinclude uoid nain()in t i9 sum;For(i=1,sun=0;i=51;+i)printF(1-3+5-7+.-99+101=%dn,sun);成.23include uoid nain()56in t i,Flag=-1,sum=0;For(i=1;i=101;i+=2)891011Flag=Flag*-1;sum=Flag*i;printFC,1-3+5-7+-99+101=%dn,sum);5.1 3 编程输出2000年至2100年间的闫年。123456789101112131415ttinclude uoid main()in t i,n=0;For(i=2OO0;i=2100;+i)i f(i%4=0&i%100=O)|i%400=0)p rin tF C d,i);+n;if(n%9=0)p rin tF(n);2000 2004 2008 2012 2016 2020 2024 2028 20322036 2040 2044 2048 2052 2056 2060 2064 20682072 2076 2080 2084 2088 2092 2096Press any k5.1 4 编程判断一个正整数是否为完全数。一个数如果恰好等于它的因数(自身除外)之和,则称该数为完全数(如 6=1+2+3,28等)。1 ttinclude 2345618910111213141516uoid main()in t i9 n,sum=1;scanf(%(T,&n);For(i=2;in;+i)iF(n%i=8)sum+=i;if(sun=n)p rin tf(d=1”,n);For(i=2;i 3),它每位上的数字的n 次幕之和等于它本身(例 如 371=33+73+13,153,407等)。234567891011121314151617扑include uoid main()in t n,n,sum=0,num;scanFCd,&n);nun=n;while(n 0)m =n%10;sum+=n*n*n;n/=10;i f(num=sum)printf(1,%d是水仙花数,n,num);elsep rin tf(不是水仙花数?n,nun);71是水仙花数?5.1 6 编程判断一个正整数各位上数字的乘积是否大于各位上数字之和。ttinclude 23456789101112131415161718uoid nain()in t n,nv sun=09 nul=1;scanFftd,&n);printFCd,n);while(n 0)sum)pr in tf(“各位上数字的乘积大于各位上数字之和?n);elsepr in t f各位上数字的乘积不大于各位上数字之和?n);5.1 7 分析下面的程序,用 Z5z2j3测试并改写为fo r循环结构#include void main()(int n=0;char c;c=getchar();while(c!=,n*)if(c=10&c=O&c=)+n;c=getchar();循环变量cc!=,n,z1(真)假选择语句不执行变量C 的值由Z 变为551(真)真变量n 的值由0 变 为 1变量c 的值由5 变为zz1(真)假选择语句不执行变量c 的值由z变为2.1(真)n0(假)循环退出不再执行循环退出不再执行改写后的程序为:12345618910include uoid n a in()=O&c=9)+n;printFCdXn,n);5.1 8 例 5-11也 可 用 下 面 的 程 序 求 解,请 分 析。#include void main()(int fl,f2;int i;fl=f2=1;for(i=l;i=15;+i)(printf(n%lld%lld,f2,fl);if(i%2=0)printf(n);f2=fl+f2;fl=f2+fl;)112358132134558914423337761098715972584418167651094617711286574636875025121393196418317811514229832040Pressany key to con tin u e.循环结构具体的执行过程分析如下。(请自行补充完整。)环 体循环控printf(*%lld%lldnzf2z fl);if(i%2=0)printf(Hn);f2=fl+f2;fl=f2+fl;+i变量ii1511(真)1 1假选择语句不执行f 2由1变2f l由2变3i由1变221(真)2 3真输出nf 2由3变5 1由5变8i由2变331(真)5 8假选择语句不执行f 2由5变13f l由1 3变21i由3变4.1(真).160(假)循环退出不再执行循环退出不再执行循环退出不再执行循环退出不再执行循环退出不再执行5.1 9分析下面的程序。1.#include#include void main()(int m,iz k;scanf(%dz&m);k=sqrt(m);for(i=2;i=k;+i)if(m%i=0)break;if(i=k+1)printf(告d 是质数。n”,m);)2.4include#include void main()(int m,i,k,flag=1;scanf(%d,&m);k=sqrt(m);for(i=2;i=k;+i)if(m%i=0)(flag=0;break;if(fla g =1)p r in t f(Y d 是质数。n”,m);els ep r in t f(%d 不是质数。n ,m);3.#in c lu d e#in c lu d e v o id m a in()(in t m,i,k,fla g =1;s c a n f(%d ,&m);k =s q r t(m);fo r(i=2;fla g=l&i=k;+i)i f(m%i =0)f l a g =0;i f(f l a g =1)p r i n t f (“为d 是质数。n ,m);e l s ep r i n t f (d 不是质数。n ,m);分析:这三个程序用于判断一个正整数是否为质数。与例题相比它们的效率较高(循环次数较少)。不过它们都没有考虑1这种特殊情况,因此需稍加调整。如最后下结论时加个n是 否 为1的判断条件。5.2 0有百余人,2人一组余1人,3人一组余2人,5人一组余4人,6人一组余5人,7人一组正好分完,问共有几人?编程计算。123include uoid main()56789101112in t i;For(i=105;i5.2 1用选择结构取代下面程序中循环体内的continue语句。#i n c l u d e vo i d m a i n()float f=1;while(f!=-1)(printf(请输入分数(0100,T 退 出)nH);scanf(%fnz&f);if(f 100)(printf(输入错误!n);continue;if(f=60)printf(”及格!nn);elseprintf(不及格!n”);)printf(多谢使用!nn);23456189101112131415161718192021222324include uoid m ain()Float F=1;while(F=-1)printf(“请输入分数(0-1 0,-1退出八n“);scanF(Zf,&f);if(F 1B0)else=60)printf(“及格八n”);elseprintf(不及格八n”);printf(“多谢使用八n“);5.2 2把例5-13中的fo r循环结构替换为while循环结构。include uoid main()in t i,n=0;i =0;w hile(i 99)i f(i%3=0|i%5=0)continue;printF(%3d,i);+n;if(n%10=0)printFC X n);注意:必须把修改循环变量的操作放在循环体的前面。5.2 3下面的代码中有几个for循环结构?找出每个循环结构的循环体。这段代码会有怎样的输出?代码嵌套了三个循环结构。具体的执行过程如下。环体循环控渝f o r(j=zXz;j=zZz;+j)fo r(k=zXz;k=Z;+k)p r i n t f (A-%ctB-%ctC-%cn,z iz j,k);+i变量iL=,Z,X1(真)变量jj=,zzfo r(k=X;k =Z ;+k)p r i n t f (A-%ctB-%ctC-%c n,i,j,k);+jX变丫X1(真)变量ky=z p r i n t f调用+kX变丫X1(真)AX B-X C-XX变YY1(真)AX BX C-YX变ZZ1(真)AX BX CZZ变0(假)退出不再执行不Y1(真)X1(真)AX B丫 CXX变Y丫变ZY1(真)AX B丫 C-YX变ZZ1(真)AX B丫 CZZ变0(假)退出不再执行不Z1(真)X1(真)AX B-Z C-XX变丫Z变Y1(真)AX B-Z C-YX变zZ1(真)AX B-Z C-ZZ变0(假)退出不再执行不0(假)退出不再执行不Y1(真).输出结果如下:xxxxxxxxx_二一二一二一BXBXBXBYBYBYBZBZBZBXBXBXBVBYB丫BZBZBZBXBXBXBYBYBYBZBZBZany keyCXCYCZCXCCZCXCYCZCXCVCZCXc yc zCXc 丫c zCXCVc zCXCYc zCXCVc zto co n tin u e5.2 4 编程输出如下所示的九九乘法表。1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=99*1=9 9*2=18 9*3=279*9=81include uoid m a in()in t i,j;F o r(i=1;i=9;+i)For(j=1;j=i;+j)p rin tF(,*%d*%d=%-5d*,j i,j,i *j);p rin tF(,ni,);1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427 =498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=815.2 5 编程输出如下所示图形11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 111 ttinclude 2 uoid main()3456789in t i,j,k,n=1,n;For(i=1;i?=0;i+=n)输出前导空格For(k=1;k=5-i;+k)p rin tF C );1011121314151617输出数字n=1;For(j=1;j?=0;j+=n)p rin tF C d ,j);if(j =i)折向n=-1;1819202122i f(i =5)折回m =-1;p rin tFC A n);2311 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 115.2 6编程求出1000内所有的完全数,输出格式如6=1+2+3。23456789101112131415161718192021include uoid main()in t i,n,sum;for(n=2;n=100O;+n)sum=1;F o r(i=2;in;+i)if(n%i =0)sun+=i;if(s u n =n)p r in tf(,%d=1,n);For(i=2;in;+i)iF(n%i =O)printFC+%d*,i);printFC Xn);6=1+2+328=1+2+4+7+14496=1+2+4+8+16+31+62+124+2485.2 7编程求出所有的3位水仙数。1#include 23456789101112131415161718uoid main()in t n9 m,sum,num;For(n=1O0;n=999;+n)0)n=num%10;sum+=n*n*n;nun/=10;if(n =sum)p r in t R d是水仙花数,n”5.2 8把1元换成1分、2分、5分的硬币,请编程输出详细的兑换方法。ttinclude ttinclude uoid n a in()2=100)in t i,j,k,n=0;fo r(i=0;i=100;+i)For(j=0;j=50;j)for(k=0;k=20;+k)i f(i +j*2 k5678910j,k);+n;p rin tf(第%z?z/zz/z/z7Z方方方方方方方方方方方方方方方方方方方方方方方方ssssssssssss沁沁沁浴lf ff fr fI TI TI Tf fE油ul li Tf ff ff F汕i Tgf fp种二/二/二/二/-1/-TV3.-X-TV,-I,二/二/二/二/二/二/1T/二/二/二/二/二/-/=1890123456789012345678901112222222222333333333344555555555555555555555555弟弟弟弟弟弟弟憧障l-ag中憧豆芽l-agffi童串笫第一国或者:include ttinclude uoid n a in()23n,100-j*2-k*5,j,k);in t j,k,n=0;For(j=0;j=50;j)for(k0;k=0)n;pr in t F(“第资种兑换方法为:%d个1分,狗个2分,枳个5分n”,567891011121311-55555555,个个个个个一,2,0,1,0,1.0,0,0-22222222-56677890-4-4444445,个个个个个个个个nt08361420o理eylinKny-4、-745678901s-33333344s-55555555e5.2 9 三 位 数 xyz和 yzz的和为5 3 2,编程计算x、y、z 分别是几?1 ttinclude 23456uoid main()in t x,y9 z,m,n;For(x=1;x=4;+x)/x=9?For(y=1;y=4;+y)/y=9?For(z=0;z n的公约数也是n和 r的公约数,即 m和 n的最大公约数与n和 r的最大公约数相同,所以只要求出n 和 r的最大公约数就可,重复该过程直到余数为0求出最大公约数为止。如 m=1 2,n=2 1 时,过程如下次 数mnr11 22 11 222 11 2931 2934930所 以 1 2 和 2 1 的最大公约数为最答案:穷举法include 2 uoid main()3456789in t i,m,n;scanFCdd,&n);For(i=n;n%i?=01|n%i?=0;-i)p rin if(,曙d和 d的最大公约数:%dn,n.i);12 2112和21的最大公约数:3辗转相除法23北include uoid main()56789in t m9 n9 r;scanfdZdZd,&m,&n);p rin tf(M d和 d的最大公约数:”,r=n%n;w hile(r 0)n,n);n=r;r=n%n;printFCdXn,121314n);15 12 2112和21的最大公约数:3或12345678910111213145.31ttinclude uoid n a in()in t m,n9 r;scanF C dd,&n,&n);p rin tfd为 咻叫d的最大公约数:“,m,n);do w hile(r 0);printF(,%dn,m);根据公式e=l+,+,+编程求e 的近似值,精度要求为IO。1!2!加1 ttinclude 2 uoid main()3456189101112in t n=1;double e,n;e=n=1.0;while(m 1e-6)printFCFXn,e);13 b.7182825.3 2 输入正整数a(lV aW 9)和 n 的值,编程求出a+aa+aa(最后一个也就是第 n 个加数由n 个 a 组成)的和。234567891012131415林include uoid n a in()in t a9 n9 i,j,n,sun;scanf(,%d%d,&a,&n);sum=m =a;p rin tfC d,a);For(i=2;iprintf(=%dn,sun);3 53+33+333+3333+33333=370355.3 3 下面程序的功能是求2323的个、十、百位上的数字之和。请把程序补充完整。#include void main()(int i,p=lz t=0;for(i=l;i=23;+i)p=p*23%1000;doP=;while();printf(23的 23次方的个、十、百位上的数字和为超d。n,t);)do 0);5.3 4 计算n!(nl0000)的末尾有多少个零。(提示:考虑每个因数含有几个5)23678910ttinclude in t nain()in t n9 i,j,sum=0;scanF(%d,&n);For(i=1;i=n;+i)For(j=i;j%5=0;j/=5)+sun;p rintf(%d?的夫尾有%d个零?n n,sun);98889888?的末尾有2469个零?5.3 5 编程将一个正整数分解质因数。例如,输入2 0,输出2 0=2*2*5。请分析下面的两个程序。1 .#include void m a i n()(int m,i;printf(“请输入一个正整数:”scanf(n%dn,&m);printf(n%d=n,m);for(i=2;im;+i)(while(m!=i)if(m%i=0)(printf(“带d*”,i);m/=i;)elsebreak;printf(%dn,m);2.#include void m a i n()(int m,i;printf(请输入一个正数:”);scanf(n%dz&m);printf(n%d=n,m);for(i=2;m!=1;+i)if(m%i=0)printf(n%d*n,i);m/=i;i-=1;printf(b nn);)5.3 6 我国有4 大淡水湖。甲说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。乙说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。丙说:洪泽湖最小,洞庭湖第三。丁说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。四个人每人仅答对了一个,请编程给出四个湖从大到小的顺序。(提示:C语言中真为1,假为0,故由甲的判断构成的逻辑表达式的值加起来应为1,因为甲仅答对了一个)ttinclude in tmain。6789101112131415161718192021222324252627282930313233in t b1=0,b2=G,b3=%=0;in t dong,hong,po,ta i;in t i;for(dong=1;dong=4;id o n g)f or(hong=1;hong=4;hong)F or(po-1;po-4;+po)F or(ta i=1;tai=4;+tai)iF(dong+hong+po+ta i=b1=(dong=1)+(hongb2=(hong=1)+(dongb3=(hong=4)+(dongbU=(po=1)(ta i=iF(b1=1&b2=1&i10&dong hong po*ta i-=4)(po=3);=4)+(po=2)(ta i=3);=3);4)+(hong=2)(dong=3);b3=1&b4=1)p r in t e r四个湖的大小为:n);For(i=1;i=4;+*i)p r in tfC d:0,i);”(dong-i)p r in tf(“涧 庭湖);“(hong=i)p r in tf(“洪泽湖”);“(po=i)p r in t e r鄱帕枷“(ta i=i)p r in tf(太湖,);p r in tf(0);24)23四个湖的大小为:鄱 阳 湖2:洞 庭 湖3:太 湖4:洪泽湖