天大《C语言程序设计》离线考核(标准答案)
时间:2023-03-30 点击:426次
00
C语言程序设计 要求: 一、 独立完成,下面已将三组题目列出,请按照学院平台指定的做题组数作答, 每人只答一组题目,多答无效,满分100分; 平台查看做题组数操作:学生登录学院平台→系统登录→学生登录→课程考试→离线考核→离线考核课程查看→做题组数,显示的数字为此次离线考核所应做哪一组题的标识; 例如:“做题组数”标为1,代表学生应作答“第一组”试题; 二、答题步骤: 1. 使用A4纸打印学院指定答题纸(答题纸请详见附件); 2. 在答题纸上使用黑色水笔按题目要求手写作答;答题纸上全部信息要求手写,包括学号、姓名等基本信息和答题内容,请写明题型、题号; 三、提交方式:请将作答完成后的整页答题纸以图片形式依次粘贴在一个Word 文档中上传(只粘贴部分内容的图片不给分),图片请保持正向、清晰; 1. 上传文件命名为“中心-学号-姓名-科目.doc” 2. 文件容量大小:不得超过20MB。 提示:未按要求作答题目的作业及雷同作业,成绩以0分记!
题目如下: 第一组: 一、编程题(每题20分,共40分) 1、编写程序。输入一行字符(以回车符结束),分别统计其中字母、数字和其他符号的个数。
2、编写程序。要求编写子函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0,再调用该子函数求100以内的全部素数(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、按照公式 e=1+ #include < stdio.n> void main ( ) { float_____①_____; int n=1, i; for(_____②_____) { n=_____③_____; e=_____④_____; } printf (“ e= %f\n” ,e); }
2、将文件file1.dat中的内容复制到file2.dat中。 #include <stdio.h> #define Null 0 void main() { FILE_____①_____; char ch; if((p1=fopen(“file1.dat”,”r”)= =Null)||(p2=fopen(“file2.dat”,”w”)= =Null )) { printf(“Can’t open file\n”); _____②_____; } while(_____③_____) { ch=_____④_____; fputc(ch,p2); } fclose(p1); fclose(p2); }
3、求二维数组a[5][4]中所有元素的平均值。 #include <stdio.h> ____ _①_ ____ void main ( ) { int a[5][4],i ,j, pa; for (i=0;i<5;i++) for (j=0;j<4;j++) scanf(“%d”, &a[i][j]); pa= _____②_____; printf (“average=%d\n”,pa); } int average (int s[ ][4] ) { int i,j,aver=0; for (i=0;i<5;i++) for (j=0;j<4;j++) aver=aver+s[i][j]; aver=_____③_____; _____④_____; }
三、写出程序的执行结果(每题4分,共12分) 1、 #include <stdio.h> void main() { int i, j, k=4; for (int i=1;i<=k;i++) printf("%c",’*’); printf("\n"); for (int i=1;i<=k-2;i++) { printf("%c",’*’); for (j=1;j<= k-2;j++) printf(" "); printf("*\n"); } for (i=1;i<=k;i++) printf("%c",’*’); printf("\n"); }
2、 #include <stdio.h> void fun(int s[ ]); void main() { int a[ ]={1,2,3,4,5,6},k; fun(a); for(k=0;k<=5;k++) printf(“%d ”,a[k]); printf(“\n”); } void fun(int s[ ]) { int i=0; while(i<3) { s[i]=s[i]+5; i++; } }
3、 #include <stdio.h> void main() { int j, a[ ]={1,2,3,4,10,12,13,15}; for( j=3; j>0; j--) switch ( j ) { case 1: case 2: printf(“%d,”, a[j+4]); break; case 3: printf(“%d,”, a[j-1]); } printf(“\n”); }
第二组: 一、编程题(每题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[i]>0)(*zs)++; if(aa[i]<0) (*fs)++; if(aa[i]==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> _____ ①__ ___ void main() { 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[i] !=’\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、编写程序。计算 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[i][j]; if(i+j==2) s2=s2+a[i][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]=i*2; for(i=4;i>=0;i--) printf(“%5d”,s[i]); printf(“\n”); }
|