不厭徐何 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日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么