第一题:
题目(单对角线和):
分析: 用结构体的话,太麻烦了,专业一点,用本该属于它的知识点来解决它。
代码:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int matrix[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += matrix[i][i];
}
cout << sum << endl;
return 0;
}
第二题:
题目:计算矩阵边缘元素之和
题目来源:http://124.222.71.12/problem.php?id=1089
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m,n,a[101][101];
int sum=0;
cin>>m>>n;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>a[i][j];
if(i==0||i==m-1||j==0||j==n-1) //非常重要
{sum = sum +a[i][j];
}
}
}
cout<<sum;
return 0;
}
重要知识点:
if(i==0||i==m-1||j==0||j==n-1) //矩阵边缘
第三题(双对角线和):
代码:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int matrix[n][n];
if(n%2==0){
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += matrix[i][i];
}
for(int i=0;i<n;i++)
{
sum=sum+matrix[i][n-i];
}
cout << sum << endl; }
if(n%2==1){for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += matrix[i][i];
}
for(int i=0;i<n;i++)
{
sum=sum+matrix[i][n-i];
}
sum = sum-matrix[n/2+1][n/2+1];
cout << sum << endl; }
return 0;
}
重要知识点:
如果n是奇数,会多加一个二维数组的[n/2+1][n/2+1],所以用if语句判断奇偶。
结语:二维数组大概了解的差不多了,刷题去吧!!!
程序员的必备技能:
有时候自己觉得代码一点问题都没有,连问身边的人也没看出毛病,就说问题出在电脑,出在编辑器,这时候,你要意识到,其实你和电脑,编辑器都没有错,只不过你在输入代码是弄错了一点,需要你仔细仔细仔细仔仔细细的检查一遍,去找出小错误并改正,这是出现程序员的必经之路。 (今天我找一个小错误找了将近一小时,突然想写点东西让自己永远记住。)