c语言实现输入10-20之间的一个整数M以及随机种子数s,用随机数(100<=随机数 && 随机数<=500)填充的方式填充一个以主对角线为对称轴的 M * M阶的对称方阵,计算输出主对角线元素之和,以及主对角线元素中的最大值和最小值.
时间: 2024-02-25 22:57:04 浏览: 52
好的,以下是实现这个功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MIN 100
#define MAX 500
int main() {
int M, s;
int matrix[20][20];
int i, j, sum = 0, max = 0, min = 0;
// 读取M和s
printf("请输入10-20之间的整数M:");
scanf("%d", &M);
if (M < 10 || M > 20) {
printf("输入有误!\n");
return 0;
}
printf("请输入随机种子数s:");
scanf("%d", &s);
// 生成随机数种子
srand(s);
// 填充方阵
for (i = 0; i < M; i++) {
for (j = i; j < M; j++) {
if (i == j) {
matrix[i][j] = rand() % (MAX - MIN + 1) + MIN; // 主对角线元素
sum += matrix[i][j];
max = matrix[i][j];
min = matrix[i][j];
} else {
matrix[i][j] = matrix[j][i] = rand() % (MAX - MIN + 1) + MIN; // 对称元素
}
if (matrix[i][j] > max) { // 寻找最大值
max = matrix[i][j];
}
if (matrix[i][j] < min) { // 寻找最小值
min = matrix[i][j];
}
}
}
// 输出结果
printf("主对角线元素之和为:%d\n", sum);
printf("最大值为:%d\n", max);
printf("最小值为:%d\n", min);
return 0;
}
```
这个程序中,首先读取用户输入的 $M$ 和随机种子数 $s$,然后按照题目要求生成一个以主对角线为对称轴的 $M \times M$ 阶的对称方阵,填充的随机数在 $100$ 到 $500$ 之间。同时,程序也会计算主对角线元素之和、最大值和最小值,并输出结果。需要注意的是,这个程序中假设用户输入的 $M$ 在 $10$ 到 $20$ 之间,如果需要扩展到其他范围,需要修改读取 $M$ 的部分的代码。
阅读全文