结构体求成绩平均分问题

whdugh 2012-10-05 07:05:56
有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生数据。
#include <stdio.h>
#define N 2
struct student
{
int num;
char name[10];
float score[3];
};
main()
{
struct student stu[10]; //结构体数组
int i,j;
float averscore[N],sum,highscore;
for(i=0;i<N;i++)
{
sum=0;
scanf("%d%s",&stu[i].num,stu[i].name);
for(j=1;j<=3;j++)
{
scanf("%f",&stu[i].score[j]);
sum+=stu[i].score[j];
}
averscore[i]=sum/3;
printf("第%d学生的3门课程总平均成绩:%f\n",stu[i].num,averscore[i]);
}
highscore=averscore[0]; //若第1名平均分为最高
for(i=1;i<N;i++) //
if(averscore[i]>highscore)
highscore=averscore[i];

printf("最高分的学生学号为%d,姓名%s,3门课程成绩%f,平均成绩%5.2f%5.2f%5.2f",
stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
}
搞了半天 不知道错哪里了 头都晕了
...全文
1007 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
whdugh 2012-10-06
  • 打赏
  • 举报
回复
谢谢了 我在看看 [Quote=引用 8 楼 的回复:]
有几个问题,我觉得
定义数组要从 0 开始 这样比较好把
还有 最高分的学号应该存储到另外一个变量中。
我QQ516668272 我也喜欢计算机,如果有兴趣的话可以互相交流

#include <stdio.h>
#define N 2
struct student
{
int num;
char name[10];
float score[3];
};
voi……
[/Quote]
whdugh 2012-10-06
  • 打赏
  • 举报
回复
我就是把 求的平均分存储在averscore数组里面 然后求数组的最大值 [Quote=引用 6 楼 的回复:]
#include <stdio.h>
#define N 2
struct student
{
int num;
char name[10];
float score[3];
};
main()
{
struct student stu[10]; //结构体数组
int i,j,flat;
float averscore[N],sum,highscore;
for(i……
[/Quote]
whdugh 2012-10-06
  • 打赏
  • 举报
回复
贴过来就成这样了 不知道怎么能让大家好看以点 [Quote=引用 7 楼 的回复:]
我也是C语言的新生,看到代码觉得有点乱,如果能缩进就好啦
[/Quote]
  • 打赏
  • 举报
回复
有几个问题,我觉得
定义数组要从 0 开始 这样比较好把
还有 最高分的学号应该存储到另外一个变量中。
我QQ516668272 我也喜欢计算机,如果有兴趣的话可以互相交流

#include <stdio.h>
#define N 2
struct student
{
int num;
char name[10];
float score[3];
};
void main()
{
struct student stu[10]; //结构体数组
int i,j,maxi;
float averscore[N],sum,highscore;
for(i=0;i<N;i++)
{
sum=0;
printf("请输入学生的学号和姓名\n");
scanf("%d%s",&stu[i].num,stu[i].name);
printf("请分别输入学生的3门成绩");
for(j=0;j<3;j++)//这行需要修改!!!!
{
scanf("%f",&stu[i].score[j]);
sum+=stu[i].score[j];
}
averscore[i]=sum/3.0;
printf("第%d学生的3门课程总平均成绩:%f\n",stu[i].num,averscore[i]);
}
highscore=averscore[0]; //若第1名平均分为最高
maxi=0;//
for(i=0;i<N;i++) //这里需要修改!!
if(averscore[i]>highscore)
{
maxi=i;//
highscore=averscore[i];
}
printf("最高分的学生学号为%d,姓名%s,3门课程成绩%f,平均成绩%5.2f%5.2f%5.2f",
stu[maxi].num,stu[maxi].name,averscore[maxi],stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2]);
}
  • 打赏
  • 举报
回复
我也是C语言的新生,看到代码觉得有点乱,如果能缩进就好啦
wCOREz 2012-10-05
  • 打赏
  • 举报
回复
#include <stdio.h>
#define N 2
struct student
{
int num;
char name[10];
float score[3];
};
main()
{
struct student stu[10]; //结构体数组
int i,j,flat;
float averscore[N],sum,highscore;
for(i=0;i<N;i++)
{
sum=0;
scanf("%d %s",&stu[i].num,stu[i].name);
for(j=1;j<=3;j++)
{
scanf(" %f",&stu[i].score[j]);
sum+=stu[i].score[j];
}
averscore[i]=sum/3;
printf("第%d学生的3门课程总平均成绩:%f\n",stu[i].num,averscore[i]);
}
highscore=0; //若第1名平均分为最高
for (i=0;i<N;i++)
{if (averscore[i]>=highscore) {highscore=averscore[i]; flat=i;}}

i=flat;

printf("最高分的学生学号为%d,姓名%s,第一门课程成绩%3.2f ,第二门课程成绩%3.2f,第三门课程成绩%3.2f,平均成绩%5.2f",
stu[i].num,stu[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],averscore[i]);
}




这是我改了以后能运行的,你的思维很混乱啊,先想好算法再写程序吧。你对比一下,改的是输入格式和最后那一段。
wCOREz 2012-10-05
  • 打赏
  • 举报
回复
highscore=averscore[0]; //若第1名平均分为最高
for(i=1;i<N;i++) //
if(averscore[i]>highscore)
highscore=averscore[i];

printf("最高分的学生学号为%d,姓名%s,3门课程成绩%f,平均成绩%5.2f%5.2f%5.2f",
stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
}

这里根部不可能得到最高分的人的I,因为i到for循环结束后就为N-1,无论如何
wCOREz 2012-10-05
  • 打赏
  • 举报
回复
for(i=0;i<N;i++)
{
sum=0;
scanf("%d%s",&stu[i].num,stu[i].name);
for(j=1;j<=3;j++)
{
scanf("%f",&stu[i].score[j]);/*我猜是这里的输入格式问题*/
sum+=stu[i].score[j];
}
averscore[i]=sum/3;
printf("第%d学生的3门课程总平均成绩:%f\n",stu[i].num,averscore[i]);
}
newtee 2012-10-05
  • 打赏
  • 举报
回复
scanf("%d,%s,%f,%f,%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu

[i].score[1],&stu[i].score[2]);
}
这样scanf 不要用2层循环
newtee 2012-10-05
  • 打赏
  • 举报
回复
把scanf和运算分开来 先把数scanf 然后求和求平均
liwenbbin 2012-10-05
  • 打赏
  • 举报
回复
我是新手刚接触C

scanf("%d%s",&stu[i].num,stu[i].name);


可能有问题,我新手,乱讲的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧