c语言结构体循环又有问题 求大佬解决一下

2024-11-28 17:58:32
推荐回答(2个)
回答(1):

#include
#define N 3
#define M 5
typedef struct
student
{
double grade[N]; //储
}STU; //储存5名学生的结构体数组
void add_average(STU stu[],int n) //求各科平均分的函数
{
int i, j, sum;
double avg;
for(i=0; i{
sum= 0;
for(j=0; j{
sum= sum + stu[i].grade[j];
}
avg = sum*1.0/n;
printf("\n第%d科的平均成绩为:%.2f\n",i+1 ,avg);
}
}
int main() //主函数
{
int i,j;
STU st[M];
for(i=0; i{
printf("请分别输入第%d个学生的三科成绩\n", i+1);
for(j=0; j{
scanf("%lf", &st[i].grade[j]);
}
}
add_average(st,M);
return 0;
}

回答(2):

你发的程序有几处错误:

1、 int m,t;改成:int m;

2、去掉int max;这一句

3、while(m--)这一行为多余的循环,去掉本行及下一行的左花括号,相应地,最后一行的右花括号也去掉。

修改之后再经优化,最后的程序如下:

#include
struct student
{
char num[16];
char name[12];
int score[3];
int total;
};
int main()
{
struct student st[100];
int i,j,sum;
int m;
scanf("%d",&m);
getchar(); 
for(i=0;i {
scanf("%s%s",st[i].num,st[i].name);
for(j=0;j<3;j++)scanf("%d",&st[i].score[j]);
}
for(i=0;i {
sum=0;
for(j=0;j<3;j++)sum=sum+st[i].score[j];
st[i].total=sum;
}
for(i=0;i if(st[i].total>270)
{
printf("%s %s",st[i].num,st[i].name);
for(j=0;j<3;j++)printf(" %d",st[i].score[j]);
printf("\n");
}
}

已经运行过。