基本 While 循环优先级 (C)
Basic While Loop Precedence (C)
我是编码新手,正在学习 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;
}
我写的代码的 objective 是:
- 从用户那里读取整数值。
- 当用户输入“-1”时终止 while 循环。
- 输出 printf 语句及其对应的值。
问题是:我声明的所有整数变量都不应该包含 '-1; 的值;由用户输入。我认为这与 while 循环的优先级问题有关,但我似乎无法确定它是什么。非常感谢任何帮助或见解。
谢谢!
为了达到你想要的效果,你需要添加一行。
//use infinite loop
while (1) {
printf("Enter the number: ");
scanf_s("%d", &integer1);
//jump out of the loop because the loop has already started.
//but the value was -1
if (integer == -1) break;
number++;
sum = sum + integer1;
if (integer1 >= largest) {
largest = integer1;
}
if (integer1 <= smallest) {
smallest = integer1;
}
}
有时 while
和 do
/while
循环都不符合您的需要,因为退出循环的决定必须在循环体的中间做出。
读取值并决定读取后的操作就是其中一种情况。一个常见的解决方案是设置一个无限循环,并在 break
:
从中间退出
for (;;) {
printf("Enter the number: ");
scanf_s("%d", &integer1);
if (integer1 == -1) {
break;
}
... // The rest of your code
}
只需在 while 循环之前添加 scanf() 语句。
我是编码新手,正在学习 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;
}
我写的代码的 objective 是:
- 从用户那里读取整数值。
- 当用户输入“-1”时终止 while 循环。
- 输出 printf 语句及其对应的值。
问题是:我声明的所有整数变量都不应该包含 '-1; 的值;由用户输入。我认为这与 while 循环的优先级问题有关,但我似乎无法确定它是什么。非常感谢任何帮助或见解。
谢谢!
为了达到你想要的效果,你需要添加一行。
//use infinite loop
while (1) {
printf("Enter the number: ");
scanf_s("%d", &integer1);
//jump out of the loop because the loop has already started.
//but the value was -1
if (integer == -1) break;
number++;
sum = sum + integer1;
if (integer1 >= largest) {
largest = integer1;
}
if (integer1 <= smallest) {
smallest = integer1;
}
}
有时 while
和 do
/while
循环都不符合您的需要,因为退出循环的决定必须在循环体的中间做出。
读取值并决定读取后的操作就是其中一种情况。一个常见的解决方案是设置一个无限循环,并在 break
:
for (;;) {
printf("Enter the number: ");
scanf_s("%d", &integer1);
if (integer1 == -1) {
break;
}
... // The rest of your code
}
只需在 while 循环之前添加 scanf() 语句。