从键盘上输入m和n的值,产生一一个m行n列的随机整数(100以内)二维数组a,求出该:二维数组m行的和及n列的和存放到一-维数组x中并显示,再按降序排序x并显示。用c语言简单写
时间: 2024-02-09 07:08:38 浏览: 79
C语言程序设计-产生20个[30,120]上的随机整数放入二维数组a[5][4]中,求每行元素的和.txt
5星 · 资源好评率100%
好的,根据你的要求,我可以提供以下C语言代码来解决你的问题:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_VALUE 100
int main() {
int m, n;
printf("请输入m和n的值:");
scanf("%d %d", &m, &n);
// 生成随机整数二维数组a
srand((unsigned)time(NULL));
int **a = (int **)malloc(sizeof(int *) * m);
for (int i = 0; i < m; i++) {
a[i] = (int *)malloc(sizeof(int) * n);
for (int j = 0; j < n; j++) {
a[i][j] = rand() % MAX_VALUE;
}
}
// 计算m行和n列的和
int *x = (int *)malloc(sizeof(int) * (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];
}
}
// 显示m行和n列的和
printf("m行的和:");
for (int i = 0; i < m; i++) {
printf("%d ", x[i]);
}
printf("\n");
printf("n列的和:");
for (int i = m; i < m + n; i++) {
printf("%d ", x[i]);
}
printf("\n");
// 按降序排序x并显示
for (int i = 0; i < m + n; i++) {
for (int j = i + 1; j < m + n; j++) {
if (x[i] < x[j]) {
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
printf("降序排序后:");
for (int i = 0; i < m + n; i++) {
printf("%d ", x[i]);
}
printf("\n");
// 释放内存
for (int i = 0; i < m; i++) {
free(a[i]);
}
free(a);
free(x);
return 0;
}
```
你可以将上述代码保存为一个 `.c` 文件,然后使用 C 语言编译器进行编译。注意,本题需要动态分配二维数组 `a` 和一维数组 `x`,因此需要使用 `malloc` 函数进行内存分配。编译成功后,会生成一个可执行文件,你可以运行它来查看结果。
希望这个C语言代码能够帮到你!
阅读全文