quiettttt 2022-08-16 11:21 采纳率: 97.9%
浏览 73
已结题

你知道为什么这段代码偏偏第七个数字是个垃圾数吗?


#include <stdio.h>
#define MONTH 12
#define YEARS 5
void maverage (float arr1[MONTH] , float (*arr2)[MONTH]);
void yaverage (float arr1[YEARS] , float (*arr2)[MONTH]);
//用VLA
void showit(float *arr1 , int num);
int main(void)
{
    float monaver[MONTH];//每月平均
    float yearaver[YEARS];//每年平均
    //float averagemon;
    //float averageyear;
    float allyear;
    const float rain[YEARS][MONTH]=  {
        {4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},
        {8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},
        {9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},
        {7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},
        {7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2},
    };
    
    printf(" Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  ");
    printf(" Nov  Dec\n");//%4.1f;
    maverage(monaver , rain);
    //showit(monaver , MONTH);
    
    return 0;
}

void maverage (float arr1[MONTH] , float (*arr2)[MONTH])
{
    float subit[MONTH];
    int i , j;
    
    for(i = 0 ; i < MONTH  ; i++)
    {
        for(j = 0 ; j < YEARS ; j++)
        {
            subit[i] += arr2[j][i];
        }
        //arr1[i] = subit[i] / YEARS;
    printf("%4.1f " , subit[i] / YEARS);
    }
}

为什么这段代码偏偏第七个数字是个垃圾数?其余全部都是没问题的呢?

  • 写回答

2条回答 默认 最新

  • a5156520 2022-08-16 12:06
    关注

    应该是因为maverage()函数的subit数组没有初始化,把subit初始化下就可以了,修改如下:

    
     
    #include <stdio.h>
    #define MONTH 12
    #define YEARS 5
    void maverage (float arr1[MONTH] , const float (*arr2)[MONTH]);
    void yaverage (float arr1[YEARS] , const float (*arr2)[MONTH]);
    //用VLA
    void showit(float *arr1 , int num);
    int main(void)
    {
        float monaver[MONTH];//每月平均
        float yearaver[YEARS];//每年平均
        //float averagemon;
        //float averageyear;
        float allyear;
        const float rain[YEARS][MONTH]=  {
            {4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},
            {8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},
            {9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},
            {7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},
            {7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2},
        };
        
        printf(" Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  ");
        printf(" Nov  Dec\n");//%4.1f;
        maverage(monaver , rain);
        //showit(monaver , MONTH);
        
        return 0;
    }
     
    void maverage (float arr1[MONTH] , const float (*arr2)[MONTH])
    {
        float subit[MONTH]={0};
        int i , j;
        
        for(i = 0 ; i < MONTH  ; i++)
        {
            for(j = 0 ; j < YEARS ; j++)
            {
            //    printf("%.2f ",arr2[j][i]);
                subit[i] += arr2[j][i];
            }
           
            
            arr1[i] = subit[i] / YEARS;
            printf("%4.1f " , subit[i] / YEARS);
        }
    }
    

    img

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

报告相同问题?

问题事件

  • 系统已结题 8月24日
  • 已采纳回答 8月16日
  • 创建了问题 8月16日

悬赏问题

  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成