如何解决C二维数组
| 我要问一些下面提供的代码...我的问题是在注释“ 0”的那一行。我使用变量y和x:y代表高度,x代表宽度。我第一次运行该程序时,代码是scanf(\"%d,%d\",&y,&x);
,但不幸的是,该程序无法正常运行。但是,当我用scanf(\"%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,1,1},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,&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
解决方法
问题是输入数据。 5,2表示第5行,第2列,而问题在于第5行不存在(高度为5,因此您的行数为0到4)。更改值后,它们将变为2、5,它们正确指向第2行(第三行)和第5列(第六列)。
,如果对y [HEIGHT]和x [WIDTH]使用5和2,它将如何工作,因为您的敌人[HEIGHT] [WIDTH]数组是5x10的数组。
也就是说,当您对y使用5时,y超出了它的限制,即0到4。
是不是.....?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。