1001 A+B Format

第一遍刷PAT

题目意思

输入A、B,输出C,其中C需要每三位隔一个逗号那种形式输出

我的憨憨程序

emmmm题目中给出了数字范围所以直接用了1000000、1000来算

#include<stdio.h>
#include<math.h>

int main()
{
    int a,b,c,d;
    scanf("%d%d",&a,&b);
    c=a+b;
    if(c<0)//有负号先输出再说
    {
    	printf("-");
		c=abs(c);//输出负号以后绝对值一下
	}
    
    d=c/1000000;
	if(d!=0)//说明c>1000000
    {
		printf("%d",d);
    	c%=1000000;
    	d=c/1000;
    	printf(",%03d",d);//不足3位用0补齐
    	c%=1000;
    	printf(",%03d",c);
    }
    else
    {
    	d=c/1000;
    	if(d!=0)//1000<c<1000000
    	{
    		printf("%d",d);
    		c%=1000;
    		printf(",%03d",c);
		}
		else//c<1000
			printf("%d",c);
	}
    printf("\n");//这个倒是可有可无	
    return 0;
}

标程

把a+b的和转为字符串s。除了第一位是负号的情况,只要当前位的下标i满足(i+1)%3==len%3并且i不是最后一位**(也就是说在当前位之后数字的位数是3的倍数)**,就在逐位输出的时候在该位输出后的后面加上一个逗号

#include<iostream>
using namespace std;
int main()
{
	int a,b;
	cin>>a>>b;
	string s = to_string(a+b);
	int len = s.length();
	for(int i=0;i<len;i++)
	{
		cout<<s[i];
		if(s[i]=='-')
			continue;
		if((i+1)%3==len%3&&i!=len-1)
			cout<<",";
	}
	return 0;
}

好久没写程序了,写了哥哥1个多小时,就这?(也太菜了嗲)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值