有n个学生,每个学生的数据包括学号、姓名和3门课的成绩,用键盘输入n个学生的数据

有n个学生,每个学生的数据包括学号、姓名和3门课的成绩,用键盘输入n个学生的数据,要求打印出每个学生3门课的平均成绩,以及最高分的学生的数据(学号、姓名、3门课的成绩和平均分数)
#include<stdio.h>
#define MAX 100
struct Student
{
char name[20];
int number;
int s[3];
int average;
};struct Student stu[MAX];
int main()
{
int n,i,j,m,max;
printf("请输入人数:");
scanf("%d",&n);
printf("请依次输入每个学生的姓名、学号、及三门课成绩:\n");
for(i=0;i<n;i++)
{
printf("请输入第%d人的数据:\n",i+1);
scanf("%s%d",stu[i].name,&stu[i].number);
for(j=0;j<3;j++)
scanf("%d",stu[i].s[j]);
printf("/n");
}
for(i=0;i<n;i++)
{
printf("%s%d",stu[i].name,stu[i].number);
for(j=0;j<3;j++)
printf("%d",stu[i].s[j]);
printf("\n");
}
for(i=0;i<n;i++)
{
stu[i].average=0;
for(j=0;j<3;j++)
stu[i].average+=stu[i].s[j];
stu[i].average=stu[i].average/3;
}
max=stu[0].average=0;
for(i=0;i<n;i++)
if(stu[i].average>max)
{
max=stu[i].average;
m=i;
}
printf("平均分最高同学数据:\n");
printf("%s%d%d%d%d%d%d",stu[i].name,stu[i].number,stu[i].s[1],stu[i].s[2],stu[i].s[3],stu[i].average);
return 0;
}
大家看一下为什么我输入了第一个学生的数据之后,按回车没法输入接下来的呢?

已帮你改好

#include<stdio.h>
#define MAX 100
struct Student
{
char name[20];
int number;
int s[3];
int average;
};struct Student stu[MAX];
int main()
{
int n,i,j,m,max;
printf("请输入人数:");
scanf("%d",&n);
printf("请依次输入每个学生的姓名、学号、及三门课成绩:\n");
for(i=0;i<n;i++)
{
printf("请输入第%d人的数据:\n",i+1);
scanf("%s%d",stu[i].name,&stu[i].number);
for(j=0;j<3;j++)
scanf("%d",&stu[i].s[j]);//========================这里加个&
printf("/n");
}
for(i=0;i<n;i++)
{
printf("%s%d",stu[i].name,stu[i].number);
for(j=0;j<3;j++)
printf("%d",stu[i].s[j]);
printf("\n");
}
for(i=0;i<n;i++)
{
stu[i].average=0;
for(j=0;j<3;j++)
stu[i].average+=stu[i].s[j];
stu[i].average=stu[i].average/3;
}
max=stu[0].average=0;
for(i=0;i<n;i++)
if(stu[i].average>max)
{
max=stu[i].average;
m=i;
}
printf("平均分最高同学数据:\n");
printf("%s%d%d%d%d%d%d",stu[i].name,stu[i].number,stu[i].s[1],stu[i].s[2],stu[i].s[3],stu[i].average);
return 0;
}
希望回答能帮到你,望采纳!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-12

#include<stdio.h>

#define MAX 100

struct Student

{

char name[20];

int num;

int score[3];

}boy1,boy2;

int main()

{

int n,i,x=0,y=0,z=0;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

scanf("%d%s%d%d%d",&boy1.num,&boy1.name,&boy1.score[0],&boy1.score[1],&boy1.score[2]);

if(boy1.score[0]+boy1.score[1]+boy1.score[2]>boy2.score[0]+boy2.score[1]+boy2.score[2]||i==1)

    boy2=boy1;

x+=boy1.score[0];

y+=boy1.score[1];

z+=boy1.score[2];

}

printf("%d %d %d\n%d %s %d %d %d",x/n,y/n,z/n,boy2.num,boy2.name,boy2.score[0],boy2.score[1],boy2.score[2]);

return 0;

}


本回答被网友采纳
第2个回答  推荐于2018-02-23
#include<stdio.h>
#define MAX 100
struct Student
{
char name[20];
int number;
float s[3];
float average;
char c[20];
};struct Student stu[MAX];
int main()
{
int n,i,j,m,max;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%d",stu[i].name,stu[i].c,&stu[i].number);
for(j=0;j<3;j++)
scanf("%f",&stu[i].s[j]);
}
for(i=0;i<n;i++)
{
stu[i].average=0;
for(j=0;j<3;j++)
stu[i].average+=stu[i].s[j];
stu[i].average=stu[i].average/3;
}
for(i=0;i<n;i++)
{
printf("%s %.1f",stu[i].name,stu[i].average);
printf("\n");
}
for(i=0;i<n;i++)
{
stu[i].average=0;
for(j=0;j<3;j++)
stu[i].average+=stu[i].s[j];
stu[i].average=stu[i].average/3;
}
max=stu[0].average=0;
for(i=0;i<n;i++)
if(stu[i].average>max)
{
max=stu[i].average;
m=i;
}
printf("%d %s %s %.1f %.1f %.1f %.1f\n",stu[m].number,stu[m].c,stu[m].name,stu[m].s[0],stu[m].s[1],stu[m].s[2],stu[m].average);
return 0;
}本回答被网友采纳
相似回答