不厭徐何 2023-03-30 18:55 采纳率: 56.5%
浏览 14
已结题

结构体,输入输出-c语言

有10个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入学生数据,要求输出每个学生三门课程的平均成绩,以及最高分学生的数据(学号、姓名、三门课的成绩、该学生的平均成绩)

不知道哪里错了,无法正确进行输入输出

#include <stdio.h>
struct Student{
    int num;
    char name[20];
    float score[3];
    float aver;
}stu[10];
int main(){
    void input_aver(struct Student p[]);
    void print_aver(struct Student p[]);
    input_aver(stu);
    print_aver(stu);
    return 0;
}
void input_aver(struct Student p[]){
    int i;
    for(i=0;i<10;i++){
        printf("请输入学号、姓名、三门课的成绩:\n");
        scanf("%d%s%f%f%f\n",&p[i].num,p[i].name,&p[i].score[0],&p[i].score[1],&p[i].score[2]);
        p[i].aver=(p[i].score[0]+p[i].score[1]+p[i].score[2])/3.0;
    }
}
void print_aver(struct Student p[]){
    int i,j;
    int flag=0;
    struct Student *k=p; //哪一位学生有最高分 
    float max=p[0].score[0];//放最高分 
    for(i=0;i<10;i++){
        printf("No.%d的平均成绩为:%.2f\n",i+1,p[i].aver);
    }
    for(i=0;i<10;i++){
    for(j=0;j<3;j++){    
    if(p[i].score[j]>max){
        flag=1;
        max=p[i].score[j];        
    }
    }
    if(flag)k=p+i;
    }
    printf("最高分的学生的学号、姓名、三门课成绩,平均成绩分别为:%d  %s  %.2f  %.2f  %.2f  %.2f",
    k->num,k->name,k->score[0],k->score[1],k->score[2],k->aver);
}

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-03-30 18:59
    关注

    scanf里面的换行符 去掉

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 3月30日

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路