c - 基本 While 循环优先级 (C)

标签 c while-loop output operator-precedence

我是编码新手,正在学习 C。我只是有一个关于 while 循环的问题。

#include <stdio.h>

int main(void) {
    int integer1, integer2, number, sum, largest, smallest;
    float average;

    integer1 = 0;
    number = 0;
    sum = 0;
    largest = integer1;
    smallest = integer1;

    while (integer1 != -1) {
        printf("Enter the number: ");
        scanf_s("%d", &integer1);
        number++;
        sum = sum + integer1;

        if (integer1 >= largest) {
            largest = integer1;
        }
        if (integer1 <= smallest) {
            smallest = integer1;
        }
    }

    average = (float) sum / number;

    printf("The number of user's input: %d.\n", number);
    printf("The sum of input numbers: %d.\n", sum);
    printf("The average of input numbers: %.2f.\n", average);
    printf("The largest number is: %d.\n", largest);
    printf("The smallest number is %d.\n", smallest);

    return 0;
}

我编写的代码的目标是:

  1. 从用户处读取整数值。
  2. 当用户输入“-1”时终止 while 循环。
  3. 输出 printf 语句及其相应的值。

问题是:我声明的所有整数变量都不应该包含 '-1; 的值。由用户输入。我认为这与 while 循环的优先级问题有关,但我似乎无法确定它是什么。非常感谢任何帮助或见解。

谢谢!

最佳答案

有时 whiledo/while 循环都不符合您的需求,因为退出循环的决定必须在中间做出循环体。

读取值并在读取后决定做什么就出现了此类情况之一。常见的解决方案是设置一个无限循环,并在 break 时从中间退出:

for (;;) {
    printf("Enter the number: ");
    scanf_s("%d", &integer1);
    if (integer1 == -1) {
        break;
    }
    ... // The rest of your code
}

关于c - 基本 While 循环优先级 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015631/

相关文章:

c - 程序控制流程未按预期工作

process - 执行任何 bash 命令,立即获取 stdout/stderr 的结果并使用 stdin

C 中的 CR/LF 条件检查

c - Gtk+Glade : widgets using same signal handler. 如何区分它们?

MySQL:重复插入表

php - 通用while循环遍历mysql查询结果

java - 如何计算字符串中2个字符的匹配次数?

caching - 完全禁用 IPython 输出缓存

logging - 如何在 AMPL 中隐藏 CPLEX 的输出?

c - 在 C 中实现字典的快速方法