给出一个数字列表,找到输入特定数字的第一次和最后一次

时间:2013-02-07 00:57:59

标签: c scanf

我需要创建一个程序,当用户输入一个整数列表时,找到该数字的第一个和最后一个条目的位置,以及特定数字出现的次数。

正确的输出应该如下所示:

Enter a number to find: 4
Enter a list of numbers (negative to quit): 1 8 4 9 3 4 4 8 2 4 10 3 4 2 4 -1
This list contains 15 numbers.
First occurrence of '4': 3
Last occurrence of '4': 15
Quite a few were found!

除了一件事之外,我的工作非常好:因为我每次都使用scanf接收用户输入,而不是将所有数字放在一行上,如下所示:

1 8 4 9 3 4 4 8 2 4 10 3 4 2 4 -1

它这样做:

1
8
4
9
3
4
4

有没有办法让为每个条目开一个新行?

1 个答案:

答案 0 :(得分:1)

是的,如果您在\n格式字符串中使用printf,它将会换行。如果你没有那个角色,那就不会。因此,在循环后,将其取出并写一个新行

同样,当您在提示符下输入数字时,请不要在每个输入后按输入。看起来你应该用空格分隔它们。

鉴于您希望在与输入相同的行上显示提示文本,您可能还需要刷新输出:

printf( "Enter a list of numbers (negative to quit): " );
fflush( stdout );

// Input loop.
int num;
do {
    if( 1 != scanf( "%d", &num ) ) {
        fprintf( stderr, "Bad input\n" );
        exit(1);
    }

    // Do something with the input...

} while( num != -1 );