解法一
利用字符串
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int a, b;
while(cin >> a >> b)
{
bool flag = false; //判断是否是负数
int sum = a + b;
if(sum < 0)
{
flag = true;
sum = -sum;
}
if(sum == 0)
cout << '0' << endl;
else
{
string str = "";
int k = 0; //标记哪个位置应该加","
while(sum)
{
int tmp = sum % 10;
str += tmp + '0';
sum = sum / 10;
if((k++) % 3 == 2 && sum) //当sum不为0,也就是不是第一位的时候
str += ',';
}
reverse(str.begin(), str.end()); //字符串逆置 使用algorithm中的reverse函数
if(!flag)
cout << str << endl;
else
cout << "-" << str << endl;
}
}
return 0;
}
解法二
利用printf()的格式化输出
%03d 不足空位用0补齐
%x 安照16进制输出
#include <stdio.h>
int main()
{
int a, b;
while(scanf("%d %d", &a, &b) != EOF)
{
int sum = a+b;
bool flag = false;
if(sum < 0)
{
sum = -sum;
flag = true;
}
if(flag)
printf("-");
if(sum < 1000)
printf("%d\n", sum);
if(sum >= 1000 && sum < 1000000)
printf("%d,%03d\n", sum/1000, sum%1000);
if(sum >= 1000000)
printf("%d,%03d,%03d\n", sum/1000000, (sum/1000)%1000, sum%1000);
}
return 0;
}