2D双循环不工作

时间:2015-07-28 12:39:48

标签: c for-loop multidimensional-array

我想将每月商店每天的销售额添加到包含3个总销售额的总数组文件中。因为我需要3个总销售额进行比较。

#include <stdio.h>
extern float SalesMonth[3][31]; // the data is in another file
void main()
{
    float average[3], total[3];
    int day, month;
    for ( month = 0; month < 3; month++)
    {
        for ( day = 0; day < 31; day++ )
        {
            total[month] += SalesMonth[month][day];
        }
    printf("%.2f\n", total[month]); // displays crazy digits.
    }
}

编译后的结果链接。 http://snag.gy/aatxd.jpg

2 个答案:

答案 0 :(得分:1)

最后一个printf将使用month == 3因为它刚刚离开循环。这不是您声明的数组的一部分,因此它将读取堆栈的一些随机位。 尝试移动循环内的printf或正确设置月份。

您还必须初始化阵列。否则,值将是任意的。

同时验证SalesMonth实际上是否包含您希望拥有的数据(您可以随时打印)。

答案 1 :(得分:0)

我认为有一个错字

float average[3], total[3],;
                          ^^

只需按以下方式定义数组

float average[3] = { 0.0 }, total[3] = { 0.0 };

那就是在使用数组之前需要初始化数组元素。

而不是这个没有意义的陈述

printf("%.2f\n", total[month]); 

你必须编写一个循环来输出数组的每个元素。

例如

for ( month = 0; month < 3; month++) printf("%.2f\n", total[month]);