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
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网