与第二次作业相似的题目

Problem Description

乐乐今天刚学减法,老师布置了好多关于减法的家庭作业题。乐乐可不想把时间都浪费在这重复机械的题目上。你能帮帮她吗?
Input

输入数据由多组数据组成。每组数据只有一行,包含两个整数,用空格分开。
Output

对于每组数据,输出一行,包含两个整数的差。如果数字超过3位,应从最低位起,按每三位分组。 题目所有输入输出保证在[-2^31, 2^31-1]范围内。
Sample Input

2000 1000
Sample Output

1,000

#include <stdio.h>
int main()
{
	int a,b,c,t1,t2,flag=0;
	scanf("%d %d",&a,&b);
	c=a-b;
	
	if(c<0){
		c=-c;
		flag=1;
	}
	if(c<1000)
	{
		if(flag==1){
			printf("-");
		}
		printf("%d\n",c);

	}
	else if (c>=1000&&c<1000000)
	{
		if(flag==1){
			printf("-");
		}
		t1=c/1000;
		printf("%d",t1);
		printf(",");
		t2=c%1000;
		printf("%03d\n",t2);
	}
	else if (c>=1000000&&c<1000000000)
	{
		if(flag==1){
			printf("-");
		}
		t1=c/1000000;
		printf("%d,",t1);
		c%=1000000;
		t1=c/1000;
		printf("%03d,",t1);
		t1%1000;
		printf("%03d\n",t1);

	}
	else
	{
		if(flag==1){
			printf("-");
		}
		t1=c/1000000000;
		printf("%d,",t1);
		c%=1000000000;
		t1=c/1000000;
		printf("%03d,",t1);
		c%=1000000;
		t1=c/1000;
		printf("%03d,",t1);
		c%=1000;
		printf("%03d\n",c);
	}
	return 0;
}

更简便的方法!!!

#include <stdio.h>
#include <string.h>
int main()
{
	int a,b,c,flag=0,i,t;
	char arr[20];
	while (scanf("%d %d",&a,&b)!=EOF)
	{
		c=a-b;
		if (c==0)
		{
			printf("0\n");
		}
		else{
			if (c<0)
			{
				c=-c;
				flag=1;
			}
			for (i=0;c>0;i++)
			{
				arr[i]=c%10+'0';
				c/=10;
			}
			arr[i]='\0';
			t=i;
			if (flag==1)
			{
				printf("-");
			}
			for (i=t-1;i>=0;i--)
			{

				printf("%c",arr[i]);
				if(i%3==0&&i!=0){
					printf(",");
				}
			}
			printf("\n");
			flag=0;
		}
		
	}
	return 0;
}
posted @ 2016-05-12 15:50  whlzb  阅读(238)  评论(0编辑  收藏  举报