0
/* Written by: Tai Ngo
   Date: 10/03/2012
   Description: This program allows the users to print numbers
   in the desired orders.
   Problem B
*/


#include <stdio.h>


int main (void)

{   //Global declaration
    int num1;
    int num2;
    int num3;
    int num4;
    int num5;
    int num6;
    int num7;
    int num8;
    int num9;
    int num10;

    //Statements
    printf("Enter 10 integers, separated by spaces:");
    scanf("%5d %5d %5d %5d %5d %5d %5d %5d %5d %5d ", &num1, &num2, &num3, &num4, &num5, &num6, &num7, &num8, &num9, &num10 );

    printf("%5d    %5d\n", num1, num10);
    printf("%5d    %5d\n", num2, num9);
    printf("%5d    %5d\n", num3, num8);
    printf("%5d    %5d\n", num4, num7);
    printf("%5d    %5d\n", num5, num6);

    return 0;
} //main

为什么我必须输入一些字母才能在输入整数后出现输出?

4

3 回答 3

0

如果你想要用空格分隔的数字,那么你不应该在最后一个数字之后要求空格。我会去掉你 scanf 格式中的所有空格;它们不是必需的。

此外,最好fflush(stdout)在 printf 和 scanf 调用之间放置,否则无法保证用户会在 scanf 尝试读取之前看到打印输出。

于 2012-10-10T04:09:46.147 回答
0

scanf 格式中的空格 ( ) 告诉 scanf 读取并丢弃空白字符(空格、制表符和换行符),直到它获得一个非空白字符并将该非空白字符留在输入上(因此它是下一个读取的字符) . 由于您的格式字符串以空格结尾,这就是 scanf 在读取您要求的 10 个整数后将执行的操作。

如果你去掉那个空格,那么 scanf 将在它读取第 10 个数字后立即返回,并且不会尝试在它之后读取任何内容,因此你不必键入另一行(除了空格之外的其他内容)来获取程序继续。

由于%d说明符还会在它读取的数字之前跳过输入中的任何空格,因此 scanf 格式中的所有其余空格都是多余的(并且不需要),但它们实际上不会造成任何伤害——它们只会减慢以微不足道的不可估量的数量打电话。

于 2012-10-10T04:23:37.827 回答
0

请记住,当您在 scanf 中添加 %5d 时,这意味着您要求用户输入每个整数以具有 5 位数字

例如:11111 22222 33333 44444 55555 66666 77777 88888 99999 12345

如果您不想将用户限制为 5 位数字,只需将 %5d 替换为 %d.... 甚至例如:1 2 3 12345 1223 123 122 333 444 11 22

于 2012-10-10T04:25:49.707 回答