所谓的大数运算其实就是一个竖式运算例如:
123
+ 1
--------------
124
123
+ 1
--------------
124
所以我们写的程序就是想办法来构造竖式
#include<stdio.h>
#include<string.h>
void main()
{
char str1[100]="123458156156";
char str2[100]="1234852425454";
int a[100];
int b[100];
int res[100];//创建结果栈,因为结果是倒着计算出来的;
int i,la,lb,pt;
la=strlen(str1);//计算数值的长度
lb=strlen(str2);
for(i=0;i<la;i++)
{
a[i]=str1[i]-'0';
}
for(i=0;i<lb;i++)
{
b[i]=str2[i]-'0';
}
int j=lb-1;
i=la-1;
int temp;
int jinwei=0;
pt=0;
while(i>=0&&j>=0)//相同的位数进行相加
{
temp=a[i]+b[j]+jinwei;
res[pt]=temp%10;
pt++;
jinwei=0;
jinwei=temp/10;
i--;
j--;
}
余下位放入结果栈中
if(i>=0)
{
for(;i>=0;i--)
{
res[pt]=a[i]+jinwei;
jinwei=0;
pt++;
}
}
if(j>=0)
{
for(;j>=0;j--)
{
res[pt]=b[j]+jinwei;
jinwei=0;
pt++;
}
}
//栈输出
for(i=pt-1;i>=0;i--)
{
printf("%d",res[i]);
}
putchar('\n');
}