问题:设定一名学生的基本信息包括学号,姓名,数学成绩,英语成绩。现要求你用结构体构 建一个学生的信息库,信息由键盘输入,至少能同时输入五个人的信息。输出学生信息。为什么打印不出来啊,求解答

CSDN问答 2021-12-30 02:53:32 阅读数:840

学生 问题 设定 一名 名学

typedef struct Stu
{
char name[20];
unsigned long long ID;
int Math;
int English;
int pj;//pj为数学和英语地平均值
}Stu;
int main()
{
int i;
Stu student[5];
printf("请输入学生信息:");
for (i = 0; i < 5; i++)
{
scanf_s("%s %llu %d %d", &student[i].name, &student[i].ID,&student[i].Math,&student[i].English);
student[i].pj = (student[i].English + student[i].Math)/2;
}
for (i = 1; i <= 5; i++)
{
printf("第%d名同学信息:名字:%s 学号:%llu 数:%d 英:%d 平均:%d",i, student[i].name, student[i].ID, student[i].Math, student[i].English,student[i].pj);
}
return 0;
}




采纳答案:

&student[i].name,
改成
student[i].name,
别的地方也有问题,改了下

img

#include <stdio.h>typedef struct Stu{ char name[20]; long long ID; int Math; int English; int pj;//pj为数学和英语地平均值} Stu;int main(){ int i; Stu student[5]; printf("请输入学生信息:"); for (i = 0; i < 5; i++) { scanf("%s %lld %d %d", student[i].name, &student[i].ID,&student[i].Math,&student[i].English); student[i].pj = (student[i].English + student[i].Math)/2; } for (i = 0; i < 5; i++) { printf("第%d名同学信息:\n名字:%s 学号:%lld 数:%d 英:%d 平均:%d\n",i+1, student[i].name, student[i].ID, student[i].Math, student[i].English,student[i].pj); } return 0;}


其他答案2:

(1)scnaf_s中,student[i].name前面的&不需要
(2)printf中,除第一个i外,其它i都改成i-1,否则数组越界。代码修改如下:

#include <stdio.h>typedef struct Stu{ char name[20]; unsigned long long ID; int Math; int English; int pj;//pj为数学和英语地平均值}Stu;int main(){ int i; Stu student[5]; printf("请输入学生信息:"); for (i = 0; i < 5; i++) { scanf_s("%s %llu %d %d", student[i].name, &student[i].ID,&student[i].Math,&student[i].English); student[i].pj = (student[i].English + student[i].Math)/2; } for (i = 1; i <= 5; i++) { printf("第%d名同学信息:名字:%s 学号:%llu 数:%d 英:%d 平均:%d\n",i, student[i-1].name, student[i-1].ID, student[i-1].Math, student[i-1].English,student[i-1].pj); } return 0;}
版权声明:本文为[CSDN问答]所创,转载请带上原文链接,感谢。 https://ask.csdn.net/questions/7619283