找输出的顺序很重要:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int sum=a+b;
if(sum==0) cout<<0;
bool f=true;
vector<char> v;
if(sum<0) {
f=false;
sum=-sum;
}
while(sum>0){
char c=static_cast<char>(48+sum%10);
v.push_back(c);
sum/=10;
}
string s="";
int n=v.size();
for(int i=0;i<n;i++){
s=v[i]+s;
if(i % 3==2 && i != n-1){
s=','+s;
}
}
if(! f) s='-'+s;
cout<<s;
return 0;
}
附上大佬的简单解法 正序
#include<bits/stdc++.h>
using namespace std;
int main( ) {
int a, b; cin >> a >> b;
if(a + b < 0) putchar('-');
string s = to_string(abs(a+b));
int i = s.size()%3 == 0 ? 3 : s.size()%3;
cout << s.substr(0, i);
for(; i < s.size(); i += 3)
cout << ',' << s.substr(i, 3);
return 0;
}
逆序:
#include<bits/stdc++.h>
using namespace std;
int main() {
int a, b; cin >> a >> b;
if(a + b < 0) cout << '-';
string s = to_string(abs(a+b));
vector<string>v;
for(int i = s.size(); i > 0; i -= 3)
v.push_back(i>=3 ? s.substr(i-3, 3) : s.substr(0, i));
for(int i = v.size()-1; i >= 0; --i)
printf("%s%s", v[i].c_str(), i>0?",":"");
}