【程序功能】 将一个二维数组中的若干行数据按要求插入到另一个二维数组中。

5.(江苏省二级C等级考试题目
【程序功能】
将一个二维数组中的若干行数据按要求插入到另一个二维数组中。
【编程要求】
1 .定义符号常量N代表4
2 .编写函数int insert_row(int a[][N], int n, int b[][N], int m)。已知形参a指向的二维数组(简称a数组)前n行数据已按每行数据前两列之和降序排列,形参b指向的二维数组中有m行数据。insert_row函数实现将b数组中m行数据插入到a数组中,完成插入操作后a数组中所有行的数据仍按每行前两列数据之和降序排列。函数返回a数组中有效数据的行数。
3 .编写main函数。读入两个二维数组a,b的行数,再读入a和b,用a和b数组作为实参调用insert_row函数将b数组中的数据插入到a数组中。输出a数组中全部数据到屏幕
【测试数据与运行结果】
输入数据:
2 2
2 3 3 4
1 2 11 12
1 5 5 7
5 10 15 20
输出数据:
5 10 15 20
1 5 5 7
2 3 3 4
1 2 11 12
【注意】:以下程序代码只允许添加不允许修改。
#include <malloc.h>
#include <stdio.h>
#define N 4
typedef int (*MATRIX)[N];
void read(int (*a)[N],int n){
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < N; j++)
scanf("%d", &a[i][j]);
}
int insert_row(int a[][N], int n, int b[][N], int m){
}
void print(int(*a)[N], int m){
int i, j;
for (i = 0; i < m; i++)
{
for (j = 0; j < N; j++)
printf("%d ", a[i][j]);
putchar('\n');
}
}
int main(){
int m, n;
int(*a)[N],(*b)[N];
scanf("%d%d", &n, &m);
a = (MATRIX)malloc(N * sizeof(int) * (n+m));
b = (MATRIX)malloc(N * sizeof(int) * m);
read(a,n); //读入n行
read(b,m); //读入m行
n=insert_row(a, n, b, m);
print(a, n);
free(a);
free(b);
}

其实就是排序算法的变种,可以先将b插入a中,然后,计算a中所有行数据前两列的和,并根据和进行排序即可。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632