前言
快速学习计算机二级c语言
一、题目
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。 例如:b所指变量t中的学号、姓名和三门课的成绩依次是:10002、“ZhangQi”、93.00、85.00、87.00,修改后输出t中的数据应为: 10004、“LiJie”、93.00、85.00、87.00
#include <stdio.h>
#include <string.h>
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 :\n");
printf("\nNo: %ld Name: %s\nScores: ",t.sno, t.name);
for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);
printf("\n");
/**********found**********/
fun(__3__);
printf("\nThe data after modified :\n");
printf("\nNo: %ld Name: %s\nScores: ",t.sno, t.name);
for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);
printf("\n");
getchar();
}
二、解题步骤
1.问题
- 对指针和结构体不熟悉
2.做题
b->= 10004;
?正确,指针指向学号strcpy(b->name, "LiJie");
?正确,指针指向名字fun(t);
?错误,fun函数内部*b是结构体指针,指针指向地址,所以此处要填结构体地址,所以正确答案为fun(&t);