// beautiful.cpp : Defines the entry point for the console application.
//
#include"stdafx.h"
#include <string.h>//导入String有关的头文件
#define MAXLEN 20 //定义一个常量,注意常量后面是没有;的!!!
int main(int argc, char* argv[]){
int a[MAXLEN],b[MAXLEN],c[MAXLEN]; //设定长度
char s1[MAXLEN],s2[MAXLEN]; //S1:a S2:b
int l1,l2,na,nb,nc,i,j,k;
//l1,l2:字符串的长度 na,nb,nc:a[],b[],c[]的长度
memset(a,0,sizeof(a)); //让a,b,c清零
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
printf("Please enter 2 numbers to add");
scanf("%s%s",s1,s2); //得到俩个要相加的数
l1 =strlen(s1);//strlen函数:计算的是字符串str的长度,从字符的首地址开始遍历,以 '\0' 为结束标志
l2=strlen(s2);//然后将计算的长度返回,计算的长度并不包含'\0'。
for(i = 0;i<l1;i++){ //将字符串转换为int数组
a[i]=s1[l1-i-1]-'0';
}
na=l1; //得到int a [] 算式的长度
for(i = 0;i<l2;i++){ //将字符串转换为int数组
b[i]=s2[l2-i-1]-'0';
}
nb=l2; //得到int b [] 算式的长度
if(na>nb){ //比较 a和b的长度,并且将最长的长度赋给c
//如 a=10000,b=2222,a 长为;5,b长为4,那么c的长度就是5;
nc=na;
}
else {
nc=nb;}
for(i=0;i<nc;i++){ //开始进行a+b=c的运算
c[i]=c[i]+a[i]+b[i];// c[i];加上了进位
c[i+1]+=c[i]/10;// 进位
c[i]=c[i]%10;// 得到个位数
}
nc++;//0~nc-1都已经进好了位数,nc位可能发生了进位,所有为了显示进位,让nc++
while(c[nc-1]==0){ //判断有没有前导零,如,nc++之前,99,9为nc-1,nc++之后,990,0为nc-1
if(nc==1){
break;
}
nc--;
}
for(i=nc-1;i>=0;i--){ //从最右位开始倒数,如 123,3:nc-1
printf("%d",c[i]);
}
return 0;
}