我需要创建一个程序,当用户输入一个整数列表时,找到该数字的第一个和最后一个条目的位置,以及特定数字出现的次数。
正确的输出应该如下所示:
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
等
有没有办法让不为每个条目开一个新行?
答案 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 );