1

Win7 x64 の 4.7.2 で MinGW GCC を使用しています

これは演習です:

http://postimg.org/image/v4xnpcxc3/

これは私の未完成のコードです (有効な終了ループ条件はありません) 動作しません (文字が 1 行または 1 列に出ることはありません。プログラムをデバッグしようとしましたが、デバッガー コードで動作しますか??!!):

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>

int main(void)
{
    char array[10][10];
    int direction = 0;
    int i = 0, j = 0, cnt = 1;
    for(int i = 0; i < 10; i++)
    {
        for(int j = 0; j < 10; j++)
        {
            array[i][j] = '*';
        }
    }
    int z = 200;
    array[i][j] = 'A';
    while(z-- > 0)
    {
        srand((unsigned)time(NULL));
        direction = rand() % 4;
        switch(direction)
        {
            case 0:
                if(i != 0)
                    i--; 
                break;
            case 1:
                if(j != 9)
                    j++; 
                break;
            case 2:
                if(i != 9)
                    i++;
                break;
            case 3:
                if(j != 0)
                    j--;
                break;
        }
        if(array[i][j] == '*')
        {
            array[i][j] = 'A' + cnt;
            cnt++;
        }       
        if(cnt == 26)
            break;
    } 
    for(int i = 0; i < 10; i++)
    {
        for(int j = 0; j < 10; j++)
        {
           printf("%c ", array[i][j]);
        }
        printf("\n");
    }
}
4

3 に答える 3

2

初め

  array[i][j] = 'A';

実際には次と同じ array[0][0] = 'A';です:

for(int i = 0; i < 10; i++)

for(int j = 0; j < 10; j++)

hideij以前の宣言:

int i = 0, j = 0, cnt = 1;

第二に、ループのsrand直前で呼び出すのは良くありません。プログラムの開始時に 1 回だけrand呼び出します。srand

于 2013-07-27T20:32:57.573 に答える
0

通常、デバッガはデータをクリアします。つまり、変数をゼロに設定します。たとえばNULL、ポインターをチェックしても、チェックする変数を初期化するのを忘れた場合、デバッガーでは機能しますが、デバッガーの外でプログラムを実行すると機能しません。

于 2013-07-27T20:32:45.213 に答える