恩 刷回PAT。
原题描述如下
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 Input
-1000000 9
Sample Output
-999,991
题目本意很简单,但是提交了很多次才是全部满分。。。中间太多测试点都没过。
其实重点就是逗号的放置,之前只考虑了sum<1000和sum<1000000的情况,还有a>1000000的情况
然后关于逗号,如果开一个数组把每一位存进去感觉没必要毕竟就三个数,所以直接取余就好了,当然这里还要考虑正负号不然-999,991就会变成-999,-9-9-1,hhhhh
但是用条件判断语句代码显脏,所以直接用abs绝对值函数。
AC代码如下:
#include<stdio.h>
#include<math.h>
int main( )
{
int a , b , s , S ;
scanf("%d %d",&a ,&b );
s = a+b ;
S = abs ( s );
if( s/1000 == 0 )
printf("%d\n",s );
else if ( s/1000000 == 0 ) /* if s is more than three digits but less than six digits */
{
a = s/1000 ;
printf("%d",a );
printf(",%d%d%d\n", S/100%10, S/10%10, S%10 );
}
else /* if s is more than six digits */
{
a = s/1000000 ;
printf("%d",a );
printf(",%d%d%d", S/100000%10, S/10000%10 , S/1000%10 );
printf(",%d%d%d\n", S/100%10, S/10%10, S%10 );
}
return 0;
}
卧槽。。。为什么点上传代码直接到页面顶端了。。。