二维数组行列互换,并存到另一个二维数组中。

#include <stdio.h>
void main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3],i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%8d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%8d",b[i][j]);
}
}
printf("\n");
}
为什么互换后的另一个二维数组输入不正确?错在哪呢?

具体算法如下:

#include<stdio.h>

int main()

{

int i, j, a[2][3] = { {1,2,3},{4,5,6} },b[3][2];

printf("array a:\n");

for (i = 0; i <=1; i++)//处理a数组中的一行中各元素

{

for (j = 0; j <= 2; j++)//处理a数组中的某一列元素

{

printf("%5d", a[i][j]);

b[j][i] = a[i][j];

}

printf("\n");

}

printf("array b:\n");

for (i = 0; i<=2; i++)

{

for (j = 0; j <=1; j++)

{

printf("%5d", b[i][j]);

}

printf("\n");

}

return 0;

}

扩展资料:

C语言——关于二维数组的初始化问题:

1、定义二维数组的方法和一维数组相似,如:

2、int a[3][3];

3、就是定义了一个3行3列的二维数组。

4、但是么要注意,这个3行3列的二维数组是逻辑上的概念,能形象的表示出行列关系。而在内存中,各元素是连续存放的,不是二维的,是线性的,这点大家一定要清楚。

5、二维数组的初始化,可以分行给元素赋值,如步骤一的图。

6、也可以将所有数据写在一个花括号内,按照元素在内存中的排列顺序对各元素赋初值。但是这种方法一旦数据很多,会写成一大片,容易遗漏,不方便检查。

7、可以对部分元素赋值,例如:

8、int a[3][3]={{1},{4},{7}};

9、也可以只对某几行赋值,例如:

10、int a[3][3]={{1,2},{4}};

11、如果对全部元素都赋初值,则定义数组时可以对第一维的长度不指定,但第二维的长度不能省去。

12、也可以只对部分元素赋值,而省略第一维的长度,但应该分行赋值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-14

#include<stdio.h>

int main()

{

int i, j, a[2][3] = { {1,2,3},{4,5,6} },b[3][2];

printf("array a:\n");

for (i = 0; i <=1; i++)//处理a数组中的一行中各元素

{

for (j = 0; j <= 2; j++)//处理a数组中的某一列元素

{

printf("%5d", a[i][j]);

b[j][i] = a[i][j];

}

printf("\n");

}

printf("array b:\n");

for (i = 0; i<=2; i++)

{

for (j = 0; j <=1; j++)

{

printf("%5d", b[i][j]);

}

printf("\n");

}

return 0;

}

运行结果:

扩展资料

printf用法:

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d\n",a);

输出结果为a=1234。

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include&lt;stdio.h&gt;。

int scanf(const char*restrict format,...);

函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

如:

scanf("%d%d",&a,&b);

函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。

本回答被网友采纳
第2个回答  推荐于2018-02-27
#include <stdio.h>
void main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3],i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%8d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%8d",b[i][j]);
}
printf("\n"); //把这个换行放在这里
}

}本回答被提问者和网友采纳