C语言,将二维数组a[4][5]中的元素按列存放到一维数组b[20]中,二维数组元素键盘输入

如题所述

//希望我的回答对你的学习有帮助
#include <stdio.h>

int main()
{
int a[4][5] = {}, b[20] = {}; //定义并初始化为 0

for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 5; j++)
{
scanf("%d", &a[i][j]); //输入 20 个数据
}
}

printf("The a[4][5] is : \n");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%4d", a[i][j]); //将输入的数据输出一遍
}
printf("\n"); //数组中输出一行之后,换行
}

for (int i = 0, k = 0; i < 5; i++) //因为要按列存储,所以数组中行变,列不变
//所以外层循环是 5 次,内层循环为 4 次
{
for (int j = 0; j < 4; j++)
{
b[k++] = a[j][i]; //将 a 中的值 赋值给 b
}
}

printf("The b[20] is : \n");
for (int i = 0; i < 20; i++)
{
printf("%3d", b[i]); //输出 b 中的数据
if (i == 9) printf("\n"); //输出 10 个换一行
}

return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-20
#include<stdio.h>
#include<stdlib.h>

int main(){
int a[4][5], b[20];
int i,j;
for (i=0;i<4;i++){
for (j=0;j<5;j++) {
scanf("%d", &a[i][j]);
}
}

for (i=0;i<4;i++){
for (j=0;j<5;j++) {
b[i*5+j] = a[i][j];
}
}

for (i=0;i<20;i++){
printf("%d ",b[i]);
}

system("pause");
return 0;
}

第2个回答  2017-12-20
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
scanf("%d",&a[i][j]);}}
int k=0;
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
b[k]=a[i][j];
k++;
}}

大概是这个意思

相似回答