zoukankan      html  css  js  c++  java
  • 1205 Martian Addition

     这是一道20进制相加的习题,关键点在于把字母与数之间的转换,巧妙地利用strchr函数可以进行转换。下面是有位师兄写的吧,代码清晰,很容易看懂。

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 char* NUMS="0123456789abcdefghij";
     5  
     6 /*分别是读取的输入行,加数a,b,计算结果c */
     7  char line[105],a[105],b[105],c[105];
     8  
     9 /*字符换算为实际数值,例如'a'->10,'b'->11*/
    10  int CharToVal(char c)
    11  {
    12      return strchr(NUMS, c)-NUMS;
    13  }
    14  
    15 /*解析输入*/
    16  void CopyNum(char* dest, const char* line)
    17  {
    18      int i,len=strlen(line);
    19      for(i=0;i<len;i++)
    20      {
    21          dest[i]=CharToVal(line[len-1-i]);
    22      }
    23  }
    24  
    25 /*打印加法结果,注意结尾如果为0也要打印0*/
    26  void PrintResult()
    27  {
    28      int i=101;
    29      while(c[i]==0) i--;
    30      
    31      if(i<0) i=0;        /*非常重要,可以保证至少要打印一个0。*/
    32      
    33      for(;i>=0;i--)
    34      {
    35          cout<<NUMS[c[i]];
    36      }
    37      cout<<endl;
    38  }
    39  
    40 /*做加法: c=a+b; */
    41  void Add()
    42  {
    43      int i;
    44      int k=0,sum;/*进位的数值*/
    45      for(i=0;i<102;i++)
    46      {
    47          sum = a[i] + b[i] + k;
    48          c[i] = sum%20;
    49          k = sum/20;
    50      }
    51  }
    52  
    53 int main()
    54  {
    55      while(cin>>line)
    56      {
    57          memset(a,0,sizeof(a));
    58          memset(b,0,sizeof(b));
    59          memset(c,0,sizeof(c));
    60          CopyNum(a,line);            /*获取加数A*/
    61          cin>>line;
    62          CopyNum(b,line);            /*获取加数B*/
    63          Add();                                /*C=A+B;*/
    64          PrintResult();                /*打印出结果*/
    65      }
    66      return 0;
    67  }
  • 相关阅读:
    [Unity3D]计时器/Timer
    unity缓存和浏览器缓存
    unity3d进行脚本资源打包加载
    Unity3d删除无用的美术资源
    项目经理的职责(转载)
    LINQ
    生意经
    Android ListView标题置顶效果实现
    ListView的自动循环滚动显示
    郭霖的专栏
  • 原文地址:https://www.cnblogs.com/wangaohui/p/2868916.html
Copyright © 2011-2022 走看看