思路:
结果c预先判断,等于零则直接输出,小于零则先输出“-”,再按大于零处理。
之后用栈来处理,以3位数为一组入栈,注意比如10008 %1000,得8,不是008,因此输出的时候除了最高位次的一组,其他组要注意用0填充。输出时以“逗号+数字”为一组较好,这样特殊情况只有最高位次的一组。
#include <cstdio>
#include <stack>
using namespace std;
int main(){
int a,b,c;
scanf("%d%d",&a,&b);
c = a+b; //得出结果
if (c<0){ //小于零输出负号,再变成正数
printf("-");
c = -1*c;
} else if(c == 0){ //等于零则直接输出,结束程序
printf("0");
return 0;
}
stack<int> S; //用栈
while(c>0){ //以3个为一组入栈
S.push(c % 1000);
c /= 1000;
}
printf("%d",S.top()); //先把最高位次的前面不用充0的一组输出
S.pop();
while(!S.empty()){ //以逗号+数字为一组输出
printf(",%03d",S.top());
S.pop();
}
return 0;
}