从键盘上输入m和n的值,产生一个m行n列的随机整数(100以内)二维数组a,求出该二维数组m行的和及n列的和存放到一维数组x中 并显示,再按降序排序x并显示。本题附件中提供了教材例5.23中的arrayRib. c和array2lib.h可供使用。
时间: 2024-02-09 20:08:32 浏览: 65
用数组定义,随机输入100以内整数,然后倒序输出
好的,我理解了你的问题。以下是对应的 C 代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "array2lib.h"
#define MAX_VALUE 100
int cmp(const void *a, const void *b) {
return (*(int *) b - *(int *) a);
}
int main() {
int m, n;
printf("请输入 m 和 n 的值:");
scanf("%d %d", &m, &n);
srand((unsigned int) time(NULL));
int a[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = rand() % MAX_VALUE;
}
}
int x[m + n];
for (int i = 0; i < m + n; i++) {
x[i] = 0;
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
x[i] += a[i][j];
x[m + j] += a[i][j];
}
}
printf("数组 a:\n");
printArray2D(a, m, n);
printf("数组 x:\n");
printArray1D(x, m + n);
qsort(x, m + n, sizeof(int), cmp);
printf("数组 x 排序后:\n");
printArray1D(x, m + n);
return 0;
}
```
我们使用 `rand()` 函数生成随机整数,使用 `printArray2D()` 和 `printArray1D()` 函数分别输出二维数组和一维数组。最后使用 `qsort()` 函数进行排序,排序函数通过 `cmp()` 函数指定。
注意,附件中的 `arrayRib.c` 和 `array2lib.h` 库文件需要与源代码文件放在同一目录下。
阅读全文