PAT甲级真题(1001)

PAT甲级真题(1001)

      • 题目
      • 解析
      • 源码
      • 测试结果

题目


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).
Input Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where −10​6​​≤a,b≤10​6​​. The numbers are separated by a space.
Output Specification:
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.

Sample Input:

-1000000 9

Sample Output:

-999,991

解析


这题大意是让输入a和b,将结果按照每3位一组用逗号分隔输出,比如输入-1000000和9,那么得到和为-999991,按格式输出为-999,991。
我们可以考虑使用一个数组来模拟栈,对a+b的值x每取一次模就入一次栈,这样就可以把结果的低位放在栈底,高位放在栈顶,输出的时候从栈顶开始,先输出高位再输出低位。
由于a和b不超过10^6,所以我们构造一个7位的数组就够了。

源码


#include  
using namespace std;
int main(){
 int a,b;
 bool flag=false;//标识结果正负
 cin>>a>>b;
 int x=a+b;
// cout<<"x="<0&&i<7){
  stack[++i]=x%10;//入栈 
  x=x/10;
 }
 if(flag){stack[i]=-stack[i];} //符号控制,如果和值为负值,则使第一位(高位)为负 
 while(i>=0){
  cout<

测试结果


PAT甲级真题(1001)_第1张图片
PAT甲级真题(1001)_第2张图片
PAT甲级真题(1001)_第3张图片


注:重点测试结果为0的情况、结果的位数不是3的整数倍的情况,和结果为负值的情况。

你可能感兴趣的:(我的pat刷题笔记)