首页 > 代码库 > 进制数相加 char* sum(int n,char* num1,char* num2)

进制数相加 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;}

 

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