PAT-A1001

A1001

A+B Problem?

计算a+b 每隔三位输出一个逗号

算出a+b 判断是否为负 然后分离每一位上面的数字 在输出每一个三的倍数之前输出一个逗号 同时注意该数字不能为第一数字

这样只会得到19分

为什么呢?

	while (c){
		cnt++;
		p[cnt]=c%10;
		c/=10;
	}
	if (!flag) printf("-");
	for (int i=cnt;i>=1;i--){
		if (i%3==0&&i!=cnt) printf(",");
		printf("%d",p[i]);
	}

很明显这段代码对c=0的情况是不起任何作用的 所以需要特判一下0

#include<bits/stdc++.h>
using namespace std;
int p[200],a,b,c,cnt;
bool flag=true;
int main(){
	scanf("%d%d",&a,&b);
	c=a+b;
	if (c<0) flag=false;
	c=abs(c);
	while (c){
		cnt++;
		p[cnt]=c%10;
		c/=10;
	}
	if (!flag) printf("-");
	for (int i=cnt;i>=1;i--){
		if (i%3==0&&i!=cnt) printf(",");
		printf("%d",p[i]);
	}
	if (c==0) printf("0
");
	return 0;
} 
原文地址:https://www.cnblogs.com/Hiraeth-dh/p/10886925.html