我正在尝试在C语言中创建一种算法,要求您输入任何数字,并停止询问何时输入数字0。我应该使用while循环来完成此操作,但是它不起作用并且我尝试了所学到的一切。这是我的代码不起作用:
#include<stdio.h>
int main()
{
int number;
while(number != 0)
{
printf("Introduce a number: ");
scanf("%i",&number);
}
return 0;
}
答案 0 :(得分:2)
希望把我的两美分带到聚会上为时不晚。
其他人建议的解决方案肯定是可行的且可行的解决方案,但是,我认为可以用稍微更整洁的方式来完成。对于这种情况,存在do while
语句:
#include <stdio.h>
int main() {
int number; // Doesn't need to be initialized in this case
do {
printf("Introduce a number: ");
if (scanf("%i", &number) != 1) { // If the value couldn't be read, end the loop
number = 0;
}
} while (number != 0);
return 0;
}
我认为这种解决方案更好的原因在于,它不会在代码中引入任何其他魔术常量,因此应该具有更好的可读性。
例如,如果有人看到int number = 42;
,他会问-为什么是42?为什么初始值是42?这个值在某处使用吗?答案是:不,不是,因此没有必要在那里。
答案 1 :(得分:0)
int number = 1;
while(number != 0){
printf("Introduce a number: ");
scanf("%i",&number);
}
Scanf将暂停循环并等待输入数字
答案 2 :(得分:0)
在条件中使用数字之前,您需要为number
分配一个数字。
您有两个选择:a)使用虚拟初始值,或b)测试前使用scanf
// a) dummy value
int number = 42;
while (number != 0) { /* ... */ }
或
// b) scanf before test
int number; // uninitialized
do {
if(scanf("%i", &number) != 1) exit(EXIT_FAILURE);
} while (number != 0);