PAT 乙级 1037
题目 题目地址: PAT 乙级 1037 题解 本题 有两个版本的代码,初版因为种种问题写得比较繁琐,具体的分析见后文,更新的之后的版本相对来说要好很多,代码也比较清晰简洁。 初版的代码主要有如下几方面的问题: 1. 代码繁琐,把简单的问题复杂化。 2. 刷题一直在用C++,虽说C和C++相似,但是思路一直在框定在C++的范围内,不够灵活。 下面就具体代码进行分析: 代码 1 #include <iostream> 2 #include <string> 3 #include <cmath> 4 using namespace std; 5 6 struct Data { 7 string str; 8 int g; 9 int s; 10 int k; 11 int Q; 12 }; 13 14 int str2int(string s) { 15 int num = 0; 16 int cnt = 0; 17 for (int i = s.size() - 1; i >= 0; i--) { 18 num += (int(s[i]) - 48) * pow(10, cnt); 19 cnt++; 20 } 21 return num; 22 } 23 24 void str2num(Data &s) { 25 int cnt = 0, loc = 0; 26 for (int