果宝特攻 第4季:暴郁闷!!!!高手们来看看我的C程序吧!!!谢谢啊!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 08:20:49
为什么下面的程序检查的没有问题,但是一运行就弹出对话框说ntvdm cpu 遇到无效指令,````选择"关闭"终止应用程序!
为什么?为什么?为什么?为什么?
#define nx 7
#define ny 5
#include "stdio.h"
#include "stdlib.h"
main()
{
int i,j,k,a[(2*ny-2)*(nx-1)][3];
FILE *fp;
a[1][1]=2,a[1][2]=1,a[1][3]=ny+1,a[2][1]=ny+1,a[2][2]=ny+2,a[2][3]=2;
if((fp=fopen("outlnd.txt","w"))==NULL)
{ printf("can't open file");
exit(0);
}
printf("check nx %d and ny%d\n",nx,ny);

for(i=3;i<=(2*ny-2)*(nx-1);i++)
{
for(j=1;j<=3;j++)
a[i][j]=a[i-2][j]+1;
}

for(k=2*ny-1;k<=(2*ny-2)*(nx-1);k=k+2*(ny-1))
{ for(i=k;i<=(2*ny-2)*(nx-1);i++)
{for(j=1;j<=3;j++)
a[i][j]=a[i][j]+1;
}
}

a[1][1]=2,a[1][2]=1,a[1][3]=ny+1,a[2][1]=ny+1,a[2][2]=ny+2,a[2][3]=2;

上面的代码里数组第二维越界了,应该最多是2。

我想你应该重点怀疑数组越界问题,你可以用注释掉可疑语句的方法定位错误。

不知道...你也不告诉我们你的程序是干什么的
还用文件操作...想帮你调试都困难
不过你只是往里面写啊..把那段去了看看是不是别的错误?

a[(2*ny-2)*(nx-1)][3] 数组使用的错。
Min ( a[0][0]) --> Max ( a[(2*ny-2)*(nx-1) - 1][2] ).
不是a[(2*ny-2)*(nx-1)][3].

VB用多了!

c没有动态数组.