C语言程序设计项目化教程(周雅静第3版) 训练及综合练习答案 项目5 训练与作业参考答案.docx
项目5根据条件进行学生成绩汇总任务1统计小组一门课程的总分及平均分实践训练初级训练(1) .有以下程序,写出程序的运行结果:"C:UsersAdministrator.回一区31Pressanykeytocontinue141I”,2.在main函数中调用3个无参函数:jx()、SjX()、zsjx(),其功能是输出不同形状的星形图。补充参考程序:#inc1ude"stdio.h"voidjx()输出距形星号图型的函数iti,j;for(j=1;j<=10;j+)for(i=1;i<=10;i+)printf(,',);for(i=1;i<=10;i+)print"'*");printf(',n");)voidsjx()输出直角三角形星号图形的函数iti,j;for(j=1;j<=10;j+)for(i=1;i<=10;i+)printf(,);for(i=1J<=2*j-1;i+)printf(,*");printf("n");)voidzsjx()输出正三角形星号图形的函数iti,j;for(j=1;j<=10;j+)for(i=1;i<=10-j;i+)printf(,',);for(i=1;i<=2*j-1;i+)Printf("*");printf("n");)main()intk;Printf("选择1,则输出距形星号图n");Printf("选择2,则输出直角三角形星号图n)Printf("选择3,则输出正三角形星号图n");Printf("请选择了);scanf("%d",&k);if(k=1)jx();e1seif(k=2)sjx();e1seif(k=3)zsjx();e1sePrintf("输入有误n");)3 .在main函数中输入3个数,并调用fun函数,fun函数的功能是:判断输入的三个数能否组成三角形,输出判断的结果。补充参考程序:#inc1ude*stdio.h"intfun(inta,intb,intc)if(a+b>c&&a+c>b&&b+c>a)return1;return0;)main()intx,y,z;Printf(请输入三角形三边的值”);scanf("%d%d%d”,&x,&y,&z);if(fun(x,y,Z)=DPrintf("输入的三个数可以构成三角形可");e1sePrintf("输入的三个数不能构成三角形n);)4 .编写一个判断素数的函数,主函数中输入一个整数,输出是否是素数的信息。补充参考程序:#inc1ude"stdio.h"intss(inta)(inti;for(i=2;i<=a-1;i+)if(a%i=0)return0;return1;)main()intx;Printf(请输入要判断是否是素数的数);scanf("%d",&x);if(ss(x)=1)printf("是素数n");e1sePrintf("不是素数n");)5 .在main函数中输入2个数,并调用gb函数,gb函数的功能是:求二个数的最小公倍数。补充参考程序:#inc1ude"stdio.hintgb(inta,intb)求二个数的公倍数的函数inti;for(i=a;i<=a*b;i+)if(i%a=0&&i%b=0)returni;main()intx,y,z;Printf(输入要求最小公倍数的2个整数,以空格隔开”);scanf("%d%d”,&x,&y);z=gb(x,y);Printf("%d与d的最小公倍数为%dn”,x,y,z);6.在main函数中输入小王所在小组6位员工的工资,并调用avg函数,avg函数的功能是:求小王所在小组的员工的平均工资。补充参考程序:#inc1ude"stdio.hf1oatavg()求六个员工平均工资的函数f1oats=0,t,x;inti;for(i=1;i<=6;i+)scanf("%f,&x);s=s+x;t=s6;returnt;main()f1oatx;Printf("输入小王所在6位员工的工资:”);Printf(“平均工资为:%5.1fn*,avg();)深入训练1 .在main函数中调用3个有参函数:jx(n)、sjx(n)、zsjx(n),其功能是输出不同形状的星形图,星型图的行数由n决定。参考程序为:ttinc1ude"stdio.hvoidjx(intx)输出距形星号图型的函数inti,j;for(j=1;j<=x;j+)for(i=1;i<=x;i+)Printf(");for(i=1;i<=x;i+)printf("*);printf("n");)voidsjx(intx)输出直角三角形星号图形的函数inti,j;for(j=1;j<=x;j+)for(i=1;i<=x;i+)printf(z,);for(i=1;i<=2*j-1;i+)printf(*);printf("n");)voidzsjx(intX)输出正三角形星号图形的函数inti,j;for(j=1;j<=x;j+)for(i=1;i<=x-j;i+)Printf("");for(i=1;i<=2*j-1;i+)printf(*);printf(n);)main()intk,1ine;Printf("选择1则输出距形星号图n");Printf(“选择2,则输出直角三角形星号图n);Printf(“选择3,则输出正三角形星号图n");Printf("请选择:");scanf("%d,&k);Printf("请选择要输出的星号的行数);scanf("%d”,&1ine);if(k=1)jx(1ine);e1seif(k=2)sjx(1ine);e1seif(k=3)zsjx(1ine);e1sePrintf("输入有误n");)2 .编写一个判断素数的函数,主函数中输出2T00之间所有的素数,要求每行输出5个。参考程序为:ttinc1ude“stdio.hintss(intx)inti;for(i=2;i<=x-1;i+)if(x%i=O)break;if(i=x)return1;e1sereturnO;)main()inti,k=0;for(i=2;i<=100;i+jif(ss(i)=1)printfi);k+;if(k%5=0)printf("n");)3.在main函数中输入小王所在小组员工的工资(人数由键盘输入),并调用avg函数,avg函数的功能是:求小王所在小组的员工的平均工资。参考程序为:#inc1ude*stdio.hf1oatavg1(intx)inti;f1oatgz,s=0,avg;Printf(请输入小王所在小组员工的工资,以空格隔开:”);for(i=1;i<=x;i+)SCanf("%f”,&gz);s=s+gz;avg=sx;returnavg;)main()intn;Printf(请输入小王所在小组的人数”);scanf("%d,&n);printf(z,%.1fn",avg1(n);4 .编写函数COmPUtNUn1(intnum),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6)。参考程序为:inc1ude*stdio.hintComputNum(intnum)ints=0;whi1e(num!=0)s=s+num%10;num=num10;returns;main()intn;Printf("请输入一个正整数");scanf("%d,&n);printf(z,%d各位数字的和为:%dn*,n,computNm(n);)5 .程序说明:写两个函数分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。参考程序为:#inc1ude“stdio.hintgy(intx,inty)inti;for(i=x;i>=1;i一)if(x%i=O&&y%i=O)break;returni;)intgb(intx,inty)inti;for(i=x;i<=x*yji+)if(i%x=O&&i%y=O)break;returni;)main()inta,b;Printf(请输入2个正整数,以空格隔开);scanf(“d%d”,&a,&b);Printf(d,%d的最大公约数为:%dn*,a,b,gy(a,b);printf(z,%d,%d的最小公倍数为:%dnz,a,b,gb(a,b);)6.编写函数,mu1Num(inta,intb),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。参考程序为:ttinc1ude"stdio.hmu1Num(inta,intb)if(a%b=0)return1;e1sereturn0;)main()inta,b;Printf(“请输入2个正整数,以空格隔开);scanf("%d%d”,&a,&b);if(mu1Num(a,b)=1)printf(z,%d是%d的倍数n”,a,b);e1seprintf(z,%d不是d的倍数n”,a,b);任务2统计小组若干门课程的总分及平均分实践训练初级训练1 .编写求方程的根的程序,用二个函数分别求出当b*b-4*a*c大于等于零和小于零的根的情况。要求从主函数输入a,b,c的值并输出结果。参考程序为:#inc1ude,stdio.h"intdd(inta,intb,intc)itt;t=b*b-4*a*c;if(t>O)returnt;e1seif(t=0)return0;e1sereturn-1;)voidfcj(inta,intb,intc)if(dd(a,b,c)>0)Printf("有二个不同的实根n");if(dd(a,b,c)=0)Printf("有二个相同的实根n");if(dd(a,b,c)<0)PrintfC无实根叫;)main()inta,b,c;Printf("输入一元二次方程的系数r);scant(M%d%d%dM,&a,&b,&c);fcj(a,b,c);)2.输入小王所在6个员工的平均工资,要求用嵌套函数完成,其中SUm函数是输入小王所在6个员工工资,求他们的总工资,avg函数是调用SUm函数,