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形式のスペース()は、非空白文字を取得し、その非空白文字を入力に残すまで(次の文字が読み取られるように)、空白文字(スペース、タブ、および改行)を読み取って破棄するように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 に答える
0

スペースで区切られた数字が必要な場合は、最後の数字の後にスペースを要求しないでください。scanf 形式のすべてのスペースを削除します。それらは必要ありません。

また、fflush(stdout)printf 呼び出しと scanf 呼び出しの間に配置することをお勧めします。そうしないと、scanf が読み取ろうとする前にユーザーが印刷出力を見るという保証がありません。

于 2012-10-10T04:09:46.147 に答える