注册 登录
编程论坛 C++教室

解决一个关于结构体的问题

宇智波曌 发布于 2011-05-24 23:15, 339 次点击
程序代码:
#include <stdio.h>
struct student
{

 char num[10];

 char name[10];

 float score[4];
};
void main()
{
    struct student stu[5]={
    {"201060001","Zhao",85,86,88},
    {"201060002","Qian",87,88,89},
    {"201060003","Sun", 91,92,93},
    {"201060004","Li",  92,91,93},
    {"201060005","Wang",94,95,99}};
    int i;
    float max=0;
    printf("==========================================\n");
    printf("   Num       Name        Ave\n");
    for(i=0;i<5;i++)
    {stu[i].score[3]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
    printf("%s    %s     %5.1f\n",
        stu[i].num,stu[i].name,stu[i].score[3]);}
    for(i=0;i<4;i++)
    {
     if(stu[i].score[3]<stu[i++].score[3])
         max=stu[i++].score;i++;
     printf("   Num   Name    score1  score2  score3  Ave\n");
     printf("%s    %s     %5.1f  %5.1f  %5.1f   %5.1f\n",
         stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);

    }
    printf("==========================================\n");
}
我想将最高平均分输出,并输出对应的学号、姓名及三门课程,请问这个程序怎么改正啊!

[ 本帖最后由 宇智波曌 于 2011-5-24 23:17 编辑 ]
3 回复
#2
Toomj2011-05-25 10:17
if(stu[i].score[3]<stu[i++].score[3])
         max=stu[i++].score;i++;

改为:if(stu[i].score[3]>max)
        {max=stu[i].score[3];int t=i;}
然后输出第t位学生的各项就好了
#3
Pirelo2011-05-25 10:17
"max=stu[i++].score;i++;"=>"max=stu[i++].score[3];i++;"
楼主既然把各个成员的平均分的算出来了,何愁找不到平均分最大的那个?
要不你就在最后加一个对max的判断,找出最大平均分对应的成员:
for(i=0;i<4;i++)
    {
        if(stu[i].score[3]==max)
        /*条件成立,就打印对应的stu[i]各个数据成员*/
      
    }
#4
宇智波曌2011-05-25 22:42
还是输不出啊!
1