原题地址
https://www.patest.cn/contests/pat-a-practise/1001
输出标准化后的a+b,标准化是指每3个数位之间有一个逗号分隔。如-1000000+9 = -999,991。
解题思路
控制输出格式的水题,用变量comma控制以3为周期的逗号加入。
注意数值的正负,以及避免开头输出逗号。
AC代码
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int a,b;
cin >> a >> b;
int sum = a+b;
if (sum == 0)
{
cout << 0 << endl;
return 0;
}
bool negative = false;
if (sum < 0)
{
negative = true;
sum = -sum;
}
char str[15];
int cnt = 0, comma = 0; //comma用于产生逗号
while (sum)
{
str[cnt++] = sum%10+'0';
comma++;
if (comma%3==0 && sum >= 10) //避免输出第一个字符是逗号
{
str[cnt++] = ',';
comma = 0;
}
sum /= 10;
}
if(negative) putchar('-'); //输出负号
for (int i = cnt-1; i >=0; --i)
putchar(str[i]);
return 0;
}