直接上代码了:
#include
#include
#include
#include
#include
#include
#include
#include
顺便附上高精度加法的函数:
//高精度加法
void highplus(char a[],char b[],char c[])//调用前必须memset
{//将a+b存到c中,直接输出,但c是字符型,要整形则简修改即可
char ch;
int la = strlen(a),lb = strlen(b);
for(int i = 0;i<=(la-1)/2;i++)//将a和b位数倒转,以便逐位相加;同时-‘0’转成整形
{
ch = a[i]-'0';
a[i] = a[la-1-i]-'0';
a[la-1-i] = ch;
}
for(int i = 0;i<=(lb-1)/2;i++)
{
ch = b[i]-'0';
b[i] = b[lb-1-i]-'0';
b[lb-1-i] = ch;
}
for(int i = 0;i<100;i++)//这里的100根据调用函数而修改
{ //逐位计算,依照加法竖式
c[i] += b[i]+a[i];
c[i+1] += c[i]/10;
c[i] %= 10;
}
int i = 99;//若精度不同记得修改
while(!c[i]) i--;//跳过无用的0;
for(int j = 0;j<=i/2;j++)//将c再换成字符型,并再倒叙,使其成为正常数
{ //记住要经过中间数,否则中间一个将没有转成字符型,所以用<=(len-1)/2
ch = c[j]+'0';
c[j] = c[i-j]+'0';
c[i-j] = ch;
}
}