淘宝杜琨
大侠 又有问题了 请帮帮忙啊: #include "Conio.h" #include "dos.h" #include "stdio.h" #include "graphics.h" #include "ctype.h" #define closegr closegraph #define DIGITLEN 1000 #define MAXLINE 50 void cursor(); void initgr(void); void matrix(int ,int,int,int,int); int Xcursor,Ycursor ; int mem[50][50]; char m[100]; int main(void) { int a,b ; int i,j,k=0 ; int Xsize=50,Ysize=24 ; int Xstart,Ystart; int start=50 ; int Key=0 ,digit;
printf("line:"); scanf("%d",&a); printf("row:"); scanf("%d",&b); initgr(); matrix(start,Xsize,Ysize,a,b) ; Xstart=start; Ystart=start; Xcursor=Xstart; Ycursor=Ystart; cursor(); while(Key!=25) { while(bioskey(1)==0) cursor(); Key=bioskey(0); if ((Key<<8)>>8==27) break;
if(Key&0xff) /*如果不是方向键*/ /*这里加入接收部分,可以用getch(),outtextxy()等函数来处理,并根据所处的屏幕x,y值来对应矩阵的数组*/ { digit=(Key<<8)>>8; do { if (isdigit(digit)) { setfillstyle(0, 5); bar(Xcursor+1,Ycursor+1,Xcursor+Xsize-1,Ycursor+Ysize-1); setcolor(WHITE); m[k++]=digit; m[k]='\0'; outtextxy(Xcursor+3,Ycursor+Ysize/2,m); mem[(Ycursor-Ystart)/Ysize][(Xcursor-Xstart)/Xsize]=atoi(m);
} else { printf("\7"); break;
}
} while ((digit=getch())!=13);
}
else /*是方向键*/ { Key>>=8 ; if(Key==75)Xcursor=Xcursor>start?Xcursor-Xsize:Xcursor+(a-1)*Xsize; if(Key==77)Xcursor=Xcursor<start+(a-1)*Xsize?Xcursor+Xsize:Xcursor-(a-1)*Xsize ; if(Key==72)Ycursor=Ycursor>start?Ycursor-Ysize:Ycursor+(b-1)*Ysize ; if(Key==80)Ycursor=Ycursor<start+(b-1)*Ysize?Ycursor+Ysize:Ycursor-(b-1)*Ysize ;
for (k=0;k<=100;k++) m[k]=0; k=0; } } moveto(300,100); printf("what's u have input is :\n"); for (i=0;i<=b-1;i++) { for (j=0;j<=a-1;j++) printf("%d,",mem[i][j]); printf("\n"); } getch(); closegr(); return 0 ; } /* BGI初始化 */ void initgr(void) { int gd=DETECT,gm=0 ; /* 和gd = VGA,gm = VGAHI是同样效果 */ registerbgidriver(EGAVGA_driver); /* 注册BGI驱动后可以不需要.BGI文件的支持运行 */ initgraph(&gd,&gm,""); } /*光标*/ void cursor() { setlinestyle(0,0,2) ; setcolor(WHITE); line(Xcursor+3,Ycursor+21,Xcursor+3,Ycursor+4); delay(3500); setcolor(BLACK); line(Xcursor+3,Ycursor+21,Xcursor+3,Ycursor+4); delay(3500); }
void matrix(int start,int Xsize,int Ysize,int a,int b) { int i; for(i=0;i<=a;i++) { line(start+i*Xsize,start,start+i*Xsize,start+b*Ysize); /*画竖线*/ } for(i=0;i<=b;i++) { line(start,start+i*Ysize,start+a*Xsize,start+i*Ysize);
}
} 为什么矩阵数组的mem[0][0]总是0?我试过了 一行一列时输入数字后按回车之后如果不按方向键就没问题 按了方向键就会为○? 当我把86行改成 for (;k>=0,k--) m[k]=0; k=0; 就都没问题了,虽然问题解决了 可是不知为什么会出现这种情况??我冥思苦想了半天了 百思不得其解,,郁闷死了,请大侠帮我分析下?感激不尽!!!!