[SWU]如何读取来自数据文件的m行n列的矩阵
有一个题是这样的:
读取数据文件的m行n列的矩阵,将矩阵转置之后输出到标准输出。
------解决方案--------------------
没实际编译链接调试,不保证对。仅供参考:
//读取数据文件的m行n列的矩阵,将矩阵转置之后输出到标准输出。
#include
FILE *f;
int y,x,m,n;
int A[m][n];
int main() {
m=3;
n=4;
f=fopen("data.txt","r");
if (NULL==f) {
fprintf(stderr,"Can not open file data.txt!\n");
return 1;
}
for (y=0;y
for (x=0;x
if (1!=fscanf(f,"%d",&A[y][x])) {
fprintf(stderr,"Can not read A[%d][%d]!\n",y,x);
return 2;
}
}
}
fclose(f);
for (x=0;x
for (y=0;y
printf("%d ",A[y][x]);
}
printf("\n");
}
return 0;
}
------解决方案--------------------
第5行int A[m][n];应改为int A[3][4];
第18行前应加一句fclose(f);
如果嫌m和n是写死不能动态修改的话,参考:
//在堆中开辟一个4×5的二维int数组
#include
#include
int **p;
int i,j;
void main() {
p=(int **)malloc(4*sizeof(int *));
if (NULL==p) return;
for (i=0;i<4;i++) {
p[i]=(int *)malloc(5*sizeof(int));
if (NULL==p[i]) return;
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
p[i][j]=i*5+j;
}
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
printf(" %2d",p[i][j]);
}
printf("\n");
}
for (i=0;i<4;i++) {
free(p[i]);
}
free(p);
}
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19