任意两个字符数字的和,该如何解决
任意两个字符数字的和
#include<iostream>
#include <string.h>
using namespace std;
const int MAXLEN=1000;
char a1[MAXLEN];
char a2[MAXLEN];
static int v1[MAXLEN];
static int v2[MAXLEN];
static int v3[MAXLEN];
int i,j,n,L1,L2,z;
int main()
{
cin>>a1;
cin>>a2;
L1=strlen(a1);
for (i=0;i<L1;i++)
v1[i]=a1[L1-1-i]-'0'; //这里为什么要-‘0’
L2=strlen(a2);
for (i=0;i<L2;i++)
v2[i]=a2[L2-1-i]-'0';
for (i=0;i<MAXLEN;i++)
v3[i]=v1[i]+v2[i];
for (i=0;i<MAXLEN;i++) {
if (v3[i]>=10) {
v3[i+1]+=v3[i]/10;
v3[i]=v3[i]%10;
}
}
cout<<a1<<"+"<<a2<<"=";
for (i=MAXLEN-1;i>=0;i--) {
if(v3[i]!=0) break;
}
for(;i>-1;i--){
cout<<v3[i];
}
cout<<endl;
return 0;
}
------解决方案--------------------
v1是整型数组,a1是字符串数组
a1所对应的是ascll码值,例如'0'=48,'5'=53
'5'-'0'=5
这样能否理解
#include<iostream>
#include <string.h>
using namespace std;
const int MAXLEN=1000;
char a1[MAXLEN];
char a2[MAXLEN];
static int v1[MAXLEN];
static int v2[MAXLEN];
static int v3[MAXLEN];
int i,j,n,L1,L2,z;
int main()
{
cin>>a1;
cin>>a2;
L1=strlen(a1);
for (i=0;i<L1;i++)
v1[i]=a1[L1-1-i]-'0'; //这里为什么要-‘0’
L2=strlen(a2);
for (i=0;i<L2;i++)
v2[i]=a2[L2-1-i]-'0';
for (i=0;i<MAXLEN;i++)
v3[i]=v1[i]+v2[i];
for (i=0;i<MAXLEN;i++) {
if (v3[i]>=10) {
v3[i+1]+=v3[i]/10;
v3[i]=v3[i]%10;
}
}
cout<<a1<<"+"<<a2<<"=";
for (i=MAXLEN-1;i>=0;i--) {
if(v3[i]!=0) break;
}
for(;i>-1;i--){
cout<<v3[i];
}
cout<<endl;
return 0;
}
------解决方案--------------------
v1是整型数组,a1是字符串数组
a1所对应的是ascll码值,例如'0'=48,'5'=53
'5'-'0'=5
这样能否理解