输入2个学生的学号、姓名、语文成绩,要求求出2个学生的平均成绩,以及最高分的学生的数据(包括学号、姓名、语文成绩)

问题相关代码,请勿粘贴截图

输入2个学生的学号、姓名、语文成绩,要求求出2个学生的平均成绩,以及最高分的学生的数据(包括学号、姓名、语文成绩)

一个实现,供参考:

#include <stdio.h>  
#define N 2
struct stu{   //学生信息结构 
    int id;  //学号 
    char name[20]; //姓名 
    float chinese;  //语文成绩 
};



int main(void){
    
    struct stu s[N];  //定义存放学生信息的结构数组 
    int i=0;
    //获取学生信息输入 
    while(i<N){
        printf("请输入第%d个学生的信息(学号,姓名,语文成绩):\n",i+1);
        scanf("%d%s%f",&s[i].id,s[i].name,&s[i].chinese);
        i++;
        
    }
    
    i=0;
    float avg=0;  //总平均分 
    float max=0;  //最高分  
    int maxIndex;  //最高分对应的学生数组下标 
    while(i<N){  //遍历学生信息结构数组 
    //    printf("1\n"); 
        avg += s[i].chinese;  //把每个数组里每个学生的语文成绩累加到平均分变量中,等退出循环再进行下一步计算 
        if(s[i].chinese>max){  //如果当前数组里的语文成绩,则更新最高分及对应的下标 
        //    printf("2\n"); 
            max=s[i].chinese;
            maxIndex=i;
        }
        i++;
    }
    
    avg/=N;  //把累加的语文成绩除以学生人数即总的语文成绩平均分 
//    printf("3\n"); 
//打印结果 
    printf("%d个学生的平均成绩为:%.2f.\n",N,avg);
    printf("最高分学生的信息为:学号:%d 姓名:%s 语文成绩:%.1f.\n ",  s[maxIndex].id,s[maxIndex].name,s[maxIndex].chinese);
    
    return 0;
}


img