院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵
一、1134矩阵翻转
1.题目描述
2.解题思路
很简单的模拟题,甚至只是上下翻转,遍历输出的时候先把最下面那一行输出即可。
3.代码
#include <iostream>
#include <vector>
using namespace std;int main() {int n;cin >> n;vector<vector<int>> matrix(n, vector<int> (n, 0));for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {cin >> matrix[i][j];}}for(int i = n - 1; i >= 0; i--) {for(int j = 0; j < n; j++) {cout << matrix[i][j] << ' ';}cout << endl;}return 0;
}
二、1052学生成绩管理
1.题目描述
2.解题思路
涉及到结构体的一些复习,不过具体怎么写大体的思路都在题目要求里写了,主要就是结构体相关输入输出和数据处理。
关键点:如何保证输出的数据保留一位小数。引入头文件<iomanip>,cout中设置setprecision即可。 cout << fixed << setprecision(1) << students[i].xingming......
3.代码
ps:有的垃圾编译器连INT_MIN都识别不了。
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
using namespace std;struct student{string xuehao;string banji;string xingming;double grade[3];double avg;
};vector<student> shuru(vector<student> students, int n) {for(int i = 0; i < n; i++) {cin >> students[i].xuehao >> students[i].banji >> students[i].xingming;for(int j = 0; j < 3; j++) {cin >> students[i].grade[j];}}return students;
}vector<student> avgGrade(vector<student> students, int n) {double sum = 0;for(int i = 0; i < n; i++) {sum = 0;for(int j = 0; j < 3; j++) {sum += students[i].grade[j];}students[i].avg = sum / 3;}return students;
}int main() {int n;cin >> n;vector<student> students(n);students = shuru(students, n);students = avgGrade(students, n);for(int i = 0; i < n; i++) {cout << fixed << setprecision(1) << students[i].xingming << ' ' << students[i].avg << endl;}int index = 0;double maxAvg = INT_MIN;for(int i = 0; i < n; i++) {if(students[i].avg > maxAvg) {index = i;maxAvg = students[i].avg;}}cout << fixed << setprecision(1) << students[index].xuehao << ' '<< students[index].banji <<' '<< students[index].xingming <<' '<< students[index].grade[0] <<' '<< students[index].grade[1] <<' '<< students[index].grade[2] << ' '<< students[index].avg;return 0;
}
三、1409对称矩阵
1.题目描述
2.解题思路
很弱智
简单的模拟题,对称矩阵就是判断a[i][j]和a[j][i]是否相等,有一个不相等就不是对称矩阵。
3.代码
#include <iostream>
#include <vector>
using namespace std;int main() {int n;while(cin >> n) {int flag = 1;vector<vector<int>> matrix(n, vector<int> (n, 0));for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {cin >> matrix[i][j];}}for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {if(matrix[i][j] != matrix[j][i]) {flag = 0;}}}if(flag == 0) {cout << "No!" << endl;} else {cout << "Yes!"<< endl;}}return 0;
}