PAT 1001 A+B Format cpp及c语言写法
cpp写法
#include<iostream>
#include<string>
using namespace std;
const int N=1e6+10;
int main(){
int a,b;
cin>>a>>b;
int c=a+b;
string num=to_string(c);
string res;
for(int i=num.size()-1,j=0;i>=0;i--){
res=num[i]+res;
j++;
if(j%3==0&&num[i-1]!='-'&&i) res=','+res;
}
cout<<res<<endl;
return 0;
}
c语言写法
int main(){
int a,b;
scanf("%d %d",&a,&b);
int d=a+b;//两数之和
int c=abs(d);//和取绝对值
int size=(d==0?1:((int)log10(c)+1));//值的位数 值为0就设为1
int insert=(size>3?1: 0)*(size-1)/3;//插入符号数 如果有四位就不加符号 如果位数是3的倍数最前面的符号不加
int MAXNUM=size+insert+1;//字符串长度
char str[MAXNUM];
if(d<0) str[MAXNUM-1]='-';//填入一个符号
int k=0;//计数器 每3位归零
int first=d<0?(MAXNUM-1):(MAXNUM-2);//记录输出时第一位位置
for(int i=0;i<MAXNUM-1;i++){
str[i]=(c%10)+48;//转换成ascii码 从最高位填入
c/=10;
k++;
if(k==3&&i+1<=MAXNUM&&insert--!=0){//每三位加一个逗号
str[++i]=',';
k=0;
}
}
for(int j=first;j>=0;j--) printf("%c",str[j]);
return 0;
}