计算机等级考试二级C语言内部教材
#include
/**********found**********/
__1__ fun(struct student *a) struct student * { int i; a->sno = 10002;
strcpy(a->name, \/**********found**********/
for (i=0; i<3; i++) __2__ += 1; a->score[i] /**********found**********/
return __3__ ; a } main()
{ struct student s={10001,\int i;
printf(\
printf(\for (i=0; i<3; i++) printf(\printf(\t = fun(&s);
printf(\
printf(\for (i=0; i<3; i++) printf(\printf(\}
解题思路:
本题是利用形参对结构体变量中的值进行修改并通过地址把函数值返回。 第一处:必须定义结构指针返回类型,所以应填:struct student *。 第二处:分别对成绩增加1分,所以应填:a->score[i]。 第三处:返回结构指针a,所以应填:a。
第20套
给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000 移动后的输出为:30 6 17 15 26 46 32 40 45 48
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include
21
计算机等级考试二级C语言内部教材
#include
double fun(double *x) { int i, j; double av, y[N]; av=0;
/**********found**********/
for(i=0; i
y[j]=x[i]; x[i]=-1; __2__;} j++ i=0; while(i { if( x[i]!= -1 ) y[j++]=x[i]; /**********found**********/ __3__; 1 } for(i=0; i { int i; double x[N]; for(i=0; i printf(\printf(\for(i=0; i 解题思路: 第一处:求出N个数的平均值,所以应填:N。 第二处:利用for循环语句,把数组x中小于平均值的数,依次存放到数组y中,其中位置由 变量j来控制,所以应填:j++。 第三处:i是while循环体的控制变量,每做一次循环均要加1。 第21套 给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000 移动后的输出为:46 32 40 45 48 30 6 17 15 26 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include 22 计算机等级考试二级C语言内部教材 #include double fun(double *x) { int i, j; double s, av, y[N]; s=0; for(i=0; i for(i=j=0; i /**********found**********/ y[__2__]=x[i]; x[i]=-1;} j++ for(i=0; i /**********found**********/ if( x[i]!= __3__) y[j++]=x[i]; -1 for(i=0; i { int i; double x[N]; for(i=0; i printf(\printf(\for(i=0; i 解题思路: 第一处:计算N个数的平均值,所以应填:s/N。 第二处:利用for循环语句,把数组x中大于平均值的数,依次存放到数组y中,同时把数组 x上的该数置为-1,其中位置由变量j来控制,所以应填:j++。 第三处:再利用循环把不是-1的数,依次仍存放到数组y中,所以应填:-1。 第22套 给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include { FILE *fp; int i,n; float x; if((fp=fopen(fname, \for(i=1;i<=10;i++) 23 计算机等级考试二级C语言内部教材 /**********found**********/ fprintf(___1___,\printf(\!\\n\/**********found**********/ ___2___; fclose(fp) printf(\/**********found**********/ if((fp=fopen(___3___,\return 0; fscanf(fp,\while(!feof(fp)) { printf(\fclose(fp); return 1; } main() { char fname[]=\fun(fname); } 解题思路: 本题要求所求出的数写入到指定的文件中保存。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。 第一处:int fprintf(FILE *stream, const char *format [,argument, ?]); 因此本处只能填写文件流的变量fp。 第二处:由于文件打开写操作,所以必须要关闭,因此,只能填写关闭文件的函数fclose(fp)。 第三处:由于本题要把刚写入文件中的数据重新显示出来,读方式已经给出,但没有给出文件名,所以本处只能写文件名变量fname或者直接给出文件名\。 第23套 给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun(int (*a)[N], int *b) { int i,j; for(i=0; i b[i]= __1__; a[0][i] for(j=1; j /**********found**********/ if(b[i] __2__ a[j][i]) b[i]=a[j][i]; < } 24 计算机等级考试二级C语言内部教材 } main() { int x[N][N]={ {12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3} },y[N],i,j; printf(\for(i=0;i { for(j=0;j /**********found**********/ fun(__3__); x,y printf(\ for(i=0; i 解题思路: 第一处:把每列的第1值赋值给b[i],所以应填:a[0][i]。 第二处:如果b[i]值小于a[j][i]的值,则把a[j][i]重新赋值给b[i]中,保存最大的值,所以应填:<。 第三处:在主函数中,x是存放矩阵数据,y是存放每列的最大值,所以应填:x,y。 第24套 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。 例如:传给形参a的数据中,学号、姓名、和三门课的成绩依次是:10001、\、95、80、88,修改后的数据应为:10002、\、96、81、89。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include /**********found**********/ __1__ fun(struct student a) struct student { int i; a.sno = 10002; /**********found**********/ strcpy(__2__, \/**********found**********/ for (i=0; i<3; i++) __3__+= 1; a.score[i] return a; } main() 25