问题 填空题

给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun()的功能是将该学生的各科成绩都乘以一个系数a。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include<stdio.h>
typedef struct
int num;
char name[9];
float score[3];
STU;
void show(STU tt)
int i;
pfintf("%d %s:",tt.num,tt.name);
for(i=0;i<3;i++)
printf("%5.1f",tt.score[i]);
printf("\n");

/**********found**********/
void modify( (1) *ss,float a)
int i;
for(i=0;i<3;i++)
/**********found**********/
ss-> (2) *=a;

main()
STU std=1,"Zhanghua",76.5,78.0,82.0);
float a;
printf("\aThe original number and name and scores:\a");
show(std);
printf("\aInput a number:");scanf("%f",&a);
/**********found**********/
modify( (3) ,a);
printf("\nA result of modifying:\n");
show(std);

答案

参考答案:(1)STU (2)score[i] (3)&std

解析: fun()函数的功能是将该学生的各科成绩都乘以一个系数a。在fun()函数体内,利用了循环对每科成绩都乘以系数a。
第一空:由“void modify( (1) *ss,float a)”可知,函数的第一个参数是个指针;同时,函数必须完成结构体各科成绩数据成员都乘以一个系数a,因此传入的参数是结构体指针,即第一空处应为“void modify(STU*ss,float a)”。
第二空:对结构体各科成绩数据成员都乘以一个系数a,因此第二空处应为“ss->score[i]*=a;”。
第三空:modifly函数的第一个参数是指针,故调用该函数时第一个参数应该是变量std的地址“&std”。
[考点] 结构体,指针。

单项选择题
问答题