C语言读入一个正整数n(1≤n≤20),再读入n行n列共n²个整数并存入由二维数组表示的方阵m;计算并输出每一行的元素和;计算并输出每一列的元素和;计算并输出对角线上的元素和(即所有m[i][i]的和, i取0~n-1)。
时间: 2025-01-04 13:39:40 浏览: 11
在C语言中,你可以按照以下步骤完成这个任务:
1. 首先,你需要使用`scanf`函数来读入一个正整数`n`,检查它是否在1到20之间,如果不在范围,可以提示用户重新输入。
```c
int n;
scanf("%d", &n);
while (n < 1 || n > 20) {
printf("请输入1到20之间的正整数:");
scanf("%d", &n);
}
```
2. 然后创建一个大小为`n * n`的二维数组`m`来存储输入的整数。
```c
int m[n][n];
```
3. 使用两个嵌套的循环`for`来读入每个元素,并累加到对应的行和列的总和。
```c
int row_sums[n], col_sums[n]; // 初始化行和列的和
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &m[i][j]);
row_sums[i] += m[i][j]; // 行和累加
col_sums[j] += m[i][j]; // 列和累加
}
}
```
4. 计算主对角线(即数组下标`i == j`)上的元素和:
```c
int diag_sum = 0;
for (int i = 0; i < n; i++) {
diag_sum += m[i][i];
}
```
5. 最后,遍历结果并输出每行、每列以及对角线的元素和。
```c
printf("每行元素和:\n");
for (int i = 0; i < n; i++) {
printf("%d ", row_sums[i]);
}
printf("\n每列元素和:\n");
for (int i = 0; i < n; i++) {
printf("%d ", col_sums[i]);
}
printf("\n对角线元素和:%d\n", diag_sum);
```
阅读全文