永发信息网

自己写的(vc6.0下)关于俄罗斯方块的程序遇到点问题

答案:1  悬赏:80  手机版
解决时间 2021-08-20 15:45
  • 提问者网友:骑士
  • 2021-08-20 03:52

先是测试显示随机生成的图形,编译通过,结果内存出错,不知哪错了,代码如下:

#include<stdio.h>
#include<time.h>
#include <stdlib.h>

void MakeImage()//随机生成俄罗斯方块的图形
{
 int a[3][3];
 int i;
 int j;
 for(i=0;i<3;i++)
 {
  for(j=0;j<3;j++)
  a[i][j]=0;
 }
 srand(time(0));
 j=rand()%15;
 switch(j)//由此产生各种图形
 {
 case 1:
  a[0][0]=1;
  a[0][1]=1;
  a[1][0]=1;
  a[1][1]=1;
  break;
 case 2:
  a[0][0]=1;
  a[1][0]=1;
  a[2][0]=1;
  a[3][0]=1;   
  break;
 case 3:
  a[0][0]=1;
  a[0][1]=1;
        a[0][2]=1;
  a[0][3]=1;
     break;
 case 4:
  a[0][0]=1;
  a[1][0]=1;
  a[2][0]=1;
  a[2][1]=1;
  break;
 case 5:
  a[0][2]=1;
  a[1][0]=1;
  a[1][1]=1;
  a[1][2]=1;
  break;
 case 6:
  a[0][0]=1;
  a[0][1]=1;
  a[1][1]=1;
  a[2][1]=1;
  break;
 case 7:
  a[0][0]=1;
  a[0][1]=1;
  a[0][2]=1; 
  a[1][0]=1;
  break;
 case 8:
  a[0][1]=1;
  a[1][1]=1;
  a[2][0]=1; 
  a[2][1]=1;
  break;
 case 9:
  a[0][0]=1;
  a[0][1]=1;
  a[0][2]=1; 
  a[1][2]=1;
  break;
 case 10:
  a[0][0]=1;
  a[0][1]=1;
  a[1][0]=1; 
  a[2][0]=1;
  break;
 case 11:
  a[0][0]=1;
  a[1][0]=1;
  a[1][1]=1; 
  a[1][2]=1;
  break;
 case 12:
  a[0][0]=1;
  a[0][1]=1;
  a[1][1]=1; 
  a[1][2]=1;
  break;
 case 13:
  a[0][1]=1;
  a[1][0]=1;
  a[1][1]=1; 
  a[2][0]=1;
  break;
 case 14:
  a[0][0]=1;
  a[0][1]=1;
  a[1][1]=1; 
  a[1][2]=1;
  break;
 case 15:
  a[0][0]=1;
  a[1][0]=1;
  a[1][1]=1;
  a[2][1]=1;
  break;
 }

}
void main()

 int a[40][15];
    int i;
 int j;
    for(i=0;i<40;i++)
 {
  for(j=0;j<15;i++)
  a[i][j]=0;
 }

 MakeImage();
 for(i=0;i<40;i++)
 {
  for(j=0;j<15;i++)
   if(a[i][j]==0)
   {
    printf(" ");
   }
   else
   {
    printf("#");
   }
 }
}
不要给我个长长的源程序,我只要解释。

最佳答案
  • 五星知识达人网友:冷風如刀
  • 2021-08-20 04:34

你主函数里面两次嵌套循环内层应该是j++全写成i++了,成了死循环了。超出数组下标后当然越界了。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯