我记得我的C编程,并决定使用全0和1来制作一个2d数组。并希望用箭头键在阵列周围移动1。一切正常,除非我的1获得0,3另一个1出现在1,0。我无法弄清楚它来自哪里。
#include <stdio.h>
#include <stdlib.h>
void lugar(int posX, int posY);
void impMat(void);
int mat[5][3], mX=0, mY=0;
main()
{
char op;
int i,j;
lugar(mX,mY);
impMat();
do{
fflush(stdin);
op=getch();
switch(op){
case 77:{if(mY<4){
mY++;
system("cls");
lugar(mX,mY);
impMat();
printf("\n\n X: %i",mX);
printf("\n\n Y: %i",mY);
}else printf("no more");
break;
}
case 75:{mY--;
system("cls");
lugar(mX,mY);
impMat();
printf("\n\n X: %i",mX);
printf("\n\n Y: %i",mY);
break;
}
case 80:{mX++;
system("cls");
lugar(mX,mY);
impMat();
printf("\n\n X: %i",mX);
printf("\n\n Y: %i",mY);
break;
}
case 72:{mX--;
system("cls");
lugar(mX,mY);
impMat();
printf("\n\n X: %i",mX);
printf("\n\n Y: %i",mY);
break;
}
}
}while(op!=27);
system("PAUSE");
return 0;
}
void lugar(int posX, int posY){
int i, j;
for(i=0;i<3;i++){
for(j=0;j<5;j++){
mat[i][j]=0;
}
}
mat[posX][posY]=1;
}
void impMat(void){
int r, c;
for(r=0;r<3;r++){
for(c=0;c<5;c++){
printf("%i", mat[r][c]);
if(c==4) printf("\n");
}
}
}
答案 0 :(得分:2)
你声明矩阵[5] [3]但是在lugar [3] [5]中迭代它。在impMat中也是如此。什么是x,什么是什么,什么行,什么列? : - )