反转数字相加

问题描述:

Adding reverse numbers

 it means adding reverse numbers then reverse the outcome again.

源码分析:

Code:
  1. #include <iostream>   
  2. #include <fstream>   
  3. #include <string>   
  4. #include <vector>   
  5.   
  6. using namespace std;   
  7.   
  8. int main(int argc,char argv[])   
  9. {   
  10.     ifstream cin("aaa.txt");   
  11.     string sa,sb,st;   
  12.     vector<int>v;   
  13.     int a,b,sum;   
  14.     int p=0;//进位标志   
  15.     int u=0;//输出标志   
  16.     cin>>sa;//不处理案例数量   
  17.     while(cin>>sa>>sb)   
  18.     {   
  19.         if(sa.size()<sb.size())   
  20.         {   
  21.             st=sa;   
  22.             sa=sb;   
  23.             sb=st;   
  24.         }   
  25.         for(int i=0;i<sa.size();i++)   
  26.         {   
  27.             if(sa[i]=='0')a=0;   
  28.             else if(sa[i]=='1')a=1;   
  29.             else if(sa[i]=='2')a=2;   
  30.             else if(sa[i]=='3')a=3;   
  31.             else if(sa[i]=='4')a=4;   
  32.             else if(sa[i]=='5')a=5;   
  33.             else if(sa[i]=='6')a=6;   
  34.             else if(sa[i]=='7')a=7;   
  35.             else if(sa[i]=='8')a=8;   
  36.             else if(sa[i]=='9')a=9;   
  37.   
  38.             if(i>=sb.size())b=0;   
  39.             else if(sb[i]=='1')b=1;   
  40.             else if(sb[i]=='2')b=2;   
  41.             else if(sb[i]=='3')b=3;   
  42.             else if(sb[i]=='4')b=4;   
  43.             else if(sb[i]=='5')b=5;   
  44.             else if(sb[i]=='6')b=6;   
  45.             else if(sb[i]=='7')b=7;   
  46.             else if(sb[i]=='8')b=8;   
  47.             else if(sb[i]=='9')b=9;   
  48.   
  49.             sum=a+b+p;//两位相加,在加上进位   
  50.             p=sum/10;//求进位值   
  51.             v.push_back(sum%10);//各位进v   
  52.         }   
  53.             if(p==1)   
  54.             v.push_back(1);   
  55.             while(1)   
  56.             {   
  57.                 //去掉所有的‘0’   
  58.                vector<int>::iterator it =v.end()-1;   
  59.                if(0==*it) v.erase(it);   
  60.                else break;   
  61.             }   
  62.             for(int j=0;j<v.size();j++)   
  63.             {   
  64.                 if(u==0 && v[j]!=0)u=1;   
  65.                 if(u==1)cout<<v[j];   
  66.             }   
  67.             cout<<endl;   
  68.             v.clear();   
  69.             u=0;   
  70.             p=0;   
  71.     }   
  72.     return 0;   
  73. }  

测试结果:

Code:
  1. 输入:   
  2. 3   
  3. 24 1   
  4. 4358 754    
  5. 305 794   
  6.   
  7. 输出   
  8. 34   
  9. 1998   
  10. 1  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值