要求输入数字直到输入零的算法

时间:2018-10-27 14:30:03

标签: c

我正在尝试在C语言中创建一种算法,要求您输入任何数字,并停止询问何时输入数字0。我应该使用while循环来完成此操作,但是它不起作用并且我尝试了所学到的一切。这是我的代码不起作用:

#include<stdio.h>

int main()
{
    int number;
    while(number != 0)
    {
        printf("Introduce a number: ");
        scanf("%i",&number);
    }

    return 0;
}

3 个答案:

答案 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);