程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量S中的数据进行修改,并把a中的地址作为函数值返回到主函数,在主函数中输出修改后的数据。
例如,a所指变量s中的学号、姓名和3门课的成绩依次是:10001、"ZhangSan"、95、80、88,修改后输出t中的数据应为:10002、"LiSi"、96、81、89。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构。
文件BLANK1.C内容如下:
#include<stdio.h>
#include<string.h>
struct student
long sno;
char name[10];
float score[3];
;
/**********found**********/
(1) fun(struct student *a)
int i;
a->sno=10002:
strepy(a->name,"LiSi");
/**********found**********/
for(i=0;i<3;i++) (2) +=1;
/**********found**********/
return (3) ;
void main( )
struct student s=10001,"ZhangSan",95,80,88, *t;
int i;
printf("in\nThe original data: in");
printf("\nNo: %1d Name: %s\nScores: ",s.sno,s.name);
for(i=0;i<3;i++) printf("%6.2f",s.score[i]);
printf("\n"):
t=fun(&s);
printf("\nThe data after modified:\n");
printf("\nNo: %1d Name: %s\nScores: ",t->sno,t->name);
for(i=0;i<3;i++)
printf("%6.2f",t->score[i]);
printf("\n");
参考答案:a
解析: 函数fun的形参是一个结构体指针变量a,通过该指针改变它指向的结构体变量的值。由于函数返回的是a中存放的地址,所以第1空处应该填入struct student*。程序中的结构体类型有3个成员,sno是整型变量,所以a->sno通过赋值运算直接进行赋值;name是一个字符数组,对字符数组进行赋值可以通过strcpy函数完成;score是一个实型数组,其中存放了3个数据,要对每个数据进行加1的操作只有通过循环,而该数组是结构体的一个成员,因此对该数组元素的正确书写方式为a->score[i],所以第2空处应填入a->score[i]。最后,根据题目要求应该返回a的值,所以第3空处直接填入指针变量a即可。