http://pat.zju.edu.cn/contests/pat-a-practise/1001
此题花费了很长时间,做了几次都是说超时,网上找了个答案找到毛病,while(true)是绝对不能用的,while(cin>>a>>b)可以用。
#include
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
int a,b,sum,n,i;
n=1,i=1;
cin>>a>>b;
sum=a+b;
//cout<
#include
#include
using namespace std;
int main(){
long a,b,c;
int i,flag;
bool is_positive;
char result[9];
while(cin>>a>>b)
{
c = a+b;
if( c>0 )
is_positive = true;
else
is_positive = false;
flag = 0;
if(abs(c) >= 1000){
c = abs(c); //取绝对值
for( i=0; c>0; i++){
result[i] = c%10 + '0'; //数字转换成字符
c = c/10;
if(flag == 2 && c != 0 )
{
i++;
result[i] = ','; //每三个加一个逗号
flag = 0;
}
else
flag++;
}
if( !is_positive ) //结果为负数时
{
result[i] = '-';
cout<=0; i--){
cout<
还有个更加简单的做法:
#include
int main()
{
int a,b;
int sum;
while(scanf("%d%d\n",&a,&b) != EOF){
sum = a+b;
if(sum < 0){
printf("-");
sum = -sum;
}
if(sum>=1000000){
printf("%d,%03d,%03d\n",sum/1000000, (sum/1000)%1000, sum%1000);
}
else if(sum >= 1000){
printf("%d,%03d\n",sum/1000,sum%1000);
} else{
printf("%d\n", sum);
}
}
return 0;
}
个人感觉有点取巧,但是解决的思路也很不错、精巧吧!