国家二级C语言机试(操作题)模拟试卷709(题后含答案及解析)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

国家二级C语言机试(操作题)模拟试卷709(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题
程序填空题
1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。

函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。

例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、’’ZhangQi’’、93、85,87,修改后输出t中的数:据应为:10004、’’LiLie’’、93、85、87。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<string.h>3 struct student {4 long sno;5 char name[10];6 float score[3];7 };8 void fun(struct student *b)9 {10 /**********found**********/11 b__1__=10004;12 /**********found**********/13 strcpy(b___2__,’’LiJie’’);14 }15 main( )16 {struct student t={10002,’’ZhangQi’’,93,85,87};17 int i;
18 printf(‘‘\n\nThe original data:\n’’);19 printf(‘‘\nNo:%1d Name:%s\nScores:’’,t.sno,t.name);20 for(i=0;i<3;i++)printf(‘‘%6.2f’’,t.score[i]);
21 printf(‘‘\n’’);22 /**********found**********/23 fun(__3__);24 printf(‘‘\nThe data after modified:\n’’);25 printf(‘‘\nNo:%1d Name:%s \nScores:’’,t.sno,t.name);26 for(i=0;i<3;i++)printf(‘‘%6.2f’’,t.score[i]);
27 printf(‘‘\n’’);28 }
正确答案:(1)->sno(2)->name(3)&t
解析:函数fun的功能是对形参b所指结构体变量中的数据进行修改。

第一空:“b__1___=10004;”等号右边是整型值,故这里是修改结构体成员sno的值,b是结构体指针,访问结构体数据成员时使用“->”运算符,因此,第一空为“b->sno”。

第二空:”strcpy(b__2___,’’LiJie’’);”,strcpy是字符串拷贝函数,因此,这里是修改结构体的name成员值,故第二空处为“b->name”。

第三空:fun函数的定义形式是:void fun(structstudent *b),可知fun的参数是指针,因此,主函数内调用fun函数时传入的参数是结构体t的地址,故第三空处为“&t”。

程序修改题
2.给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。

求平方根的迭代公式如下:例如,a为2时,平方根值为:1.414214。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

1 #include<stdio.h>2 #include <math.h>3 /**********found**********/4 double fun(double a,dounle x0)5 {double x1,y;6 x1=(x0+a/x0)/2.0;7 /
**********found**********/8 if(fabs(x1-x0)>0.00001)9 y=fun(a,x1);
10 else y=xl;11 return y;12 }13 main( )14 { double x;15 printf(‘‘Enter x:’’);scanf(‘‘%1f’’,&x);16 printf(‘‘The square root of%1f is%1f\n’’,x,fun(x,1.0));17 }
正确答案:(1)double fun(double a,double x0)(2)if(fabs(x1-x0)>0.00001) 解析:函数的功能是应用递归算法求某数a的平方根。

(1)主函数中“fun(x,1.0)”,x是double型变量,1.0是浮点数,可知fun有两个double型参数,而第一标识下“dounle”不是C语言关键字,所以应将“double fun(doublea,dounle x0)”改为“double fun(doublea,double x0)”。

(2)第二个标识下的if语句是判断进行递归运算的条件,第二标识下变量x0没有定义,根据题意,这里是判断x1和x0的差值的绝对值是否比O.00001大,所以第二个标识下“if(fabs(x1-x0)>0.00001)”改为“if(fabs(x1-x0)>0.00001)”。

程序设计题
3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

注意:部分源程序在文件PROG1.C文件中。

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

1 #include<stdio.h>2 #define N 123 typedef struct4 { char num[10];5 double s;6 } STREC;7 double fun(STREC *a,STREC *b,int *n)8 {9 }10 main( )11 {STREC s[N]={{‘‘GA05”,85{,{‘‘GA03”,76},{‘‘GA02’’,69},{‘‘GA04’’,85},{‘‘GA01’’,91},{‘‘GA07’’,72},{‘‘GA08’’,64},(‘‘GA06’’,87},{‘‘GA09’’,60},{‘‘GA11’’,79},{‘‘GAl2’’,73},{‘‘GAl0’’,90}};12 STREC h[N],t;FILE *out;13 int i,j,n;double ave;14 ave=fun(s,h,&n);15 printf(‘‘The %d student data which is higher than%7.3f:\n’’,n,ave);16 for(i=0;i<n;i++)17 printf(‘‘%s %4.1f\n’’,h[i].num,h[i].s);18 printf(‘‘\n’’);19 out=fopen(‘‘out.dat’’,’’w’’);20 fprintf(out,’’%d\n%7.3f \n’’,n,ave);21 for(i=0;i<n-1;i++)22 for(j=i+1;j<n;j++)23 if(h[i].s <h[j].s){t=h[i];h[i]=h[j]; h[j]=t;}24 for(i=0;i<n;i++)25 fprintf(out,’’%4.1f\n’’,h[i].s);26 fclose(out);}
正确答案:1 double t=0;2 int i;3 *n=0;4 for(i=0;i<N;i++)t=t+a[i].s;
5 t=t/N;
6 for (i=0; i<N;i+-b)if(a[i].s>t)b[(*n)++]=a[i];
7 return t;
解析:该程序功能是把高于或等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数返回值返回。

解题过程首先求得平均分,然后将所有成绩与平均分进行比较,如果大于或等于平均分,存入指定数组。

相关文档
最新文档