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:
分类讨论,不模拟,直接具体情况具体模板去套。
//printf("%d,%03d%,%03d",n/1000000,n/1000%1000,n%1000);
“%03d%”多打了个%,在输出上看不出来,但一直显示有几个测试点错误,害我捉虫捉了好半天oTATo
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int n = abs(a+b);
if(n>=1000000)
{
if(a+b<0) printf("-");
printf("%d,%03d,%03d",n/1000000,n/1000%1000,n%1000);
}
else if(n>=1000)
{
if(a+b<0) printf("-");
printf("%d,%03d",n/1000,n%1000);
}
else printf("%d",a+b);
}
我的代码2:
按照生活经验来模拟,从后往前数,每三位数打个逗号。
#include<cstdio>
int main()
{
int a,b,tmp[100],newTmp[100];
scanf("%d%d",&a,&b);
int c = a+b,cnt = 0;
if(c<0)
{
printf("-");
c = -c;
}
if(c==0)
{
printf("0");
return 0;
}
//拆解成数组保存
while(c)
{
tmp[cnt++] = c%10;
c /= 10;
}
//上面的操作得到的是顺序相反的数组(这一步可有可无)
for(int i=0;i<cnt;i++)
newTmp[cnt-1-i] = tmp[i];
for(int i=0;i<cnt;i++)
{
printf("%d",newTmp[i]);
if((cnt-i-1)%3==0&&i!=cnt-1) printf(",");
}
return 0;
}