PAT A1001 A+B Format (20 分)(c++以及c实现)
原版问题描述
Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).
输入格式:
Each input file contains one test case. Each case contains a pair of integers a and b where −106≤a,b≤106 . The numbers are separated by a space.
输出格式:
For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.
输入实例:
-1000000 9
输出实例:
-999,991
思路
- 题目的大概意思是,输入两个十万以内数字,进行加法处理,按照xxx,xxx,xxx的格式进行输出;(对就是这个样子!)
- 这个题目不难,可能是对于英语读题的一个进阶吧,感觉。主要是针对他的格式来进行处理这一部分要注意;
- 格式的输出可以使用穷举法,一共就三类。
- PS:本人这是第一次使用c++编程,所以可能有些刻意使用一些函数,请见谅(就想这次的cout以及cin)。
具体代码
先是c++编程:
//c++编程
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int c;
c=a+b;
if(c<0)
{
cout<<"-";
c=-c;
}
a=(c%1000000)/1000;
b=c%1000;
c=c/1000000;
if(c!=0)
{
cout<<c<<",";
cout<<setw(3)<<setfill('0')<<a<<",";
cout<<setw(3)<<setfill('0')<<b<<"\n";
}
else if(a!=0)
{
cout<<a<<",";
cout<<setw(3)<<setfill('0')<<b<<"\n";
}
else
cout<<b<<"\n";
return 0;
}
再是c语言编程
#include<stdio.h>
int main()
{
int a, b, sum;
scanf("%d %d", &a, &b);
sum = a + b;
if(sum < 0)
{
printf("-");
sum = -sum;
}
if(sum >= 1000000)
{
printf("%d,%03d,%03d", sum / 1000000, sum % 1000000 / 1000, sum % 1000);
}
else if(sum >= 1000)
{
printf("%d,%03d", sum / 1000, sum % 1000);
}
else{
printf("%d", sum);
}
return 0;
}
改进
c++写的十分粗糙,我想练习一下cout的输出格式,还有最开始是想要条件输出,最后失败了,要是有啥建议希望可以下面评论提一下呀!