我将问下面提供的有关我的代码的问题......我的问题在于评论/*This line*/
。我使用变量y和x:y表示HEIGHT,x表示WIDTH。我第一次运行程序时,代码是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
答案 0 :(得分:6)
问题是输入数据。 5,2表示第5行第2列,问题是第5行不存在(高度为5,因此您有0到4行)。一旦你改变了值,它们就变成2,5,正确指向第2行(第3行)和第5列(第6列)。
答案 1 :(得分:3)
如果你使用5和2作为y [HEIGHT]和x [WIDTH],它将如何工作,因为你的敌人[HEIGHT] [WIDTH]数组是5x10的数组。
当你使用5表示超过0到4的限制时。
不是.....?