题目要求是每三个数之间加一个“,”类似外国的那种数的表示方法。
第一次做PAT,用了2小时,,
#include <iostream>
#include <vector>
#include <cstdio>
#include <math.h>
using namespace std;
//计算数字有多少位,
//一定不要再用 (int)(log(sum)/log(10))这样的了,效率虽高,但出错概率极大
int CalBit(int num){
int bit =0;
//没到个位,加
while(num/10 != 0){
num = num/10;
bit++;
}
//加个位
return bit + 1;
}
int main()
{
int a, b, sum;
cin>>a>>b;
sum = a+b;
//先输出负号
if(sum < 0) {
cout<<'-';
sum *= -1;
}
//0一定特殊处理,我之前出现了log(0)的错误
if(sum == 0) cout<<0;
else{
vector<char> arr;
int len = CalBit(sum) ;
//倒序输入的vector
for(int i = 0; i < len; i++){
arr.push_back(sum%10 +'0');
sum = sum/10;
}
int count = 0;
for(int i = arr.size() - 1; i >= 0; i--){
count++;
cout<<arr[i];
if((arr.size() - count)%3 == 0){
if(i != 0){
cout<<',';
}
}
}
}
return 0;
}