用数组模拟加法运算
本帖最后由 hevv 于 2011-4-18 01:34 编辑#include <iostream>
int Num;
int nu;
int sum;
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+nu+carry); //数的个位是该数组下表做大的!
sum=temp%10;
carry=temp/10;
}
while(j)
{
temp=nu+carry;
sum=temp%10;
carry=temp/10;
}
while(i)
{
temp=Num+carry;
sum=temp%10;
carry=temp/10;
}
sum=carry;
i=carry?0:1; //如果两数相加的位数超过原来书的最大位数!
//则输出为sum数组从o下标开始输出!
//否则则输出为sum数组从1下标开始输出!
for(i;i<=count;i++)
cout<<sum;
cout<<endl;
return 0;
}
int init(int *a)
{
char ch;
int i=1;
cin>>ch;
while(ch!='\n'&& i<80)
{
a=(int)ch-48; //(int)进行强制转换,数字的ASC比数字本身大48!
cin.get(ch);
}
return --i;
} {:5_108:}大数运算~ 我来学习学习啊
页:
[1]