qq_56933113 2021-09-04 11:03 采纳率: 100%
浏览 29
已结题

为什么我输入数据进去结果得到乱码

#include<stdio.h>#define N 2struct student{ int id; char name[20];

  • float math;    float PE;     float chinese;    float English;    float physical;};float math_average(student st[],int n){    float sum;    float average;    int i;    for(i=0;i<n;i++)    {        sum+=st[i].math;        }    average=sum/2.0;    printf("数学总分为%f,数学平均分为%f",sum,average);    return 0;};void main(){    int i;    struct student st[N];    for(i=0;i<N;i++)    {        printf("学号");        scanf("%d",&st[i].id);        printf("名字");        scanf("%s",st[i].name);        printf("数学成绩");        scanf("%f",&st[i].math);        printf("体育成绩");        scanf("%f",&st[i].PE);        printf("语文成绩");        scanf("%f",&st[i].chinese);        printf("英语成绩");        scanf("%f",&st[i].English);        printf("物理成绩");        scanf("%f",&st[i].physical);            }    math_average(st,N);}**
    

    ```

```**

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-09-04 11:07
    关注

    float sum;这里没有初始化,改成float sum = 0.0;

    #include<stdio.h>
    #define N 2
    struct student{ 
        int id; 
        char name[20];
        float math;    
        float PE;     
        float chinese;    
        float English;    
        float physical;
    };
    float math_average(student st[],int n)
    {    
        float sum = 0.0;   //这里需要初始化
        float average;    
        int i;    
        for(i=0;i<n;i++)    
        {        
            sum+=st[i].math;  //sum 没有初始化,需要在前面初始化     
        }    
        average=sum/n;    
        printf("数学总分为%f,数学平均分为%f",sum,average);    
        return 0;
    };
    void main()
    {    
        int i;    
        struct student st[N];    
        for(i=0;i<N;i++)    
        {        
            printf("学号");        
            scanf("%d",&st[i].id);        
            printf("名字");        
            scanf("%s",st[i].name);       
            printf("数学成绩");        
            scanf("%f",&st[i].math);        
            printf("体育成绩");        
            scanf("%f",&st[i].PE);        
            printf("语文成绩");        
            scanf("%f",&st[i].chinese);        
            printf("英语成绩");        
            scanf("%f",&st[i].English);        
            printf("物理成绩");        
            scanf("%f",&st[i].physical);            
        }    
        math_average(st,N);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 创建了问题 9月4日

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了