这个C语言程序到底哪儿错了嘛!!在VC++、DEV C++里面运行错误类型都不一样。我觉得没有错啊。

#include<stdio.h>
#include<conio.h>
main()
{
int n,i,j,k=1;
printf("odd: n=");
scanf("%d",&n);
int a[n][n]={0};
i=0;
j=(n-1)/2;
a[i][j]=k;
k++;
while(k<=n*n){
i--;j++;
if (j>=n && i<0 || a[i][j]!=0) {i+=2;j--;}
else if(i<0 && j<n) i=n-1;
else if(j>=n && i>=0) j=0;
a[i][j]=k;
k++;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
getch();
}

第1个回答  2012-05-22
int a[n][n]={0};
你这样定义了数组a是只包含"0"一个元素的数组,后面肯定出错
第2个回答  2012-05-22
2维数组的动态分配不能像你哪样,编译通不过
int a[n][n]={0};
下面这样才行
int n;
scanf("%d",&n);
int **a=new int*[n];
for (int i=0;i<n;i++)
{
a[i]=new int[n];
}本回答被网友采纳
第3个回答  2012-05-22
int a[n][n]={0};有错,不能这样建立数组
第4个回答  2012-05-22
你想你应该规定下输入n的范围 要是你的n直接等于零 那么j=(n-1)/2;a[i][j]=k直接就错了么 可以试着改下 还有有错要加错误信息啊
第5个回答  2012-05-22
int a[n][n]={0}; 静态数组是不能这样定义的, 数组大小应该是常量.
相似回答