首页 > 代码库 > 进制数相加 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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。