关于一个C语言结构体问题

2024-12-12 22:48:23
推荐回答(4个)
回答1:

#include

void main()
{
int i=0;
//int n=0; 没用
float a[3]={0}; //float a[10]={0};
//float t=0; 没用
struct student {
int num;
char name[6];
float score[3];
float ave; //新增数据成员
}stu[10];

//printf("请依次输入学生的学号、姓名和三科课程成绩\n"); 该句放入循环中更好
for(i=0;i<10;i++)
{
printf("请依次输入学生的学号、姓名和三科课程成绩\n"); //该句放入循环中更好
scanf("%d",&stu[i].num);
scanf("%s",stu[i].name); //scanf("%c",&stu[i].name);
scanf("%f",&stu[i].score[0]);
scanf("%f",&stu[i].score[1]);
scanf("%f",&stu[i].score[2]);
}
//要求输出3门课程的总平均成绩 A学科的总平均成绩应该是:A学科n个学生的总成绩/n
for(i=0; i<3; i++) //for(i=0;i<10;i++)
{
//在这之前必须将a[i] 里的值清0 我在定义的时候初始化为0了 float a[10]={0};
//a[i]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
a[0] += stu[i].score[0];
}
for(i=0; i<3; i++)
{
a[1] += stu[i].score[1];
}
for(i=0; i<3; i++)
{
a[2] += stu[i].score[2];
}
/*
t=a[0];
for(i=1;i<10;i++)
{
if(t {
t=a[i];
n=i;
}
printf("各个学生的平均成绩依次是:\n");
for(i=0;i<10;i++)
{
printf("%f\n",a[i]);
}
printf("最高分的学生数据如下:%d %c %f %f %f %f",stu[n].num,stu[n].name,stu[n].score[0],stu[n].score[1],stu[n].score[2],a[n]);
}
*/
//以上这段看不懂, 我改变一下
//求得十个学生的平均成绩 存入成员变量 ave 中
for(i=0; i<10; i++)
{
stu[i].ave = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2])/3;
}
//输出十个学生的信息
for(i=0; i<10; i++)
{
printf("ID: %d, 姓名: %s, ", stu[i].num, stu[i].name);
printf("A科成绩: %0.1f, B科成绩: %0.1f, C科成绩: %0.1f, ",
stu[i].score[0], stu[i].score[1], stu[i].score[2]);
printf("该生平均成绩: %0.1f\n", stu[i].ave);
}
}

回答2:

scanf("%c",&stu[i].name);-> scanf("%s",&stu[i].name);
printf("最高分的学生数据如下:%d %c %f %f %f %f",stu[n].num,stu[n].name,stu[n].score[0],stu[n].score[1],stu[n].score[2],a[n]);
->

printf("最高分的学生数据如下:%d %s %f %f %f %f",stu[n].num,stu[n].name,stu[n].score[0],stu[n].score[1],stu[n].score[2],a[n]);

回答3:

scanf("%c",&stu[i].name); ->scanf("%s",stu[i].name);

回答4:

看得我眼晕,你把东西都堆在一块让人怎么看呀?