0

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

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

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

等等

有没有办法让它与每个条目开始一个新行?

4

1 回答 1

1

是的,如果您\nprintf格式字符串中使用,它将换行。如果你没有那个角色,它就不会。所以把它拿出来,在你的循环之后写一个新行。

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

鉴于您想在输入的同一行显示提示文本,您可能还需要刷新输出:

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 );
于 2013-02-07T01:00:34.237 回答