|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hevv 于 2011-4-18 01:34 编辑
#include <iostream>
int Num[80];
int nu[80];
int sum[81];
int init(int *);
using namespace std;
int main()
{
int digit,count;
int i,j;
i=init(Num); //初始化数组,返回该数的位数!
j=init(nu);
count=digit=(i>j)?i:j;
int carry=0; //记录进位
int temp;
while(j && i )
{
temp=(Num[i--]+nu[j--]+carry); //数的个位是该数组下表做大的!
sum[digit--]=temp%10;
carry=temp/10;
}
while(j)
{
temp=nu[j--]+carry;
sum[digit--]=temp%10;
carry=temp/10;
}
while(i)
{
temp=Num[i--]+carry;
sum[digit--]=temp%10;
carry=temp/10;
}
sum[digit]=carry;
i=carry?0:1; //如果两数相加的位数超过原来书的最大位数!
//则输出为sum数组从o下标开始输出!
//否则则输出为sum数组从1下标开始输出!
for(i;i<=count;i++)
cout<<sum[i];
cout<<endl;
return 0;
}
int init(int *a)
{
char ch;
int i=1;
cin>>ch;
while(ch!='\n'&& i<80)
{
a[i++]=(int)ch-48; //(int)进行强制转换,数字的ASC比数字本身大48!
cin.get(ch);
}
return --i;
} |
|