PTA练习题
1.输出A+B千位逗号
第一次提交,部分正确
#include <iostream>
using namespace std;
int main() {
int a, b;
int count = 0; //用于控制逗号位置
cin >> a >> b;
string s = to_string(a + b); //转字符串处理
if(s[0] == '-'){
cout << '-';
s.erase(0, 1); //为负数则输出负号,再处理逗号
}
for(int i = 0;i <= s.length();i++){
count++;
if(count%3==0){
cout << ",";
}
cout << s[i];
}
}
大意了,未去掉末尾的逗号
第二次提交还是部分出错,找了半天发现是因为逗号输出是从前向后的,修改输出方式为插入逗号后最终整体输出
#include <iostream>
using namespace std;
int main() {
int a, b;
int count = 0; //用于控制逗号位置
cin >> a >> b;
string s = to_string(a + b); //转字符串处理
if(s[0] == '-'){
cout << '-';
s.erase(0, 1); //为负数则输出负号,再处理逗号
}
for(int i = s.length();i >= 0;i--){
count++;
if((count%3==0)&&(i > 0)){
s.insert(i - 1, ",");
}
}
cout << s;
}
哭了,还是有两个测试点错误,反复测试发现有时会在第一位输出逗号,将判定范围后移,终于对了。
#include <iostream>
using namespace std;
int main() {
int a, b;
int count = 0; //用于控制逗号位置
cin >> a >> b;
string s = to_string(a + b); //转字符串处理
if(s[0] == '-'){
cout << '-';
s.erase(0, 1); //为负数则输出负号,再处理逗号
}
for(int i = s.length();i > 0;i--){
count++;
if((count%3==0)&&(i > 1)){
s.insert(i - 1, ",");
}
}
cout << s;
}
2.多项式相加
#include <iostream>
using namespace std;
int main(){
double pol[1002] = {0.0}; //总矩阵初始为0.0,存放对应位置的系数
int ex,n; //每行的输入指数和输入项数
int count = 0; //计数共有多少非零项
double co; //每行的输入系数
//输入
cin >> n;
for(int i = 0;i < n;i++){
cin >> ex >> co;
pol[ex] += co;
}
cin >> n;
for(int i = 0;i < n;i++){
cin >> ex >> co;
pol[ex] += co;
}
//清点非零项个数
for(int i = 0;i < 1002;i++){
if(pol[i] != 0){
count++;
}
}
cout << count << " ";
for(int i = 1001;i >= 0;i--){
if(pol[i] != 0){
cout << i << " " << pol[i] << " ";
}
}
}
对上了题例,多种错误,麻了,明天再继续