PAT1001 A+B Format
题目:PAT 1001
题解:本来觉得是道水题,结果花了我好长时间...萌新瑟瑟发抖
起初我是想用mod三位三位的输出,但是发现一个是顺序问题,还有就是假如为1,001,001,那么每三位中前的0也不好处理,所以就放弃了。
因为是要添加逗号,再考虑到顺序问题,顺其自然的想到了字符串。把加起来的和放到字符数组中,每3位添加一个逗号,最后倒序输出。
总觉得好像麻烦了...能逮到耗子的就是好猫..
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 5 using namespace std; 6 7 char n[11]; 8 9 int main() 10 { 11 int a,b,num,i; 12 bool f=false; 13 14 scanf("%d%d",&a,&b); 15 16 num=a+b; 17 if(num<0){//判断是不是最后要加负号 18 f=true; 19 num=-num;//把负数转化为整数处理更方便 20 } 21 22 if(num==0) printf("0");//结果为零的情况 23 else{ 24 for(i=1;num>0;i++){ 25 if(i%4==0&&i>=4){ 26 n[i]=','; 27 }else{ 28 n[i]=num%10+48;//根据ASCII码来把整数转化为字符 29 num/=10; 30 } 31 } 32 if(f) n[i+1]='-'; 33 34 35 for(int i=11;i>=1;i--)//倒序输出 36 if(n[i]!=0) printf("%c",n[i]); 37 } 38 39 return 0; 40 }
浙公网安备 33010602011771号