c - 在C中将两个二维数组合并为一个一维数组
问题描述
我采用了两个二维数组,但输出与预期的非常不同。它应该将两个二维数组合并为一个一维数组。我想合并两个数组。不添加。到处都是关于合并两个一维数组的信息和示例。请帮助某人。我不知道我错在哪里。
#include <stdio.h>
void print(int a[][3],int m);
int main()
{
int array1[3][3];
int array2[3][3];
int arraySum[6][3];
int k = 0; //put into array;
int l = 10;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
array1[i][j] = ++k; //fill from 1 to 10
array2[i][j] = ++l; //fill from 11 - 19
}
}
/*merge arrays*/
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < 3; j++)
{
(i < 3) ? arraySum[i][j] = array2[i][j] : arraySum[i][j] = array1[i-3][j];
//fill arraySum with array2 and append with array1.
//just so that arraySum does not have any order
}
}
printf("Arrays before sorting");
printf("Array 1: ");
print(array1,3);
printf("Array2: ");
print(array2,3);
printf("arraySum");
print(arraySum,6);
/* bubble sort*/
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < 3; j++)
{
for(int k = i+1; k < 6; k++)
{
for(int m = 0; m < 3; m++)
{
if(arraySum[i][j] > arraySum[k][m])
{
//swap
int temp = arraySum[i][j];
arraySum[i][j] = arraySum[k][m];
arraySum[k][m] = temp;
}
}
}
}
}
printf("\n\n Merged Array after sorting");
print(arraySum,6);
return 0;
}
void print(int a[][3],int m)
{
for(int i = 0; i < m; i++)
{
for(int j = 0; j < 3; j++)
{
printf("%d" , a[i][j]);
}
}
}
我想合并两个数组。不添加。到处都是关于合并两个一维数组的信息和示例。请帮助某人。我不知道我错在哪里。
解决方案
请尝试此代码,将两个二维数组合并为一个 C 中的一维数组
#include <stdio.h>
void print(int a[][3],int m);
int main()
{
int array1[3][3];
int array2[3][3];
int arraySum[6][3];
int k = 0; //put into array;
int l = 10;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
array1[i][j] = ++k; //fill from 1 to 10
array2[i][j] = ++l; //fill from 11 - 19
}
}
/*merge arrays*/
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < 3; j++)
{
(i < 3) ? (arraySum[i][j] = array2[i][j]) : (arraySum[i][j] = array1[i-3][j]);
//fill arraySum with array2 and append with array1.
//just so that arraySum does not have any order
}
}
printf("Arrays before sorting");
printf("Array 1: ");
print(array1,3);
printf("Array2: ");
print(array2,3);
printf("arraySum");
print(arraySum,6);
/* bubble sort*/
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < 3; j++)
{
for(int k = i+1; k < 6; k++)
{
for(int m = 0; m < 3; m++)
{
if(arraySum[i][j] > arraySum[k][m])
{
//swap
int temp = arraySum[i][j];
arraySum[i][j] = arraySum[k][m];
arraySum[k][m] = temp;
}
}
}
}
}
printf("\n\n Merged Array after sorting");
print(arraySum,6);
return 0;
}
void print(int a[][3],int m)
{
for(int i = 0; i < m; i++)
{
for(int j = 0; j < 3; j++)
{
printf("%d" , a[i][j]);
}
}
}
我希望这段代码有用。谢谢你。
推荐阅读
- postman - 如何在 Postman 预查询脚本和正文中获取当前的 ISO8601 时间戳?
- python - Python:从歌曲中获取频率
- .net - 将 SQL 连接字符串配置为通过内部网络或远程连接进行连接
- java - 如何使用 JOptionPane 以整数形式赋值?
- javascript - 如何同步 Nodejs 函数
- azure - Godaddy 域名到天蓝色静态网站的映射
- spring-cloud - 具有绝对 URL 的 FeignClient 无法在 Hoxton.RELEASE 中使用 Spring Cloud Loadbalancer
- r - 为什么 DCE 随机参数模型中的奇点错误 - mlogit - 由于选择退出/不购买?
- ios - 使用 Swift 在 iOS 中做出决策的最佳方式是什么
- php - 在表单焦点上隐藏占位符仅适用于一种表单