国家二级C语言机试(操作题)模拟试卷828
程序填空题
1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。
例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、\\
(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(struct student*b),可知fun的参数是指针,因此,主函数内调用fun函数时传入的参数是结构体t的地址,故第三空处为“&t”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:
(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(double a,dounlex0)”改为“doublefun(double a,doublex0)”。
(2)第二个标识下的if语句是判断进行递归运算的条件,第二标识下变量xo没有定义,根据题意,这里是判断x1和x0的差值的绝对值是否比0.00001大,所以第二个标识下“if(fabs(x1-xo)>0.00001)”改为“if(fabs(x1-x0)>0.0000])”。
程序设计题
3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#define N 12
typedef struct
{ char num[10];
double s;
}STREC;
double fun(STREC*a,STREC*b,int*n)
{
}
main()
{STREC s[N]={{\\
double t=0;
int i;
*n=0;
for(2=0;i<N;i++)t=t+a[i].s;
t=t/N;
for(i=0;i<N;i++) if(a[i].s>t)b [(*n)++]=a[i];
return t;
解析:该程序功能是把高于或等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数返回值返回。解题过程首先求得平均分,然后将所有成绩与平均分进行比较,如果大于或等于平均分,存入指定数组。
本文档预览:3600字符,共1931字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载