-1

するプログラムを作ろうとしています。

  1. テキストを 1 秒間表示してからクリアする
  2. 乱数の 8*8 ブロックを 100000 回印刷 (移動数装飾) してから
  3. キーを押したら終了します。

これが私のコードです:

#include stdio;
#include stdlib;
main() {
    printf("Welcome to random number V2.0");
    usleep(1000);
    printf("\033[2J\033[1;1H");
    printf("Press X to terminate at any time");
    usleep(1000);
    printf("\033[2J\033[1;1H");
    printf("Program starting");
    usleep(500);
    printf("\033[2J\033[1;1H");
    for(index=0;index<100000;index++) {
        Randomnumber;
        printf("%s". matrix)
        usleep(5);
        printf("\033[2J\033[1;1H");
        usleep(5);

    }

    Randomnumber() {
        int matrix[9][9];
        int index_x;
        int index_y;
        int index;
        for (index_x=0;index_x<9;index_x++) {
            for (index_y=0;index_y<9;index_y++) {
                /*randomizer code goes here, till change ran# statement*/
                matrix [index_x][index_y] = ran
#;
            }
        }
    }

ご覧のとおり、for ループでプログラムを停止する方法が必要です。キーがキーボードにある場合に NULL 以外の値を返す関数を見つけましたがbuffer(kbhit)、2 つのループから飛び出す方法がわかりません。(ずさんなコードで申し訳ありません。Kbhitusleepは通常の C ライブラリにはありませんが、 で問題なく動作しlccます。)

4

2 に答える 2

3

return動作します。

そうでしょうindex_x = 100, index_y = 100; break;


方法 A:

Randomnumber() 
{
    int matrix[9][9], x, y;
    for (x=0;  x<9;  ++x)
        for (y=0;  y<9;  ++y)
        {
            matrix [x][y] = rand();
            if (some condition which means we're done)
                 x = 100, y = 100;
        }
}

方法 B:

Randomnumber() 
{
    int matrix[9][9], x, y;
    for (x=0;  x<9;  ++x)
        for (y=0;  y<9;  ++y)
        {
            matrix [x][y] = rand();
            if (some condition which means we're done)
                 return;
        }
}
于 2012-10-12T15:24:43.653 に答える
1

Randomnumber()値を返すように変更できます。おそらく「中断」の場合は 1 です。成功の場合は 0。

次に、メインのループは次のようになります

 for (...) {
   if (Randomnumber() != 0) {break;}
   ...
 }

(実際に main から関数を呼び出すには が必要であることに注意してください()。また、戻り値の型と引数が (void であっても) 宣言することをお勧めします。 デフォルトの戻り値の型は 1978 です)

于 2012-10-12T15:32:23.210 に答える