33,028
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<iostream>
using namespace std;
char a[101],b[101],c[101];
int main()
{
int m,n,k,len,p,q,t;
// freopen("input.txt","r",stdin);
while(scanf("%s%s",&a,&b)!=EOF)
{
t=0;
m=strlen(a); //字符串a长度
n=strlen(b); //字符串b长度
k=0;
if(m>n) //a+b结果的长度
len=m-1;
else
len=n-1;
while(m||n)
{
if(m<0)
p=48; //如果a先运算完毕,置0
else
{
p=(int)a[m-1]; //转化为ASCII码值相加,然后运算,0~9为48~57, a~j为97~106
if(p<58)
p-=48;
else
p-=87;
}
if(n<0)
q=48;
else
{
q=(int)b[n-1];
if(q<58)
q-=48;
else
q-=87;
}
t=p+q+k;
if(t<10) //转化为20进制(包括符合和数字的转换)
c[len--]=t+47;
if(t>=10&&t<20)
c[len--]=t+87;
else if(t>=20&&t<30)
c[len--]=t-20+48;
else
c[len--]=t-20+87;
k=t/20;
m--;
n--;
}
if(k)
printf("%d",k);
printf("%s\n",c);
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1,str2,str;
int i,j,k,num1,num2;
while(cin>>str1>>str2)
{
str="";k=0;
for(i=str1.length()-1,j=str2.length()-1;i>=0&&j>=0;i--,j--)
{
if(str1[i]>='0'&&str1[i]<='9')
num1=str1[i]-'0';
else
num1=str1[i]-'a'+10;
if(str2[j]>='0'&&str2[j]<='9')
num2=str2[j]-'0';
else
num2=str2[j]-'a'+10;
num1=num1+num2+k;
k=num1/20;
num1%=20;
if(num1<10)
str.insert(0,1,(char)(num1+'0'));
else
str.insert(0,1,(char)(num1+'a'-10));
}
while(i>=0)
{
if(str1[i]>='0'&&str1[i]<='9')
num1=str1[i]-'0';
else
num1=str1[i]-'a'+10;
num1+=k;
k=num1/20;
num1%=20;
if(num1<10)
str.insert(0,1,(char)(num1+'0'));
else
str.insert(0,1,(char)(num1+'a'-10));
i--;
}
while(j>=0)
{
if(str2[j]>='0'&&str2[j]<='9')
num1=str2[j]-'0';
else
num1=str2[j]-'a'+10;
num1+=k;
k=num1/20;
num1%=20;
if(num1<10)
str.insert(0,1,(char)(num1+'0'));
else
str.insert(0,1,(char)(num1+'a'-10));
j--;
}
cout<<str<<endl;
}
system("pause");
return 0;
}