我帮你给了一些,int main(){
.........
return 0;}
#include
#include
#include
using namespace std;
int strcmp(char* a,char* b)
{
int la=strlen(a);//取整数a的位数
int lb=strlen(b);//取整数b的位数
if(la>lb)return 1;
else if(laelse if(aelse return 1;//长度相等则可按一般的字符串比较大小’,
}
char* stradd(char* a,char* b)
{char*p;//存放两数的和
int la=strlen(a);//取整数a的位数’,
int lb=strlen(b);//取整数b的位数.,
int h=0,lp=lb;
if(strcmp(b,a)) swap(a,b);//如果b>a.则a.b交换’,
int c=0;//c是进位
for(int i=0;i{
h=a[la-i-1]-'0'+b[lb-i-1]-'0'+c;// 转换成数值运算’,
if(h>9){h=h-10;c=1;}
else c=0;
p[i]=h+'0';// 还原为字符’,
}
//处理a的高位部分’,
for(int i=lb;i
h=a[la-i-1]-'0'+c;
if(h>9){h=h-10;c=1;}
else c=0;
p[i]='0' +h;
if(c>0)//如果还有进位,则和的位数加l·,
{p[i]=c+'0'; lp=i;}//lp表示和的位数’,
else lp=i-1;
}
//将和的数位顺序调整’,
for(int i=0;i<(lp+1)/2;i++)swap(p[i],p[lp-i]);
return p;
}
char* strsub(char* a,char* b)
{
char* p;//存放两数的差’,
int la,lb,c,i,h,lp;
if(strcmp(b,a))return NULL;//减数大于被减数,则不能相减.,
la=strlen(a);//取整数a的位数’,
lb=strlen(b);//取整数b的位数’,
c=0;//c是借位’,
for(i=0;i{
h=a[la-i-1]-b[lb-i-1]-c;
if(h<0){h=h+10;c=1;}
else c=0;
p[i]=h+'0';
}
for(i=lb;i
h=a[la-i-1]-'0'-c;
if(h<0){h=h+10;c=1;}
else c=0;
p[i]=h+'0';
}
lp=i-1;
for(i=0;i<(lp+1)/2;i++) swap(p[i],p[lp-i]);
return p;
}
char *strmut(char *a,char *b)
{
char *p;
int la,lb,c,i,h,lp;
la=strlen(a);//取整数a的位数 ,
lb=strlen(b);//取整数b的位数 ,
for(i=la-1;i>=0;i--)
{
c=0;
for(int j=lb-1;j>=0;j--)
{
lp=i+j+1;
h=(a[i]-'0')*(b[j]-'0')+p[lp]-'0'+c;
c=h/10;
h=h%10;
p[lp]=h+'0';
if(c>0)p[i+j+1]=c+'0';
}
}
return p;
}
char *strdiv(char *a,char *b,char **remainder)
{
char *s="0";
while(strcmp(a,b))
{
a=strsub(a,b);s=stradd(s,"1");}
*remainder=a;
return s;
}
int main()
{
char a[100]="1111111111111111111111111111111111111";
char b[105]="1000000000000000000000000000000000000";
char c[106];
strcpy(c,stradd(a,b));
for(int i=0;i
cout<
return 0;
}我改了,没错误,但不知道你要的结果是什么,可能改错了