我怎样才能排除-1从这个do ... while循环?

问题描述 投票:0回答:1

该计划应该计算进入到-1号的平均水平,但我的代码计算与-1包括平均值。

我怎样才能排除-1被计算总和与平均值?

#include <stdio.h>
#include <stdlib.h>

int main() {
  int n;
  int sum = 0, i = 0;
  float av;
  do {
    scanf("%d", &n);
    sum += n;
    i++;
  } while (n != -1);
  av = (float)sum / i;
  printf("%f", av);
  return 0;
}
c do-while
1个回答
0
投票

在您的解决方案,你的代码会读取n等于-1和添加,然后验证这是导致此问题。

你可以做这样的:

do {
  scanf("%d", &n);
  if (n != -1) sum += n;
  i++;
} while (n != -1);

甚至更好,就像这样:

while (1) {
  scanf("%d", &n);
  if (n == -1) break;
  sum += n;
  i++;
}
© www.soinside.com 2019 - 2024. All rights reserved.