2015-07-28 77 views
-1

我想将一个月的每天存储销售额添加到由3个总销售额组成的总数组文件中。因为我需要3个总销售额进行比较。2D double for-loop无法正常工作

#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

+1

上面的代码显然是不完整的,因为它不编译。无论如何 - 你不会将'total'数组置零。 –

+0

'float average [3],total [3],''是一个语法错误。有一个虚假的逗号。这是你的确切代码吗? –

+1

而不是“没有线索是错误的”,说出为什么你认为某些事情是错误的(如果编译器无法编译时给出编译器错误消息;或者错误输出和预期输出的例子,如果它运行但不像预期的那样运行) –

回答

1

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

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

此外,请验证SalesMonth实际上是否具有您期望的数据(您可以随时打印)。

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]); 
+0

发生了这种情况 调试错误! 运行时检查失败#2 - 变量“total”周围的堆栈已损坏。 – AgentPerry

+0

@AgentPerry我显示的代码是正确的。所以问题在别的地方。 –

+0

@AgentPerry您必须将我显示的循环放置在计算总计值的循环之外。 –