满意答案
乐宝_专属
推荐于 2016.07.08
采纳率:52% 等级:9
已帮助:1366人
声明两个能容纳1000位十进制数的char型数组存储输入数字字符串,以长的做被加数和结果,短的长度控制加法循环次数。在加法过程中判断和处理进位。举例代码如下://#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
int main(void){
char a[1002]={'0'},b[1002]={'0'},*pl=a,*ps=b;
int i,j,la,lb;
while(1){//保证输入是正确的
printf("Input a & b(length<=1000)...\n");
scanf("%[1234567890] %[1234567890]",a+1,b+1);//最前面留1位做进位
if((la=strlen(a))<1002 && (lb=strlen(b))<1002)
break;
printf("Error, redo: ");
}
if(la
ps=a,pl=b;
j=la,la=lb,lb=j;
}
for(i=lb-1,j=la-1;i>0;i--,j--)//从末位向前对应加
if((pl[j]+=ps[i]-'0')>'9')//某位>'9'则处理进位
pl[j]-=10,pl[j-1]++;
for(;j>0;j--)//若被加数有进位则继续做完
if(pl[j]>'9')
pl[j]-=10,pl[j-1]++;
printf("The result is %s\n",pl[0]=='1' ? pl : pl+1);//有进位则第0位输出
return 0;
}
10分享举报