m行n列的各行各列之和以及对角线之和


#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#define N 10
using namespace std;
int main(){
int m,n;
int x;
int a[N][N],b[11]={0};
int i,j,k;
while(scanf("%d",&m)!=EOF){
scanf("%d",&n);
for( i=0;i<m;i++){
for( j=0;j<n;j++){
scanf("%d",&x);
a[i][j]=x;
}
}
k=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
b[k]+=a[i][j];
}
k++;
}
k=m;
for(i=0;i<m;i++){
b[k]+=a[i][i];
}
k=m+1;
for(j=0;j<n;j++){
for(i=0;i<m;i++){
b[k]+=a[i][j];
}


k++;
}for(k=0;k<n+m+1;k++){
printf("%d ",b[k]);
}printf("\n");
sort(b,b+n+m+1);
for(k=0;k<n+m+1;k++){
printf("%d ",b[k]);
}
printf("\n");
}


system ("pause");
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用两个循环来求解,代码如下: ``` int d2sum = 0; for (int i = 0; i < n; i++) { // 加上左上角到右下角的对角线上的元素 d2sum += a[i][i]; // 加上右上角到左下角的对角线上的元素 d2sum += a[i][n - i - 1]; } // 如果 n 为奇数,则中间的元素会被算两次,需要减去一次 if (n % 2 == 1) { d2sum -= a[n / 2][n / 2]; } ``` 其中,`a[i][i]` 表示左上角到右下角的对角线上的第 `i` 个元素,`a[i][n - i - 1]` 表示右上角到左下角的对角线上的第 `i` 个元素。 需要注意,如果 `n` 为奇数,则二维数组中间的元素会被算两次,因此需要减去一次。 ### 回答2: 算法如下: 1. 输入参数n和二维数组a。 2. 初始化变量d2sum为0。 3. 使用循环i遍历0到n-1: - 将a[i][i]加到d2sum中。 - 将a[i][n-i-1]加到d2sum中。 4. 输出d2sum。 代码如下: ```c++ #include<iostream> using namespace std; int main() { int n; cin >> n; int a[n][n]; for(int i=0; i<n; i++) for(int j=0; j<n; j++) cin >> a[i][j]; int d2sum = 0; for(int i=0; i<n; i++) { d2sum += a[i][i]; d2sum += a[i][n-i-1]; } cout << d2sum; return 0; } ``` 上述代码通过循环遍历二维数组a的对角线上的元素,并将其加到d2sum中,最后输出d2sum。 ### 回答3: 题目中给定了一个n*n的二维数组a,要求计算其两条对角线上各元素值之和d2sum。对角线上的元素只计算一次。 思路如下: 1. 初始化结果变量d2sum为0。 2. 用一个循环从第一开始遍历数组a中的每个元素。 3. 在遍历的过程中,使用两个变量row和col来表示当前遍历到的元素的。 4. 如果当前元素是位于主对角线或副对角线上的元素,则将其值加到d2sum中。主对角线上的元素满足row==col的条件,副对角线上的元素满足row==(n-col-1)的条件。 5. 最后返回d2sum作为结果。 下面是用Python语言实现的例子: def sum_diagonal_elements(a, n): d2sum = 0 for row in range(n): for col in range(n): if row == col or row == (n - col - 1): d2sum += a[row][col] return d2sum # 调用示例 a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] n = 3 result = sum_diagonal_elements(a, n) print("两条对角线上各元素值之和为:", result) 输出结果为: 两条对角线上各元素值之和为: 25 使用上述方法,可以有效地求得n*n二维数组a的两条对角线上各元素值之和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值