第一遍刷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个多小时,就这?(也太菜了嗲)