定义一个结构体,来存储N个学生的姓名,学号,性别,四门课的成绩,输出总平均成绩最高的学生的信息,这样写行吗?求指点

浅希诺1 2014-03-24 11:16:32
#include<stdio.h>
#define N 3
struct student
{
long stu_number;
char name[15];
char sex;
int score[4];
float average;
}
main()
{ int i,j;
float sum=0.0;
float max;
struct student stua[N];
printf("please input the informations of the students:\n");
for(i=0;i<N;i++)
scanf("%ld%s%c",&stua[i].stu_number,&stua[i].name,&stua[i].sex);
for(j=0;j<4;j++)
scanf("%d",&stua[i].score[j]);
for(i=0;i<N;i++)
for(j=0;j<4;j++)
sum=sum+stua[i].score[j];
stua[i].average=sum/4.0;
max=stua[0].average;
int index=0;
for(i=0;i<N;i++)
for(j=0;j<4;j++)
if( stua[i].average>max)
max=stua[i].average;
index=i;
printf("%ld%s%c%f",stua[index].stu_number,stua[index].name,stua[index].sex,stua[i].average);
}
...全文
13043 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-03-24
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
JiMoKuangXiangQu 2014-03-24
  • 打赏
  • 举报
回复
#include <stdio.h>

#define N 1

struct student
{
    long stu_number;
    char name[15];
    char sex;
    int score[4];
    float average;
};

int main(void)
{
    int i,j;
    float  sum=0.0;
    float max;
    struct student stua[N];

    /* 读取每个学生的学号、姓名、性别、以及每个科目的成绩 */
    printf("please input the informations of the students:\n");
    for(i=0; i<N; i++)
    {
        /* 这个输入语句有点问题:"%s%c",这样有问题 */
        /*scanf("%ld%s%c",&stua[i].stu_number,stua[i].name,&stua[i].sex);*/
        scanf("%ld%s %c",&stua[i].stu_number,stua[i].name,&stua[i].sex);
        for(j=0; j<4; j++)
            scanf("%d",&stua[i].score[j]);
    }

    /* 计算每个学生的平均分 */
    for(i=0; i<N; i++)
    {
        sum = 0.0f;
        for(j=0; j<4; j++)
            sum=sum+stua[i].score[j];
        stua[i].average=sum/4.0;
    }

    /* 寻找最高平均分 */
    max=stua[0].average;
    int index=0;
    for(i=0; i<N; i++)
        //for(j=0; j<4; j++) // 删除了这一句
        if(stua[i].average>max)
        {
            max=stua[i].average;
            index=i;
        }
    /* 打印获得最高平均分的学生信息 */
    printf("%ld %s %c %f",stua[index].stu_number,stua[index].name,stua[index].sex,stua[index].average);

    return 0;
}
基本没动LZ的代码,加了几对大括号,加了几个空格,以及删除修改个一句.
浅希诺1 2014-03-24
  • 打赏
  • 举报
回复
为什么要N 1,还有为什么删去那一句?

69,364

社区成员

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

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