2301_80021252 2024-01-13 13:22 采纳率: 42.9%
浏览 3
已结题

pta上的题计算平均成绩

img


为什么输出学号的后面又重新输出一遍名字呢?怎么才能去掉学号后面的名字呢?

  • 写回答

2条回答 默认 最新

  • a5156520 2024-01-13 13:31
    关注

    因为学生结构中存储学号的字符数组太小了,导致数组越界,打印的时候把其他内存位置的数据也打印出来,所以导致结果显示错误;

    可以将结构中存储学号的字符数组的大小设置大一点。

    修改如下:

    #include <stdio.h>
    
    struct students{
        
        char number[10];  // 输入的学号为5位,故学号字符数组大小最小为6,也可以适当设置大一点 
        char name[10];
        int grade;
        
    }; 
    
    int main(void){
        
        int i,N;
        double average,sum=0;
        
        struct students stu[11];
        
        scanf("%d",&N);
        
    /**
    
    5
    00001 zhang 70
    00002 wang 80
    00003 qian 90
    10001 li 100
    21987 chen 60
    */
        for(i=0;i<N;i++){
            
            scanf("%s%s%d",stu[i].number,stu[i].name,&stu[i].grade);
            getchar();
            sum+=stu[i].grade;
            
        }
        
        for(i=0;i<N;i++){
            
            printf("%s,%s,%d\n",stu[i].number,stu[i].name,stu[i].grade);
    
            
        }
        
        
        average=sum/N;
        
        printf("%.2lf\n",average);
        
        for(i=0;i<N;i++){
            
            if(stu[i].grade<average){
                printf("%s %s\n",stu[i].name,stu[i].number);
            } 
        
        }
        
        return 0;
        
            
    }
    
    

    img

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

报告相同问题?

问题事件

  • 系统已结题 1月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月13日

悬赏问题

  • ¥15 问题遇到的现象和发生背景 360导航页面千次ip是20元,但是我们是刷量的 超过100ip就不算量了,假量超过100就不算了 这是什么逻辑呢 有没有人能懂的 1000元红包感谢费
  • ¥30 计算机硬件实验报告寻代
  • ¥15 51单片机写代码,要求是图片上的要求,请大家积极参与,设计一个时钟,时间从12:00开始计时,液晶屏第一行显示time,第二行显示时间
  • ¥15 用C语言判断命题逻辑关系
  • ¥15 原子操作+O3编译,程序挂住
  • ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。
  • ¥15 在yolo1到yolo11网络模型中,具体有哪些模型可以用作图像分类?
  • ¥15 AD9910输出波形向上偏移,波谷不为0V
  • ¥15 淘宝自动下单XPath自动点击插件无法点击特定<span>元素,如何解决?
  • ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘