PTA 练习7-7 矩阵运算 (20分)

本文介绍了一种计算矩阵除副对角线、最后一列和最后一行以外所有元素之和的算法。通过使用二维数组表示矩阵,并巧妙地遍历和累加符合条件的元素,实现了高效的求和过程。

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例1:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例1:

35

答案代码块

//本题思路,用二维数组表示矩阵。x,y表示最后一列与副对角线,对角线在换行时向前挪动一位。
#include <stdio.h>

#define MAXS 10

int main(){
	int n,m,i,l;
	int sum=0,x=0,y=0;	//x为最后一列,y为主对角线
	int s[MAXS][MAXS];	//二维数组
	scanf("%d",&n);
	if(n>1 && n<=10){	//输入范围
		for(i=0;i<n;i++){
			for(l=0;l<n;l++){
				scanf("%d",&m);	//二维数组输入
				s[i][l] = m;
			}
		}
	}else{
		return 0;
	}
	x=y=n-1;	//讲x,y设置在最后一位
	for(i=0;i<n-1;i++){	//n-1跳过最后一行
		for(l=0;l<n;l++){
			if(l==x){	//当前位置在最后一列时跳过本次循环
				continue;
			}else if(l==y){	//当前位置在主对角线时跳过本次循环
				continue;
			}
			sum += s[i][l];	//求和
		}
		y--;	//换行前将y的位置向前挪动一位
	}
	printf("%d",sum);
	return 0;
}
### 关于二维数组矩阵运算PTA练习题及解法 #### 幻方构建算法实现 幻方是一种特殊的 \(N \times N\) 矩阵,其特性是由连续整数 \(1, 2, ..., N^2\) 构成,并满足每行、每列以及两条对角线元素之和相等。对于奇数阶幻方,可以采用特定的方法来填充这些数值[^1]。 ```python def fill_magic_square(n): magic_square = [[0 for _ in range(n)] for _ in range(n)] num = 1 i, j = n // 2, n - 1 while num <= (n * n): if i == -1 and j == n: j = n - 2 i = 0 else: if j == n: j = 0 if i < 0: i = n - 1 if magic_square[i][j]: j -= 2 i += 1 continue magic_square[i][j] = num num += 1 i -= 1 j += 1 return magic_square def print_magic_square(square_matrix): for row in square_matrix: print(' '.join(f'{num:4d}' for num in row)) ``` 此代码实现了基于给定规则创建一个奇数维度的幻方,并打印出来。 #### 向量加法函数设计 针对平面向量加法问题,可以通过简单的循环结构完成两个向量对应位置元素的操作。考虑到特殊情况下浮点数表示形式的要求,在最终输出前需做适当处理[^2]。 ```python import math def add_vectors(v1, v2): result_x = round((v1[0]+v2[0]), 1) result_y = round((v1[1]+v2[1]), 1) # Avoid displaying "-0.0" if abs(result_x) < 1e-9: result_x = 0.0 if abs(result_y) < 1e-9: result_y = 0.0 return f"{result_x:.1f} {result_y:.1f}" vector_1 = (-7.8, 3.5) vector_2 = (4.6, -2.1) print(add_vectors(vector_1, vector_2)) # Output should be similar to " -3.2 1.4" ``` 上述代码片段展示了如何接收一对二维向量作为参数并返回它们相加之后的结果字符串,其中包含了必要的精度控制逻辑以确保不会出现 `-0.0` 的情况。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值