C语言程序设计练习五参考答案.docx
- 文档编号:6337247
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:12
- 大小:21.59KB
C语言程序设计练习五参考答案.docx
《C语言程序设计练习五参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计练习五参考答案.docx(12页珍藏版)》请在冰豆网上搜索。
C语言程序设计练习五参考答案
《C语言程序设计》练习五(参考答案)
说明:
下述答案仅供参考,若采用其他方法答题,只要正确实现题目要求,仍可获满分。
五、程序设计题
1.从键盘上输入10个整数,并将其存放在一数组中,求出该数组中所有大于零且为偶数的数的平均值。
#include
voidmain()
{inta[10],i,n=0;
floataver;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(a[i]>0&&a[i]%2==0)
{aver+=a[i];
n++;
}
aver=aver/n;
printf("aver=%.2f\n",aver);
}
2.若有n行n列数组,试编写一程序,分别求出两条对角线元素之和。
(从键盘输入n*n个整型数,n≤20)
#include
#defineN20
voidmain()
{inta[N][N],n,i,j,k=0,t=0;
scanf(“%d”,&n);
for(i=0;i for(j=0;j scanf(“%d”,&a[i][j]); for(i=0;i {k+=a[i][i]; t+=a[i][n-1-i]; } printf(“k=%d,t=%d\n”,k,t) ; } 3.从键盘输入n*n个整型数(n≤20),组成n行n列数组,打印出其上三角数组。 #include voidmain() {inta[20][20],i,j,n; scanf("%d",&n); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i {for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } 4.用以下近似公式编一个求 的近似值的程序。 ,其中n的值由键盘输入。 #include voidmain() {floatpi=0.0,s=1.0; intn,i; scanf("%d",&n); for(i=1;i<=n;i++) {pi=pi+s/(2*i-1); s=s*(-1.0); } printf("pi=%f\n",pi*4); } 5.若数组a中有十个整数8,2,5-3,7,-9,0,-4,10,15,请编程求出该数组中的最大值和最小值。 #include voidmain() {inta[]={8,2,5-3,7,-9,0,-4,10,15},max,min,i max=a[0];min=a[0]; for(i=1;i<10;i++) {if(a[i] If(a[i]>min)min=a[i]; } printf(“max=%d,min=%d\n”,max,min); } 6.从键盘上输入一个正整数n(n≤10),求n的阶乘并输出结果。 #include voidmain() {inti,n; longx=1; scanf("%d",&n); if(n<=10) {for(i=1;i<=n;i++) x=x*i; printf("%d! =%ld\n",n,x); } else printf("InputnumberError"); } 7.请编程从键盘上输入十个整数,计算其中大于零的奇数的平均值,并输出这些大于零的奇数以及它们的平均值。 #include voidmain() {intx[10],i,n=0; floatsum=0.0; for(i=0;i<10;i++) scanf("%d",&x[i]); for(i=0;i<10;i++) if(x[i]>0&&x[i]%2! =0) {sum+=x[i]; ++n; printf("%5d",x[i]); } printf("n=%d,aver=%f\n",n,sum/n); } 8.从键盘输入10个整数,编程求其中大于3且小于100的数的平均值并输出结果。 #include voidmain() {inta[10],i,n=0; floataver; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) if(a[i]>3&&a[i]<100) {aver+=a[i]; n++; } printf(aver=%f\n",aver/n); } 9.从键盘上输入10个整数,用冒泡法将它们按从小到大的次序排列出来,并把排列的结果输出。 #include voidmain() {inta[10],i,j,t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(a[i]>a[j])t=a[i],a[i]=a[j],a[j]=t; for(i=0;i<10;i++) printf("%4d",a[i]); } 10.用循环语句编程打印下列图案。 (第一行的″$″在第20列) $ $$$ $$$$$ $$$ $ #include voidmain() {inti,j; for(i=1;i<=3;i++) {for(j=1;j<=21-i;j++)putc(''); for(j=1;j<=2*i-1;j++)putc('$'); putc('\n'); } for(i=2;i>=1;i--) {for(j=1;j<=21-i;j++)putc(''); for(j=1;j<=2*i-1;j++)putc('$'); fputc('\n'); } } 11.由键盘输入n*m个数,并把它们存放在一个n行m列的数组中(n、m均不超过20)。 (1)按n行m列输出该二维数组; (2)求出该二维数组全部元素的平均值; (3)把该二维数组中大于平均值的元素的值、以及它们行列下标打印出来。 #include voidmain() {floata[20][20],aver=0.0; inti,j,n,m; scanf("%d%d",&n,&m); for(i=0;i for(j=0;j scanf("%f",&a[i][j]); for(i=0;i {for(j=0;j {printf("%",a[i][j]); aver+=a[i][j]; } printf("\n"); } aver=aver/(n*m); printf("aver=%f\n",aver); for(i=0;i for(j=0;j if(a[i][j]>=aver) printf("a[%d][%d]=%f\n",i,j,a[i][j]); } 12.从键盘上输入10个字符串(每个串不超过8个字符),将这些字符串按从小到大的次序排列出来并输出排序后的结果。 #include #include voidmain() {charstr1[10][9],str2[9]; inti,j; for(i=0;i<10;i++) gets(str1[i]); for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(strcmp(str1[i],str1[j])>0) {strcpy(str2,str1[i]); strcpy(str1[i],str1[j]); strcpy(str1[j],str2); } for(i=0;i<10;i++) printf("%s\n",str1[i]); } 《C语言程序设计》练习四(参考答案) 四、程序填空题 1.下列程序的主要功能是反复输入小写字母,循环后移5个位置后输出。 直到输入“回车换行符”时中止。 如’a’变成’f’、’b’变成’g’、……、’v’变成’a’、’z’变成’e’。 请为程序填空。 (1)c+=5; (2)c-=21; (3)c=getchar(); 2.下面程序的功能是输出1000以内能被3整除,且个位为6的所有整数,请填空。 (1)i<=99 (2)m%6! =0 (3)m 3.下列程序的功能是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。 请填空。 (1)max=min=x; (2)x>=0或者! (x<0) (3)scanf("%f",&x); 4.下列程序的主要功能是打印下列图形,请填空。 ***** **** *** **** ***** (1)3-m (2)printf("\n"); (3)m 5.下列程序的主要功能是输入字符串存入数组a,然后复制到数组b中并输出,请填空。 (1)k=0 (2)a或者&a[0] (3)(b[k]=a[k])! ='\0'或者b[k]=a[k] 6.下列程序的主要功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差值。 若字符串相同则输出0。 请填空。 (1)i=0 (2)s1[i]==s2[i] (3)s1[i]-s2[i] 7.下列程序的主要功能是把从键盘上输入的long型十进制正整数转换成对应的十六进制形式输出,请填空。 (1)n%16 (2)n! =0 (3)c[i] 8.下列程序的主要功能是计算菲不拉契序列: 1、1、2、3、5、8、13、21、…的前20项,并存入数组f[20]中,然后求这20项之和并输出。 请填空。 (1)k=2 (2)k (3)f[k-2] 9.下列程序的功能是输入两个字符串分别存入字符型数组s1和s2中,然后将数组s2中的字符串连接到数组s1的后面,并存放到字符型数组s中,然后输出。 请填空。 (1)p1=s1,p2=s2,p=s (2)*p++=*p1++或*p=*p1,p++,p1++ (3)p=s 10.下列程序的功能是输入9个从大到小排序的整数存入一维数组x,然后再输入1个整数插入数组x中,使其保持从大到小的顺序。 请填空。 (1)px-- (2)*(px+1) (3)*++px=*py 11.以下程序的功能是将无符号八进制数字构成的字符串转换为十进制整数。 例如,输入的八进制数字构成的字符串为“111”,则输出对应的十进制数应为73。 请填空。 (1)=s (2)'0' (3)*++ 12.下列程序的主要功能是输入10个字符和1个待查找的字符,从十个字符中查找待查找的字符。 找到则输出其序号,找不到则输出0。 请填空。 (1)p=y (2)flag=1 (3)p-y+1或p-&y[0]+1 13.下列函数f2()的功能是对pa、pb、pc指向的3个实数排序,保证*pa≥*pb≥*pc。 该函数调用了函数f1()。 请填空。 (1)t=*x,*x=*y,*y=t (2)*pa<*pb (3)pb,pc 14.函数f()的功能是b指向的字符串连接到a指向的字符串的后面,并返回a指向的新字符串的长度。 请填空。 (1)'\0' (2)++ (3)num 15.函数f()的功能是对两个字符串进行比较。 当p1指向的字符串和p2指向的字符串相等时,返回值为0;当p1指向的字符串和p2指向的字符串不相等时,返回第1个不相同字符的差值。 请填空。 (1)'\0' (2)p2++ (3)*(p1)-*(p2) 16.函数f()的主要功能是在w指向的数组前*n个数据中插入x,要求w指向数组中的前*n个数据已按由小到大顺序存放。 插入x后,w指向的数组中的数据仍按照从小到大的顺序排列,同时将*n修改为插入x后排序数据的数目。 请填空。 (1)p++ (2)w[i-1] (3)w[p]=x 17.函数f()的主要功能是求p指向的m行6列数组中的最大数与最小数,并通过形参指针变量max和min返回。 请填空。 (1)float*max,float*min (2)*p或*(p+0*6+0) (3)*max=*(p+i*6+j) 18.下面的程序是使用结构型来计算复数x和y的和。 请填空。 (1)structcomp (2) (3) 19.下面程序的主要功能是输入100名学生的姓名和总分,存入结构型数组。 然后查找总分最高和最低的学生,输出它们的姓名和总分。 请填空。 (1)s[k].name (2)s[k].total (3)s[min].total 20.下列程序的功能是输入100个朋友的姓名和电话号码(字符串)存入结构型数组。 再输入一个姓名,从结构型数组中查找。 找到,则输出对应的电话话码;找不到,则输出“NoFind! ”。 请用指针变量p来填写缺少的内容。 (1)(p+k) (2)(p+k)->name (3)(p+k)->number 21.下列程序的功能是先将名为“”文本文件复制到名为“”的文本文件中,然后再显示“”文件的内容。 请填空。 (1)fgetc(fp1),fp2 (2)rewind(fp2) (3)! feof(fp2) 22.下列程序的功能是输入100个学生的信息(含有姓名、7科成绩),然后计算7科成绩的总分,并将100个学生的编号(按照输入的顺序从1开始编号)、姓名、7科成绩和总分写名“”的二进制文件中。 请填空。 (1)"wb" (2)p.total=0 (3)fwrite(&p,sizeof(structSTU),1,fp)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 练习 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)