c语言结构体计算学生成绩

img

想问一下大家这道题目错在哪里 一直写不正确 请大家帮我看一下谢谢大家

几个小地方的错误吧,如double型变量打印要用%lf,修改如下:


#include <stdio.h>
#define M 10
struct stud{
    int num;
    char name[10];
    int score[3];
    int sum;
};

int main(void){
    
    int N;
    struct stud a[M];  //定义结构数组如果是C99,可以用变量作为数组长度,如果是C99以下用常量定义长度 
    int i,j,max,k;
    double average = 0;
    scanf("%d",&N);

    
    for(i=0;i<N;i++){
        scanf("%d %s",&a[i].num,a[i].name);  //scanf获取 字符串输入,用字符指针即可,不需要再在字符指针上面再加取址符& 
        
        for(j=0,a[i].sum=0;j<3;j++){
            scanf("%d",&a[i].score[j]);
            a[i].sum += a[i].score[j];
        }
    }
    
    for(i=0;i<N;i++){
        printf("%d %s ",a[i].num,a[i].name);
        
        for(j=0;j<3;j++){
            printf("%d ",a[i].score[j]);
        }
        printf("%d\n",a[i].sum);
    }
    
    for(i=0;i<N;i++){
        average+=a[i].sum;
    }
    
    average = average/N/3;
    printf("average=%lf\n",average);  //打印double型变量用%lf 
    max=a[i].sum;
    for(i=1;i<N;i++){
        if(a[i].sum>max){  //把k=i放入if中,以得到最大分数学生的下标 
            max=a[i].sum;
            k=i;
        }
            
    }
    
    printf("%d %s ",a[k].num,a[k].name);
    for(j=0;j<3;j++){  //打印三门成绩,用一个for循环 
        printf("%d ",a[j].score[j]);
    }
    printf("%d\n",a[k].sum);
    
    return 0;
} 


img

你可以参考下这篇文章:C语言实现学生成绩管理系统