开刷PAT,测试点真是难以捉摸,每刷一道题尽量把坑都记录下来。
1001 A+B Format
#include<iostream>
#include<stdlib.h>
#include<cmath>
#include<stdio.h>
using namespace std;
int main(int argc,char *argv[]){
int a,b,i,comma;
bool flag = false;//判断这个数的绝对值是否大于0
char result[10];//最多位
while(scanf("%d %d",&a,&b) != EOF){
//cout<<a<<b;
if(a < -1000000)
return 0;//C++是 return 0;
if(b > 1000000)
return 0;
int sum = a+b;
if(sum >= 0)
flag = true;
else
flag = false;
if(sum == 0){
printf("%c",'0');
}
sum = abs(sum);//取绝对值,要注意abs 在stdlib.h里面
comma = 0;
for(i = 0;sum > 0;i++){
result[i] = sum%10 + '0';
sum = sum/10;
if(comma == 2&&sum != 0){
i++;
result[i] = ',';
comma = 0;
}
else
comma++;
}
if(!flag){
result[i] = '-';
//cout<<result[i];
printf("%c",result[i]);
}
i--;
for(;i>=0;i--){
//cout<<result[i];
printf("%c",result[i]);
}
printf("\n");
}
return 0;
}
开始有个测试点怎么也过不去,真的不能忍啊!而且还不知道什么原因。
在PATest贴吧里面发现陈樾老师说尽量的用scanf 和 printf,就把cin和cout改过来了,然后显然还不是这个原因。
后来测试边界,发现了问题~
发现对结果0没有进行处理,然后修改了代码,之后就可以了。这期间还有一个问题是格式错误,原因是在输出结果0时加了一个”\n”。