C语言程序设计 请在以下三组题目中任选一组作答,满分100分。 答案下载请进 天大《C语言程序设计》2016年6月考试期末大作业答案 第一组: 一、编程题(每题20分,共40分) 编写程序。每当输入10个评委的分数后,求该选手的最后得分并输出(设10个评委按照以下打分原则为选手打分:去掉一个最高分和一个最低分,剩下的求平均分作为选手的最后得分)。 2、编写程序。先定义一个求n!的子函数fact,调用该子函数计算并输出 的值(m、n的值由键盘输入)。 二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分) 1、打印出杨辉三角形(只打印出10行,形式如下)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10105 1 …… #include <stdio.h> void main() { int i,j; int a[10][10]; for(i=0;i<10;i++)a[0]=1, _____①_____; for(_____②_____;i<10;i++) for(j=1;j<i;j++) a[j]= _____③_____; for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf("%5d",a[j]); _____④_____; }} 2、 将输入的一个字符串(以!结束)中的小写字母转换成大写字母,然后输出到磁盘文件“test”中。#include <stdio.h> void main() { _____①_____; char str[100],filename[10]; int i=0; if((fp=_____②_____ ==NULL) { printf("cannot open the file\n");exit(0); } printf("please input a string:\n"); gets(str); while(_____③_____) { if(str>='a'&&str<='z') str=str-32; fputc(str,fp); _____④_____; } fclose(fp);} 3、输出如下图形。 * * * * * * * * * * * * * #include <stdlib.h> void main() { int i=1,j; while(i<=3) { j=1; printf("*"); while(j<=3) { printf(" "); _____①_____; } printf("*\n"); _____②_____; } _____③_____; i=1; while(i<=3) { j=1; printf("*"); while(_____④_____) { printf(" "); j++; } printf("*\n"); i++; } } 三、写出程序的执行结果(每题4分,共12分) 1、 #include <stdio.h> void sub(int x,int y,int*z) { *z = x+y;} void main() { int a=5,b=6,c=7; printf(“%d,%d,%d ”,a,b,c); sub(b,c,&a); sub(a,b,&c) printf(“%d,%d,%d\n”,a,b,c); } 2、 #include <stdio.h> void main () { int x=1,a=0,b=0; switch(x) { case 1:a++ ; case 2:a++; b++; break; default: b++;break; } printf(“a=%d,b=%d”,a,b); } 3、 #include<stdio.h> void fun(int x); void main() { fun(7); printf("\n"); } void fun(int x) { if(x/2>1) fun(x/2); printf("%5d",x); } 第二组: 一、编程题(每题20分,共40分) 1、 编写程序。定义数组存放任意输入的10个实数,求出其中的最大值以及第一个最 大值的下标并输出。 2、编写程序。要求编写一个求最大供公约数的子函数,调用该子函数对输入的a、b求它们的最大公约数并输出。 二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分) 1、程序用于输出如下图形。
#include <stdio.h> void main( ) { int i, j; for(i=1; i<10; i++) printf(“%4d”,_____①_____); for(i=1;i<10;i++) { for(j=1; _____②_____;j++) printf(“%4d”, _____③_____ ); _____④_____; } } 2、输入50个实数,统计其中正数、负数和零的个数。 #include <stdio.h> void fun(int *zs,int *fs,int *l, _____①_____) { int i; for(i=0;i<50;i++) { if(aa>0)(*zs)++; if(aa<0) (*fs)++; if(aa==0) (*l)++; } } void main() { float num[50]; int i,czs,cfs,cl; czs=cfs=cl=0; printf("\nPlease enter 50 float numbers:\n"); for(i=0;i<50;i++) scanf(“%f”, _____②_____); fun(_____③_____, _____④_____); printf("\n正数:%d,负数:%d,零:%d\n",czs,cfs,cl); } 3、输入正整数m和n,求出[m,n]区间的所有素数。 #include<stdio.h> _____ ①__ ___ voidmain() { int m,n,i,j,k; scanf("%d%d",&m,&n); for(i=m;i<n;i++) { k=sqrt(i); for(j=2; _____②_____;j++) if(_____③_____)break; if(_____④_____) printf(" %d",i); } printf("\n"); } 三、写出程序的执行结果(每题4分,共12分) 1、 #include<stdio.h> void main() { char s1[ ]="abcde",s2[10]; int i=0; while( s1 !=’\0’) {s2[ i ]= s1[ i ]+3; i++; } s2[ i ]= '\0'; printf("%s", s2); } 2、 #include<stdio.h> void main() { char ch1='A',ch2='B'; switch(ch1) { case 'A':switch(ch2) { case 'B':printf("Good! ");break; case'A':printf("Better! ");break; } case 'B':printf("Best!\n");break; } } 3、 #include<stdio.h> int age(int n) { int c; if(n==1) c=10; else c=age(n-1)+2; return(c); } void main() { printf("%d",age(5)); } 第三组: 一、编程题(每题20分,共40分) 1、编写程序。计算 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif(求n项,n由键盘输入并要求最后一项小于10-6结束。 2、编写程序。自定义函数求N名学生1门课程成绩的平均分,调用该函数求10名 学生1门课程成绩的平均分。 二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分) 1、判断一个整数的各位数字是否都相同,相同则显示“yes“,否则显示”no”。 #include <stdio.h> void main( ) { int a, r1, r2; scanf(“%d”,_____①_____); do{ r1=a%10; _____②_____; r2=a%10; }while( a!=0&&_____③_____ ); if(a!=0) printf(”no \n”); else _____④_____; } 2、输出如下图形。 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1 #include<stdio.h> void fun(_____①_____) { int i,j; for(i=1;i<=n;i++) { for(j=1; _____②_____;j++) printf(“%3d”,1); for(j=2;j<=_____③_____;j++) printf(“%3d”,j); printf(“\n”); } } void main() { _____④_____; } 3、输入一个3行5列的整数矩阵,输出其中最大值和它们的下标。 #include<stdio.h> void main() { int a[3][5],i,j,t,n=3,m=5,max,maxrow,maxcol; printf(“Enter%d*%dnumbers!\n”,n,m); for(i =0;i<n;i++) for(j=0;j<m;j++) { scanf(“%d”,&t); _____①_____; } max=a[0][0];_____②_____; for(i=0;i<n;i++) for(j=0;j<m;j++) if(_____③_____) { _____④_____;maxrow=i;maxcol=j;} printf(“MAX=a[%d][%d]=%d\n”,maxrow,maxcol,max,); } 三、写出程序的执行结果(每题4分,共12分) 1、 #include<stdio.h> void main() { int a[][3]={9,7,5,3,l,2,4,6,8}; int i,j,sl=0,s2=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { if(i==j) s1=s1+a[j]; if(i+j==2) s2=s2+a[j]; } printf(“%d%4d\n”,sl,s2); } 2、 #include<stdio.h> void main() { char a[]={‘*’,‘*’,‘*’,‘*’,‘*’}; int i,j,k; for(i=0;i<4;i++) { printf(“\n”); for(j=0;j<i;j++) printf(“%c”,‘ ’); for(k=0;k<4;k++) printf(“%c”,a[k]); } printf(“\n”); } 3、 #include <stdio.h> void main() { int s[5]; for (i=0;i<5;i++) s=i*2; for(i=4;i>=0;i--) printf(“%5d”,s); printf(“\n”); } |