题目还是比较简单的,要求在数值相加后再用那种英美计数表示。每三位一个逗号。
考虑到负数的情况,直接转字符串还要占用一位符号,不太好处理,直接按绝对值计算,符号后来再加上。
这里有一个特殊的情况
int y=str.length();
str.insert(y-l,str2);
这个部分本来打算直接用length算,发现加最后一位逗号的时候会有溢出,可能是因为通过length方法得到的数据类型和int不同,如果此时相减字面值小于0会产生溢出。
因此直接用int赋值,不要忘了每一次加上的逗号也要算入长度里面,每次循环手动++。
#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int c=a+b;
int i=0;
if(c<0)i=1;
string str=to_string(abs(c));
int l=3;
string str2=",";
int y=str.length();
while((y-l)>0 )
{
str.insert(y-l,str2);
l=l+4;y++;
}
if(i)str="-"+str;
cout<<str;
return 0;
}