问题描述
- 我这代码怎么运行出这样的结果?
-
计算机代码编程培训">
解决方案
问题应该出在printstudent函数的传递参数i上,我在visual c++上测试了一下,如果是将结构体数据直接赋值的话,输出没有问题:
struct Student {
char name[20];
int age;
struct Score score;
}stu[2]= {"hkx",20,{95,92,90},"zl",19,{99,98,97}};
但是如果是在该输出函数之后(比如在main函数中)再行赋值,就会输出0结果。
究其原因,应当是传递参数i时,不能将结构体的值直接传递。
但是细查之下,我也不是太清楚。建议题主将传递参数改为结构体本身。
解决方案二:
阅读代码,写出运行结果
解决方案三:
考虑做如下改动:
第一,printstudent(i)函数一行语句改为:
Student *p = &stu[i];
printstudent(p);
然后,将printstudent函数改写成类似如下语句:
void printstu(Student *p) {
printf("%s %d %f %f %f ",p->name,p->age,p->score.english,p->score.math,p->score.yuwen);
}
即可输出正确结果。
解决方案四:
至于为什么年龄分数就没数据,其他字符串之类的有数据,我也不太清楚,不好意思啦~
时间: 2025-01-20 22:59:22