我想将每月商店每天的销售额添加到包含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
答案 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]);