【问题标题】:2D double for-loop not working二维双 for 循环不起作用
【发布时间】:2015-07-28 12:39:48
【问题描述】:

我想将每月商店的每一天的销售额添加到一个包含 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

【问题讨论】:

  • 上面的代码显然不完整,因为它没有编译。无论如何 - 你不要在任何地方将 total 数组归零。
  • float average[3], total[3],; 是语法错误。有一个假逗号。这是您的确切代码吗?
  • 不要说“没有任何线索是错误的”,而是说明您认为有问题的原因(如果编译失败,则给出编译器错误消息;或错误输出示例和预期输出(如果运行)但在运行时表现不如预期)
  • 感谢您指出我已编辑的错误

标签: c for-loop multidimensional-array


【解决方案1】:

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

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

还要验证 SalesMonth 是否确实具有您期望的数据(您可以随时打印)。

【讨论】:

    【解决方案2】:

    我觉得有错别字

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

    【讨论】:

    • 这发生了调试错误!运行时检查失败 #2 - 变量“total”周围的堆栈已损坏。
    • @AgentPerry 我显示的代码是正确的。所以问题出在其他地方。
    • @AgentPerry 您必须将我展示的循环放在您计算总计值的循环之外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2013-12-31
    • 2019-06-02
    • 2018-03-16
    相关资源
    最近更新 更多