【PAT-A】1001. A+B Format 写题记录

思路:

结果c预先判断,等于零则直接输出,小于零则先输出“-”,再按大于零处理。

之后用栈来处理,以3位数为一组入栈,注意比如10008 %1000,得8,不是008,因此输出的时候除了最高位次的一组,其他组要注意用0填充。输出时以“逗号+数字”为一组较好,这样特殊情况只有最高位次的一组。

#include <cstdio>
#include <stack>
using namespace std;
int main(){
	int a,b,c;
	scanf("%d%d",&a,&b);
	c = a+b;  //得出结果 
	
	if (c<0){   //小于零输出负号,再变成正数 
		printf("-");
		c = -1*c;
	} else if(c == 0){  //等于零则直接输出,结束程序 
		printf("0");
		return 0;
	} 
	
	stack<int> S;  //用栈 
	while(c>0){  //以3个为一组入栈 
		S.push(c % 1000);
		c /= 1000;
	}
	
	printf("%d",S.top()); //先把最高位次的前面不用充0的一组输出 
	S.pop();
		
	while(!S.empty()){  //以逗号+数字为一组输出 
		printf(",%03d",S.top()); 
		S.pop();		
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/weixin_43456345/article/details/83148386
今日推荐