正在研究Kochans的书,并且在练习7.12中遇到了一些困难。目标是输入可变长度的二维数组并将其转置。我的转置部分还不错,但是当我将值输入数组时,它们并没有全部实现。代码如下。说我指定数组应具有两行和两列。我输入1,2,3,4。我得到的回报是1,2,3,32。我认为32只是个垃圾数字。虽然我怀疑算法有问题,但我无法弄清楚它是什么。任何见识将不胜感激。
#include <stdio.h>
int main (void)
{
int Matrix;
int transposedMatrix;
int a;
int b;
printf ("Enter rows\n");
scanf ("%i", &a);
printf ("Enter columns\n");
scanf ("%i", &b);
defineMatrix (a,b);
displayMatrix(a,b);
return 0;
}
void defineMatrix(a,b)
{
int Matrix[a][b];
int row, column;
for (row = 0; row < a; ++row){
for (column= 0; column < b; ++column){
printf ("Enter value");
scanf ("%i\n", &Matrix[row][column]);
}
}
return 0;
}
void displayMatrix(a,b)
{
int row, column;
int Matrix[a][b];
for (row = 0; row < a; ++row){
for (column= 0; column <b; ++column)
printf ("%5i", Matrix[row][column]);
printf ("\n");
}
}
最佳答案
您可以在defineMatrix中创建一个称为Matrix的矩阵。这是该函数的私有函数,函数完成后会被销毁。由于您希望动态调整大小的数组会使事情变得复杂,因此最简单的事情是不要使用这两个函数。只需将代码内联在main中
关于c - Kochan在C练习7.12中的编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28592349/