c语言:结构体:有3个学生,每个学生的数据包括学号、姓名、3门课的成绩,要求输出3门课总平均成绩

有3个学生,每个学生的数据包括学号、姓名、3门课的成绩,要求输出3门课总平均成绩
输出的学号与输入的不同是怎么回事呢?
#include<stdio.h>
struct student
{
char number[3];
char name[20];
float score[3];
float aver;
};
int main()
{

struct student stu[3];
int i,max;
printf("请输入三位学生的学号、姓名、3门课的成绩:\n");
for(i=0;i<3;i++)
{
scanf("%s%s%f%f%f",stu[i].number,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
}
printf("学号 姓名 c语言 高数 英语 平均\n");
for(i=0;i<3;i++)
{
printf("%-5s %-5s %-6.2f %-6.2f %-6.2f %-6.2f\n",stu[i].number,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver);
}
}
输出的学号与输入的不同是怎么回事呢?

定义了char number[3],所以只保存前三个字符,而你printf时却要输出6个,就连名字那前三个字符也输出了。比如第一个信息,学号只存成了B13,后面写的没有存入,姓名存了SDF,因为name跟在number之后,所以你在输出六个字符,就成了B13SDF
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答