题目描述
让我们回到最初的A+B
问题!
我们知道英语习惯每三位换一个词(thousand、million、billion……),所以数字常常每三位用一个逗号隔开,如:123,456,789
,而我们就更习惯于每四位隔开:1,2345,6789
。
为了与国际接轨,这一题考察你国际化的表示方法。
给出你A
、B
,请你输出A+B
,并用“,”每三位隔开(注意是从个位起)。
输入
多组测试数据,请处理到文件结束。
每组一行是两个数A
、B
。
-109 ≤ A ≤ 109
-109 ≤ B ≤ 109
输出
请按要求格式输出A+B
。
样例输入
1 2
1234 2345
-1234 234
样例输出
3
3,579
-1,000
1 #include<stdio.h> 2 int main() 3 { 4 int a,b,i,j; 5 char num[20]; 6 long long sum; 7 while(scanf("%d %d",&a,&b)!=EOF) 8 { 9 sum=a+b; 10 long long x; 11 x=sum; 12 if(sum<=0) sum=-sum; //和为负数,忘记考虑,错了一次 13 int k=0,i=0,l=0; 14 while(sum!=0) 15 { 16 num[i++]=sum%10+'0'; //刚开始忘记了考虑是字符 17 sum/=10; 18 k++; 19 l++; 20 if(k==3) 21 { 22 num[i]='a'; 23 i++; 24 k=0; 25 } 26 } 27 if(x<0) printf("-"); 28 if(x==0) printf("0"); //等于0忘记考虑又错了一次 29 if(l%3==0) //输出的首位不能是逗号 30 { 31 32 for(j=i-2;j>=0;j--) 33 { 34 if(num[j]=='a') 35 printf(","); 36 else 37 printf("%d",num[j]-'0'); 38 } 39 printf(" "); 40 } 41 else 42 { 43 for(j=i-1;j>=0;j--) 44 { 45 if(num[j]=='a') 46 printf(",",num[j]); 47 else 48 printf("%d",num[j]-'0'); 49 } 50 printf(" "); 51 } 52 } 53 return 0; 54 }