写一个c语言程序,实现从键盘输入一个5行5列的矩阵存到二维数组a。并实现以下要求: (1)把二维数组a中的每一行的所有元素进行求和输出,每行显示一个结果。 (2)把二维数组a中的对角线元素置1,再显示二维数组a。 (3)输出二维数组a中的最大元素、最小元素。
时间: 2024-12-23 18:25:56 浏览: 7
C语言程序设计-在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和
5星 · 资源好评率100%
在C语言中,你可以创建一个简单的程序来满足上述需求。首先,你需要定义一个5x5的二维数组,并从用户那里获取输入。然后,计算每行的和,更新对角线元素,以及找到最大值和最小值。以下是相应的代码实现:
```c
#include <stdio.h>
#define ROWS 5
#define COLS 5
// 定义一个函数来读取用户输入并填充二维数组
void input_matrix(int a[ROWS][COLS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("Enter element a[%d][%d]: ", i, j);
scanf("%d", &a[i][j]);
}
}
}
// 计算每行的和
void print_row_sums(int a[ROWS][COLS]) {
for (int i = 0; i < ROWS; i++) {
int sum = 0;
for (int j = 0; j < COLS; j++) {
sum += a[i][j];
}
printf("Sum of row %d: %d\n", i+1, sum);
}
}
// 更新对角线元素为1
void set_diagonal(int a[ROWS][COLS]) {
for (int i = 0; i < ROWS; i++) {
a[i][i] = 1;
}
}
// 找到并打印数组中的最大值和最小值
void find_min_max(int a[ROWS][COLS]) {
int max_val = a[0][0], min_val = a[0][0];
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (a[i][j] > max_val) {
max_val = a[i][j];
}
if (a[i][j] < min_val) {
min_val = a[i][j];
}
}
}
printf("Max value: %d\n", max_val);
printf("Min value: %d\n", min_val);
}
int main() {
int a[ROWS][COLS];
// 输入矩阵
input_matrix(a);
// 显示原始矩阵
printf("Original matrix:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 更新对角线并打印
set_diagonal(a);
printf("Matrix with diagonal elements set to 1:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
// 计算并打印行和
print_row_sums(a);
// 找到并打印最大值和最小值
find_min_max(a);
return 0;
}
```
运行这个程序后,它会提示你逐个输入5x5矩阵的元素,之后按照要求显示行和、更新后的矩阵、以及最大值和最小值。
阅读全文