结构体问题有待大家处理
有10个学生,每个学生数据包括学号、姓名及3门课的成绩、总成绩和平均成绩,从键盘输入10个学生的数据(包括学号、姓名及3门课的成绩),要求打印出每位学生的学号、姓名及3门课的成绩、总成绩和平均成绩,最后在打印出3门课的总平均成绩以及最高分学生的数据(包括姓名和总成绩)。要求:(1)根据学生信息定义一个结构体类型,在说明一个该结构体类型的数组。
(2)用input函数从键盘上输入10个学生的数据;
(3)用average函数求出每个学生的总成绩、平均成绩和所有学生的总平均成绩;
(4)用maximum函数找出最高分的学生数据;
(5)在主函数中输出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩以及总平均分和最高分学生的数据。
输出形式如下:
NO. name score1 score2 score3 total average
101 wang 80 79 81 240 80.00
102 li 91 90 89 270 90.00
The highest score:li,score total:270
[[italic] 本帖最后由 zylwzg 于 2007-12-18 08:48 编辑 [/italic]]
搜索更多相关的解决方案:
结构体
----------------解决方案--------------------------------------------------------
比较简单!!
----------------解决方案--------------------------------------------------------
是作业就先自己做,有问题再发上来,没人会闲得没事帮你做作业!
----------------解决方案--------------------------------------------------------
回复 3# 的帖子
嗯,说得有道理,我觉得楼主先自己去想一下,写一下大概的思路,或写出具体程序(哪怕有错)来,才拿出自己没有解决的问题来提问,这样比较有诚意,对LZ自己的帮助比较大,如果是单单为了完成一道作业而把题目发上来这样可是一点意思也没有的。。 人家也看不出你的诚意。。。 ----------------解决方案--------------------------------------------------------
3#说的有道理.
----------------解决方案--------------------------------------------------------
这是你们的作业吧?难么?不自己做,人家做了,你看了就会忘
----------------解决方案--------------------------------------------------------
给你们看下5分钟完成的作业 ,别整天装
#define N 2
#include<stdio.h>
struct fw
{
int num;
char name[8];
int score1;
int score2;
int score3;
float total;
float aved;
};
main()
{
struct fw student[N];
float aves,maxnum,*temp=&aves;
int i,a=1;
char *maxname;
for(i=0;i<N;i++)
{scanf("%d",&(student[i].num));
scanf("%s",&(student[i].name));
scanf("%d",&(student[i].score1));
scanf("%d",&(student[i].score2));
scanf("%d",&(student[i].score3));
}
for(i=0;i<N;i++)
{
temp=average(a,&student[i]);
student[i].total=*temp;
}
a=2;
for(i=0;i<N;i++)
{
temp=average(a,&student[i]);
student[i].aved=*temp;
}
a=3;
temp=average(a,student);
aves=*temp;
maxnum=maximum(student);
for(i=0;i<N;i++)
if(maxnum==student[i].total)
*maxname=student[i].name;
printf("NO. name score1 score2 score3 total average\n");
printf("=========================================================\n");
for(i=0;i<N;i++)
printf("%-6d%-9s%-9d%-9d%-9d%-8.0f%-7.2f\n",student[i].num,student[i].name,student[i].score1,student[i].score2,student[i].score3,student[i].total,student[i].aved);
printf("average=%-.2f\n",aves);
printf("The highest score:%s,score total:%.0f\n",*maxname,maxnum);
}
average(int a,struct fw *w)
{
int i;
float z=0.5,*fp=&z;
if(a==1)
{
*fp=(*w).score1+(*w).score2+(*w).score3;
}
if(a==2)
{
*fp=(*w).score1+(*w).score2+(*w).score3;
*fp=(*fp)/3;
}
if(a==3)
{
*fp=1;
for(i=0;i<N;i++)
*fp=*fp-1+(*(w+i)).aved;
*fp=*fp/N;
}
return(fp);
}
maximum(struct fw *y)
{
float f;
int i;
f=((*y).score1+(*y).score2+(*y).score3);
for(i=1;i<N;i++)
if(f<((*(y+i)).score1+(*(y+i)).score2+(*(y+i)).score3))
f=((*(y+i)).score1+(*(y+i)).score2+(*(y+i)).score3);
return(f);
}
谁都不是吃素的.可求你们做点事了, 我只是想看看大家的好的处理方法,我的太麻烦, 看你们把我说成什么了,真叫人生气.
----------------解决方案--------------------------------------------------------
自己做的就先发上来,再问别人有没更好的方法!
既然自己能5分钟解决,就不要浪费所有看贴人的5分钟!
没说你是吃素的,5分钟能写出来上面的那应该是高手!说的是学习的态度问题!
----------------解决方案--------------------------------------------------------
呵呵,5分钟恐怕我连字都打不完……佩服!
----------------解决方案--------------------------------------------------------
可以用 结构体指针数组 来做
----------------解决方案--------------------------------------------------------