使用while循环迭代用户输入直到特定数字

时间:2015-07-22 05:48:12

标签: c

我试图在新行上打印出每个整数,给定由用户输入的空格分隔的整数。它会在特定数字后停止打印,例如84.例如

用户输入

20 -4 84 8

我如何使用while循环将这些打印出来

20
-4
84

我知道scanf(“%d%d%d%d”,a,b,c,d),但是输入大小是未知的,因此可能只有3个数字或7个数字。到目前为止我有:

#include <stdio.h>

int main(void)
{
    int i = 0;
    int x = 0;
    scanf("%d", &x);
    while (x != 84) {
        print("%d\n", x[i]);
        i++;
    }
}

4 个答案:

答案 0 :(得分:4)

scanf推入while条件。像

这样的东西
while (scanf("%d", &x) != EOF && x != 84)
    print("%d\n", x);

答案 1 :(得分:2)

基本概念应分为两步:

  1. 读取数字
  2. 检查并决定是否打印/继续。
  3. 伪代码看起来像

    while ((ret =scanf(x)) && ret != EOF ){
         if (x == VAL) break;
         printf(x);
     }
    

答案 2 :(得分:0)

您有一些错误:

  • 数组num不存在;
  • 必须在while循环内重复scanf

更正后的代码如下:

#include <stdio.h>

int main(void)
{
    int x;
    while( 1 ){
        scanf( "%d", &x );
        print( "%d\n", x );
        if( x==84 ) break;
    }
}

答案 3 :(得分:-1)

您需要将scanf()放在while循环中才能更新每个新输入。如果您只想打印输入的值,则无需数组,因为您可以在新输入后打印它。最好使用do-while循环。

#include <stdio.h>

int main(void)
{
    int i = 0;
    int x = 0;

    do {
        if ( scanf("%d", &x) < 0 )
            break;
        printf("%d\n", x);
    } while (x != 84);
}