C语言:编写程序,读取一个维度不大于 10 X 10 的方阵,并完成以下操作: (1) 按行、列方式打印方阵; (2) 计算方阵的对角线元素(包括主对角线和副对角线的元素)的均值。结果保留小数点后 2 位数字
时间: 2024-10-13 13:15:33 浏览: 35
在C语言中,你可以通过以下步骤编写一个简单的程序来完成这个任务:
```c
#include <stdio.h>
#include <math.h>
#define ROWS 10
#define COLS 10
// 定义结构体存储矩阵元素
typedef struct {
int matrix[ROWS][COLS];
} Matrix;
// 函数声明
void print_matrix(Matrix m);
double diagonal_mean(Matrix m);
int main() {
// 初始化矩阵
Matrix arr;
printf("请输入一个 %dx%d 的方阵:\n", ROWS, COLS);
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
scanf("%d", &arr.matrix[i][j]);
}
}
// 打印矩阵
print_matrix(arr);
// 计算并打印对角线元素的平均值
double mean = diagonal_mean(arr);
printf("主对角线和副对角线元素的均值(保留两位小数):%.2f\n", mean);
return 0;
}
// 按行和列打印矩阵
void print_matrix(Matrix m) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%4d ", m.matrix[i][j]); // 使用4个空格保证对齐
}
printf("\n");
}
}
// 计算对角线元素的平均值
double diagonal_mean(Matrix m) {
int sum = 0;
int count = 0;
// 主对角线
for (int i = 0; i < ROWS && i < COLS; i++) {
sum += m.matrix[i][i];
count++;
}
// 副对角线
if (ROWS >= COLS) { // 如果行数大于列数
for (int i = 0; i < COLS; i++) {
sum += m.matrix[i][ROWS - 1];
count++;
}
} else { // 否则,如果列数大于行数
for (int i = 0; i < ROWS; i++) {
sum += m.matrix[i][COLS - i - 1];
count++;
}
}
return (double)sum / count; // 返回平均值
}
```
在这个程序中,首先定义了一个矩阵结构体,然后通过`main()`函数获取用户输入的矩阵元素,打印矩阵,计算并显示对角线元素的平均值。
阅读全文