解题思路

GitHub

题目及要求

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: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分为三个一组,沿着这个思路,我又考虑了几种应该有的情况。

首先是正负问题,通过abs函数解决,最终输出时再考虑正负。

其次是范围问题,这应该是这道题的关键,经过计算过后,我把它分为了三个区间,一是小于1000的数可以直接输出,二是大于等于1000小于1000000的数,三是大于等于1000000的数。

最后是具体的除法和求余过程,第二种情况可以除以1000求前三位,求余1000求后三位,第三种情况除以1000000求第一位,除以1000求余1000求下面三位,求余1000求最后三位。最终我还是忽略了输出中0的显现问题,经过调试得以输出正确结果。

调试过程

代码1

这段代码是第一次打的,试了几个结果,发现结果中0的显现有问题

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,sum,x,y,z;
	scanf("%d %d",&a,&b);
	sum=abs(a+b);
	if(sum<1000)
	{
		if(a+b>0||a+b==0)printf("%d",sum);
			else printf("%d",-sum);
	}
	else if(sum>1000000||sum==1000000)
	{
		x=sum/1000000;
		y=sum/1000%1000;
		z=sum%1000;
		if(a+b>0||a+b==0)printf("%d,%d,%d",x,y,z);
		else printf("%d,%d,%d",-x,y,z);
	}
	else
	{
		x=sum/1000%1000;
		y=sum%1000;
		if(a+b>0||a+b==0)printf("%d,%d",x,y);
		else printf("%d,%d",-x,y);
	}
	return(0);
}

代码2

这次我首先在格式声明里加一个3,发现没用,经过思考之后又在3之前加0,试了几个数字,发现果然行的通,之后在pat上提交一次全部ac,挺激动的。

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,sum,x,y,z;
	scanf("%d %d",&a,&b);
	sum=abs(a+b);
	if(sum<1000)
	{
		if(a+b>0||a+b==0)printf("%d",sum);
			else printf("%d",-sum);
	}
	else if(sum>1000000||sum==1000000)
	{
		x=sum/1000000;
		y=sum/1000%1000;
		z=sum%1000;
		if(a+b>0||a+b==0)printf("%d,%03d,%d",x,y,z);
		else printf("%d,%03d,%03d",-x,y,z);
	}
	else
	{
		x=sum/1000%1000;
		y=sum%1000;
		if(a+b>0||a+b==0)printf("%d,%03d",x,y);
		else printf("%d,%03d",-x,y);
	}
	return(0);
}

pat提交记录

原文地址:https://www.cnblogs.com/52wu244/p/6360763.html