二级C语言机试(操作题)2018年3月真题汇编1及答案解析

二级C语言机试(操作题)2018年3月真题汇编1及答案解析

(1/1)程序填空题 第1题

使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。函数fun根据所给n名学生的成绩,计算出所有学生的平均成绩,把高于平均成绩的学生成绩求平均值并返回。

例如,若有成绩为:50,60,70,80,90,100,55,65,75,85,95,99,则运行结果应为:91.5

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在文件BLANK1.C中,不得增行或删行,也不得更改程序的结构! #include<stdio.h>

#pragrna warnirig(disable:4996) double fun(double x[],int n) {int i,k=0;

double avg=0.0,sum=0.0; for(i=0;i<n;i++) avg+=x[i];

/*********found*********/ avg/=【1】;

for(i=0;i<n;i++) if(x[i]>avg) {

/*********found*********/ 【2】+=x[i]; k++; }

/*********found*********/ return【3】; }

main()

{double score[12]={50,60,70,80,90,100,55,65,75,85,95,99}; double aa;

aa=fun(score,12); printf(\%f\n\,aa); }

_______

下一题

(1/1)程序改错题 第2题

使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。函数fun将字符串s1和s2交叉合并形成新字符串s3,合并方法为:先

取s1的第1个字符存入s3,再取s2的第1个字符存入s3,以后依次类推;若s1和s2的长度不等时,较长字符串多出的字符顺序放在新生成的s3后。 例如,当s1为:\,s2为:\时, 输出结果应该是:1a263c4d5e6t7g8h9ijk

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include<stdio.h> #include<string.h>

#pragma warning(disable:4996) void fun(char*s1,char*s2, char*s3) {int i,j;

/*********found*********/

for(i=0,j=0;(s1[i]!=′\0′)&&(s2[i]!=′\0′);i++,j=j+1) {s3[j]=s1[i]; s3[j+1]=s2[i]; }

if(s2[i]!=′\0′)

(for(;s2[i]!=′\0′;i++, j++)

/*********found*********/ s3[i]=s2[j]; }

else if(sl[i]!=′\0′)

(for(;s1[i]!=′\0′;i++,j++) s3[j]=s1[i]; )

/*********found*********/ s3[j﹣1]=′\0′; }

void main()

{char s1[128],s2[128],s3[255]; printf(\:\; gets(s1);

printf(\:\; gets(s2);

fun(s1,s2,s3);

printf(\:%s\n\,s3); }

_______

上一题 下一题 (1/1)程序设计题

第3题

使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。请编写函数fun,其功能是:求n(n<10000)以内的所有四叶玫瑰数并逐个存放到result所指的数组中,四叶玫瑰数的个数作为函数值返回。

如果一个4位正整数等于其各个数字的4次方之和,则称该数为四叶玫瑰数。

例如,1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4,因此1634就是一个四叶玫瑰数。 注意:部分源程序存在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include<stdio.h>

{fpragrna warning(disable:4996) int fun(int n,int result[]) { }

main() {

int result[10],n,i; void NONO(int result[], int n);

n=fun(9999,result); for(i=0,i<n;i++)

printf(\%d\n\,result[i]); NONO(Eesult,n); }

void NONO(int result[],int n)

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE*fp; int i;

fp=fopen(\.dat\,\; fprintf(fp,\%d\n\,n); for(i=0;i<n;i++)

fprintf(fp,\%d\n\,result[i]); fclose(fp); }

_______

上一题 交卷 交卷 答题卡 答案及解析 (1/1)程序填空题 第1题

使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程

序文件blank1.c。函数fun根据所给n名学生的成绩,计算出所有学生的平均成绩,把高于平均成绩的学生成绩求平均值并返回。

例如,若有成绩为:50,60,70,80,90,100,55,65,75,85,95,99,则运行结果应为:91.5

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在文件BLANK1.C中,不得增行或删行,也不得更改程序的结构! #include<stdio.h>

#pragrna warnirig(disable:4996) double fun(double x[],int n) {int i,k=0;

double avg=0.0,sum=0.0; for(i=0;i<n;i++) avg+=x[i];

/*********found*********/ avg/=【1】;

for(i=0;i<n;i++) if(x[i]>avg) {

/*********found*********/ 【2】+=x[i]; k++; }

/*********found*********/ return【3】; }

main()

{double score[12]={50,60,70,80,90,100,55,65,75,85,95,99}; double aa;

aa=fun(score,12); printf(\%f\n\,aa); }

_______

参考答案: (1)n (2)sum (3)sum/k

详细解答: 填空1:fun()函数有两个参数,第一个为数组x,第二个为数组元素个数n,首先利用第一个for循环将传入的所有数组元素加起来存入变量avg中,因为求的是平均值,所以需要除以元素个数,所以该空填数组元素个数n。答案为n。

填空2:第二个for循环将数组中每个元素值与平均成绩进行比较,把高于平均值的元素值加起来以便后期求其平均,此时需要一个变量用来存放高于平均成绩的元素总和,所以该空填sum。答案为sum。

填空3:变量k的作用为统计高于平均成绩的元素个数,因为题目要求把高于平均成绩的学

生成绩求平均值并返回,所以用高于平均成绩的分数总数除以元素个数,所以该空填sum/k。答案为sum/k。 下一题

(1/1)程序改错题 第2题

使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。函数fun将字符串s1和s2交叉合并形成新字符串s3,合并方法为:先取s1的第1个字符存入s3,再取s2的第1个字符存入s3,以后依次类推;若s1和s2的长度不等时,较长字符串多出的字符顺序放在新生成的s3后。 例如,当s1为:\,s2为:\时, 输出结果应该是:1a263c4d5e6t7g8h9ijk

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include<stdio.h> #include<string.h>

#pragma warning(disable:4996) void fun(char*s1,char*s2, char*s3) {int i,j;

/*********found*********/

for(i=0,j=0;(s1[i]!=′\0′)&&(s2[i]!=′\0′);i++,j=j+1) {s3[j]=s1[i]; s3[j+1]=s2[i]; }

if(s2[i]!=′\0′)

(for(;s2[i]!=′\0′;i++, j++)

/*********found*********/ s3[i]=s2[j]; }

else if(sl[i]!=′\0′)

(for(;s1[i]!=′\0′;i++,j++) s3[j]=s1[i]; )

/*********found*********/ s3[j﹣1]=′\0′; }

void main()

{char s1[128],s2[128],s3[255]; printf(\:\; gets(s1);

printf(\:\; gets(s2);

fun(s1,s2,s3);

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4