如何在给定次数的迭代后清除总和的值?

时间:2017-07-12 16:12:45

标签: c

请原谅我的措辞,因为我正在努力正确描述这个问题。

我正在制定一项计划,以创建多年来的月降雨量摘要。现在,该计划在5年内循环了12个月,并将打印结果。

不幸的是,我无法弄清楚如何正确计算年度总数。例如:如果我为前12个值(即1年级)输入1,则总数为12.如果我在第2年执行相同操作,那么总数将变为24.它看起来就好像它正在打印值的总和来自所有年份而不仅仅是一年内的总和。

这是我所看到的摘要版本:

deploy.cmd

当我尝试构建一个单独的循环,例如下面的循环时,值始终为0.00:

Do you want to input Precipitation data? (y for yes)
y
Enter rain for 1, 1:
1
Enter rain for 1, 2:
1
... 
1
Enter rain for 1, 11:
1
Enter rain for 1, 12:
1
Total rainfall: 12.00   
Enter rain for 2, 1:
1
Enter rain for 2, 2:
1
...
Enter rain for 2, 12:
1
Total rainfall: 24.00

最令人沮丧的是,我几乎可以看到它是如何执行数学运算而不是如何修复它们。
这是我的完整代码:

void inputdata() {
    /* variable definition: */
    float Rain = 1.0;
    float total = 0.0;

    // Input Data
    for (int year = 0; year < NUMYEARS; year++) {
      for (int month = 0; month < NUMMONTHS; month++) {
        printf("Enter rain for %d, %d:\n", year + 1, month + 1);
        scanf("%f", & Rain);
        Raindata[year][month] = Rain;
      }
      printf("Total rainfall: %.2f\t\n", total);
    }
    for (int month = 0; month < NUMMONTHS; month++) {
        total = total + Rain;
    }
  }

2 个答案:

答案 0 :(得分:3)

计算0中的总数,并在每年年初将其设置为void printdata() { // Print data printf("year\t month\t rain\n"); for (int year = 0; year < NUMYEARS; year++) { float total = 0; for (int month = 0; month < NUMMONTHS; month++) { printf("%s\t %s\t %5.2f\n", years[year], months[month], Raindata[year][month]); total += Raindata[year][month]; } printf("%s Total\t %6.2f\n", total); } }

$("html, body").animate({ scrollTop: $("#scrollablediv").offset().top})

答案 1 :(得分:2)

在离开内循环之后,但在外循环内部,通过将Total设置为0来重置for (int year = 0; year < NUMYEARS; year++) { total = 0.0; for (int month = 0; month < NUMMONTHS; month++) { printf("Enter rain for %d, %d:\n", year + 1, month + 1); scanf("%f", & Rain); Raindata[year][month] = Rain; total = total + Rain; } printf("Total rainfall: %.2f\t\n", total); } 的值。

span

这样,你每年从零开始重新开始。