第1个回答 2011-11-18
可以这样:
int n;
scanf("%d",&n);
int *a=(int*)malloc((n*n)*sizeof(int)); /* 申请 n*n 个 int型单元 */
然后,将一维数组映射到二维数组,即:
a[i*n+j] 为二维数组 第 i 行第 j 列元素(i,j=0,1,...,n-1)。例如:
#include<stdio.h>
#include<stdlib.h>
int main () {
int i,j,k;
int n;
printf("n=?");
scanf("%d",&n);
int *a=(int*)malloc((n*n)*sizeof(int)); /* 申请 n*n 个 int型单元 */
for(i=0; i<n; i++){
for(j=0; j<n; j++){
k=i*n+j;
scanf("%d",&a[k]);
}
}
for(i=0; i<n; i++){
for(j=0; j<n; j++){
k=i*n+j;
printf("%d\t",a[k]);
}
printf("\n");
}
free(a); /* 任务完成后,释放内存 */
return 0;
}