用C++实现求动态矩阵各元素的和

 一,n阶方阵求和

功能:输入方阵维度,点击<Enter>,然后根据提示输入矩阵各阶元素,点击<Enter>,最后输出矩阵以及矩阵各元素的和。

代码:

#include<iostream>
using namespace std;

//输入维度n,输出n维矩阵,并求各元素和
int main()
{
	int **p,n,i,j,sum=0;
	cout<<"请输入矩阵维度n:";
	cin>>n;
	p=new int*[n];
	for(i=0;i<n;i++)
		p[i]=new int[n];
	if(p==NULL)
	{
		cout<<"没有申请到动态空间,即将退出"<<endl;
		exit(3);
	}
	cout<<"请输入矩阵元素:"<<endl;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			cin>>p[i][j];
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			cout<<p[i][j]<<"\t";
			sum+=p[i][j];
		}
		cout<<endl;
		
	}
	cout<<"矩阵各元素之和为:"<<sum<<endl;
	delete[]p;
	return 0;
}

效果截图:

二,任意行任意列矩阵求和 

功能:输入矩阵行数,点击<Enter>,输入矩阵行数,点击<Enter>,然后根据提示输入矩阵各阶元素,点击<Enter>,最后输出矩阵以及矩阵各元素的和。

代码:

#include<iostream>
using namespace std;

int main()
{
	int **p,r,c,i,j,sum=0;
	cout<<"请输入矩阵行数r:";
	cin>>r;
	cout<<"请输入矩阵列数c:";
	cin>>c;
	p=new int*[r];
	for(i=0;i<r;i++)
		p[i]=new int[c];
	if(p==NULL)
	{
		cout<<"没有申请到动态空间,即将退出"<<endl;
		exit(3);
	}
	cout<<"请输入矩阵元素:"<<endl;
	for(i=0;i<r;i++)
		for(j=0;j<c;j++)
			cin>>p[i][j];
	for(i=0;i<r;i++)
	{
		for(j=0;j<c;j++)
		{
			cout<<p[i][j]<<"\t";
			sum+=p[i][j];
		}
		cout<<endl;
		
	}
	cout<<"矩阵各元素之和为:"<<sum<<endl;
	delete[]p;
	return 0;
}

效果截图:

​​​​​​​

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个 Python3 实现: ```python matrix = [] for i in range(3): row = list(map(int, input().split())) matrix.append(row) row_sums = [sum(row) for row in matrix] col_sums = [sum(col) for col in zip(*matrix)] diag_sums = [sum(matrix[i][i] for i in range(3)), sum(matrix[i][2-i] for i in range(3))] max_sum = max(row_sums + col_sums + diag_sums) print(max_sum) ``` 输入格式为一行9个整数,可以使用 `input()` 函数读取。首先将输入的数字按照3行3列的方式存储在 `matrix` 中。然后使用列表推导式出每行、每列以及对角线的和,分别存储在 `row_sums`、`col_sums` 和 `diag_sums` 中。使用 `zip()` 函数可以方便地将矩阵的列转换为行进行求和。 最后将所有和的最大值取出并输出即可。 ### 回答2: 对于一个3*3矩阵,我们可以先出每行、每列和以及两条对角线的和,然后找出其中的最大值。 假设输入的矩阵为: a11 a12 a13 a21 a22 a23 a31 a32 a33 首先,我们可以计算每行和: row1_sum = a11 + a12 + a13 row2_sum = a21 + a22 + a23 row3_sum = a31 + a32 + a33 然后,计算每列和: col1_sum = a11 + a21 + a31 col2_sum = a12 + a22 + a32 col3_sum = a13 + a23 + a33 再计算两条对角线的和: diag1_sum = a11 + a22 + a33 diag2_sum = a13 + a22 + a31 最后,我们可以找出这些和值中的最大值: max_sum = max(row1_sum, row2_sum, row3_sum, col1_sum, col2_sum, col3_sum, diag1_sum, diag2_sum) 输出结果为 max_sum。 ### 回答3: 要矩阵每行、每列及对角线和的最大值,可以按照以下步骤进行解: 1. 读取输入的9个整数,并将它们依次填入3*3矩阵。 2. 对每一行求和,得到三个行和。 3. 对每一列求和,得到三个列和。 4. 对两个对角线进行求和,得到两个对角线的和。 5. 比较三个行和、三个列和以及两个对角线的和,找到其中的最大值。 6. 输出最大值。 以下是相应的代码实现: ```python # 读取输入 nums = input().split() matrix = [] for i in range(0, 9, 3): matrix.append(nums[i:i+3]) # 将字符串转换为整数 for i in range(3): matrix[i] = [int(x) for x in matrix[i]] # 计算行和 row_sum = [sum(row) for row in matrix] # 计算列和 col_sum = [sum(col) for col in zip(*matrix)] # 计算对角线和 diag_sum1 = matrix[0][0] + matrix[1][1] + matrix[2][2] diag_sum2 = matrix[0][2] + matrix[1][1] + matrix[2][0] # 解最大值 max_sum = max(max(row_sum), max(col_sum), diag_sum1, diag_sum2) # 输出最大值 print(max_sum) ``` 以上代码可实现对3*3矩阵每行、每列及对角线和的最大值解和输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值