首页 > 解决方案 > 以 -1 作为退出整数的 n 个数字的总和和平均值

问题描述

您好我的代码有一个小问题,我想了解它。我的任务是编写一个程序,使用 while 循环或带有 if 条件的嵌套 while 循环获取 n 个数字的总和和平均值,当你想退出代码时,你应该输入 -1。代码在下面。我遇到的问题是我无法将 -1 从计算中排除。我究竟做错了什么。它应该是一个简单的代码。

int main(void) {

    int count;
    float sum, average, number;
    sum = 0;
    count = 0;

    printf("Calculate sum and average (-1 to quit)\n");

    while (number!=-1) {
        scanf("%f", &number);
        sum = sum + number;
        count = count + 1;
    }
    average = sum / count;
    printf("Sum=%f", sum);
    printf(" Average=%f", average);
}

标签: csumaverage

解决方案


在 while 块中,您读取数字,然后将其添加到平均计算中,然后只有在迭代重复之后,您才检查它是否不同于 -1 以停止迭代:

显然有不同的方法来解决它:

一种方法是使用 while(true) 并在读取数字后的 while 块中添加一个 if 语句以将其与 -1 进行比较并跳出循环

while (true) {
    scanf("%f", &number);

    if (number == -1) break;

    sum = sum + number;
    count = count + 1;
}

推荐阅读