具体算法如下:
#include
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、也可以只对部分元素赋值,而省略第一维的长度,但应该分行赋值。
#include
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("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
int a=1234;
printf("a=%d\n",a);
输出结果为a=1234。
scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。
int scanf(const char*restrict format,...);
函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
如:
scanf("%d%d",&a,&b);
函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。
#include
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"); //把这个换行放在这里
}
}