5

以下に提供されているコードについて何か質問します...私の質問は、コメントがある行にあり/*This line*/ます。変数 y と x を使用しました。高さには y を、幅には x を使用しました。プログラムを初めて実行したとき、コードはscanf("%d,%d", &y, &x);正しく動作していませんでしたが、残念ながらプログラムは正しく動作していませんでした。しかし、これscanf("%d,%d", &x, &y);でコードを変更すると、プログラムを順番に実行できました。y を HEIGHT として、x を WIDTH として設定したので、それがどのように発生したのか理解できませんか?

   File   Edit   Run   Compile   Project   Options   Debug   Break/watch
╒════════════════════════════════════ Edit ════════════════════════════════════╕
│      Line 1     Col 43  Insert Indent Tab Fill Unindent * C:NONAME.C         │
│#define HEIGHT 5                                                              │
│#define WIDTH 10                                                              │
│                                                                              │
│char enemy[HEIGHT][WIDTH]=                                                    │
│        { {0,0,0,0,0,0,0,0,0,0},                                              │
│          {0,1,1,0,0,1,0,0,0,0},                                              │
│          {0,0,0,1,0,1,0,1,1,0},                                              │
│          {0,0,0,0,0,0,0,0,1,1},                                              │
│          {0,0,1,1,0,1,0,0,0,1} };                                            │
│                                                                              │
│main()                                                                        │
│{                                                                             │
│        char friend[HEIGHT][WIDTH];                                           │
│        int x,y;                                                              │
│                                                                              │
│        clrscr();                                                             │
│                                                                              │
│        for(y=0; y<HEIGHT; y++)                                               |
|               for(x=0; x<WIDTH; x++)                                         |
|                      friend[y][x]='.';                                       |
|                                                                              |
|        while(x >= 0)                                                         |
|        {                                                                     |
|                for(y=0; y<HEIGHT; y++)                                       |
|                {                                                             |
|                        for(x=0; x<WIDTH; x++)                                |
|                                printf("%c", friend[y][x]);                   |
|                        printf("\n");                                         |
|                }                                                             |
|                                                                              |
|                printf("Coordinates: ");                                      |
|                scanf("%d,%d", &x, &y);                       /*This line*/   |
|                                                                              |
|                if(enemy[y][x] == 1)                                          |
|                        friend[y][x]="\xDB";                                  |
|               else                                                           |
|                        friend[y][x]="\xB0";                                  | 
|        }                                                                     |
|}                                                                             │
├─────────────────────────────────── Watch ────────────────────────────────────┤
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘
 F1-Help  F5-Zoom  F6-Switch  F7-Trace  F8-Step  F9-Make  F10-Menu   NUM
4

2 に答える 2

6

問題は入力データです。5,2 は行 5、列 2 を意味し、問題は行 5 が存在しないことです (高さが 5 であるため、0 から 4 までの行があります)。値を変更するとすぐに、2, 5 になり、2行目 (3 行目) と 5 列目 (6 列目)を正しく指しています。

于 2011-05-24T07:58:02.447 に答える
3

y[HEIGHT] と x[WIDTH] に 5 と 2 を使用している場合、敵の [HEIGHT][WIDTH] 配列は 5x10 の配列であるため、どのように機能しますか。

それは、0 から 4 の制限を超える y に 5 を使用している場合です。

ではない.....?

于 2011-05-24T07:57:29.663 に答える