问题描述:
Calculate a + b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).
Input
Each input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.
Output
For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.
Sample
Sample Input
-1000000 9
Sample Output
-999,991
解决思路:
理解要求:按一定格式输出两个整数之和。其中:
1.两个整数取值范围为(-1000000,1000000);
2.对于两个数求和的结果,输出时,从右至左每个三数字为一组输出,其中用逗号隔开。解决方案:
1.根据输入的两个整数范围,可用int型定义两个数以及求和结果;
2.根据求和结果的范围,可先考虑求和结果为负值时负号的输出,后考虑结果中可能存在会输出三组数,两组数,一组数的情况。
3.根据除法和取余运算,按要求取出每组的数值,并配合C++中的setfill设置填充填充字符(用‘0’填充),setw设置输出的宽度(3位),从而实现按要求输出。
C++程序:
#include <iostream>
#include <iomanip>
//在使用setw(int n)和setfill(string s)控制输出格式时,需要包括头文件iomanip。其中setfill是设置填充填充字符,setw设置输出的宽度,它们的只作用表现在紧接着输入的字符串上。
using namespace std;
int main()
{
int a,b,sum;
cin >> a >> b; //输入两个整数a,b
sum = a + b;
if ( sum < 0)
{
cout << "-"; //若sum<0,考虑sum为负数时,输出 - 号
sum = -sum; //输出 - 号后,考虑sum的绝对值的位数输出
}
if ( sum >= 1000000 ) //输出三组数的情况
cout << sum/1000000 <<"," << setw(3) << setfill('0') << (sum/1000)%1000 << "," << setw(3) << sum%1000 << endl;
else if (sum >= 1000) //输出两组数的情况
cout << sum/1000 << "," << setw(3) << setfill('0') << sum%1000 << endl;
else //输出一组数的情况
cout << sum << endl;
return 0;
}