zoukankan      html  css  js  c++  java
  • 进制数相加 char* sum(int n,char* num1,char* num2)

    进制数相加 char* sum(int n,char* num1,char* num2)

    功能:

    第一个参数n 代表多少进制,最大就是36进制,从0到9,然后a到z代表10到35.

    char* num1 和char* num2 分别接受两个数字字符串,然后相加得到的结果返回

    #include<iostream>
    using namespace std;
    //n 表示进制数
    //a 表示操作数1
    //b 表示操作数2
    //jy 表示进位数
    //jy1 是否进位 
    char sum1(int n,char a,char b,int jy,int* jy1)
    {
        int num1=0;
        int num2=0;
        if(isdigit(a)) num1=a-'0';
        else num1=a-'a'+10;
        if(isdigit(b)) num2=b-'0';
        else num2=b-'a'+10;
        if(num1+num2+jy>n)
        {
        
            int temp=num1+num2+jy-n;
            *jy1=1;
            if(temp<10)
            {
                return '0'+temp;
              
            }
            else
            {
                
                return 'a'+temp-10;
                
            }
        }
        else
        {
           
            int temp=num1+num2+jy;
            *jy1=0;
            if(temp<10)
            {
                return '0'+temp;
              
            }
            else
            {
                
                return 'a'+temp-10;
                
            }    
        }
    }
    char* sum(int n,char* num1,char* num2)
    {
        int num1_len= strlen(num1);
        int num2_len=strlen(num2);
        int max=num1_len>num2_len?num1_len:num2_len;
        int jy=0;
        char *he=new char[max+2];
        memset(he,0,max+2);
        for(int i=0;i<max+1;i++)
        {
            char a;
            char b;
            if(num1_len-1-i>=0)
            {
                 a=num1[num1_len-1-i];
                
                
            }
            else{
                a='0';
            }
            if(num2_len-1-i>=0)
            {
               b=num2[num2_len-1-i]; 
            }
            else
            {
                b='0';
            }
            he[i]=sum1(n,a,b,jy,&jy);
            
        } 
        return he;
    } 
    int main()
    {
        char* num1=new char[100];
        char* num2=new char[100];
        int n;
        while(cin>>num1>>num2>>n)
        {
            char* p=sum(n,num1,num2);
            for(int i=0;i<strlen(p);i++)
             {
               if(p[strlen(p)-1-i]=='0')continue;
                 cout<<p[strlen(p)-1-i];
            }
        }
    
        
    
        getwchar();
        return 0;
    }
  • 相关阅读:
    apiClould微信三方登录,qq三方登录
    微信小程序 使用环信聊天工具
    某些控件的应用
    记事本(查找与替换)
    记事本部分功能
    Winform——计算器进制转换
    Winform——计算器
    汉企C#面向对象——继承Practice
    汉企C#面向对象——继承
    二分法
  • 原文地址:https://www.cnblogs.com/Small-Life/p/4009327.html
Copyright © 2011-2022 走看看