1001 A+B Format (20 分)
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 Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where −106 ≤a,b≤106. The numbers are separated by a space.
Output Specification:
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 Input:
-1000000 9
Sample Output:
-999,991
解题方法
方法一(我的第一反应)
注意点
- 循环输入 运行超时
- 是每三个数字一个“,”,例:1,000,000、1,000
- 有些方法要注意0
#include <stdio.h>
int main()
{
int a = 0, b = 0, c = 0, i = 0, n = 0;
int s[100] = { '0' };
scanf("%d %d", &a, &b);
c = a + b;
if (c != 0) {
if (c < 0) {
c = -c;
printf("-");
}
for (i = 0; c != 0; i++) {
s[i] = c % 10;
c = c / 10;
}
i--;
if (i < 3)
{
for (i; i >= 0; i--) {
printf("%d", s[i]);
}
}
else if (i <= 5)
{
n = i;
for (i; i >= 0; i--) {
if (i == 2) {
printf(",");
}
printf("%d", s[i]);
}
}
else
{
n = i;
for (i; i >= 0; i--) {
if (i == 2 || i == 5) {
printf(",");
}
printf("%d", s[i]);
}
}
}
else if (c == 0)
{
printf("0");
}
}
方法二(网上看到的)
注意点
- 0的输出个数,将逗号后面的%d改成%03d。
#include <stdio.h>
int main()
{
int a = 0, b = 0, c = 0, i = 0, n = 0;
int s[100] = { '0' };
scanf("%d %d", &a, &b);
c = a + b;
if (c < 0) {
c = -c;
printf("-");
}
if (c < 1000) {
printf("%d", c);
}
else if (c >= 1000 && c < 1000000) {
printf("%d,%03d", c / 1000,c%1000);
}
else
{
printf("%d,%03d,%03d", c / 1000000, c % 1000000/1000,c%1000);
}
}