我不知道其他1来自哪里

时间:2014-04-22 01:26:17

标签: c arrays

我记得我的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");
      }                 
   }   
}

1 个答案:

答案 0 :(得分:2)

你声明矩阵[5] [3]但是在lugar [3] [5]中迭代它。在impMat中也是如此。什么是x,什么是什么,什么行,什么列? : - )