找输出的顺序很重要:
#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?",":"");
}