问答题 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。 例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、"ZhangQi"、93、85、87,修改后输出t中的数据应为:10004、"Lijie"、93、85、87。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #include struct student { long sno; char name [10] ; float score [3]; }; void fun (struct student *b) { /**********found**********/ b ____1____ =10004; /**********found**********/ strcpy (b____2____, "Lijie") ; main () { struct student t={10002, "ZhangQi",93,85,87} ; int i; printf ("/n/nThe original data:/nf') ; printf("/nNo: %ld Name: %s/nScores: ",t.sno, t.name) ; for (i=0; i<3; 1++) printf ( " %6 . 2 f printf ("/n") ; /**********found**********/ fun (____3____ ) f printf("/nThe data after modified: printf("/nNo: oold Name: %s/nScores: ",t.sno, t.name) ; for (i=0; i<3f i++) printf("%6.2f printf ("/n") ; }
【正确答案】正确答案:(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”。