一道求A+B=?的c语言题?

来源:百度知道 编辑:UC知道 时间:2024/05/07 08:35:12
例如112233445566778899 + 998877665544332211 = 1111111111111111110
注意数据很长
请哪位高手指教一下该如何编程?

#include<string.h>
#define M 50
main()
{char a[M],b[M],c[M],d[M];
int ia,ib,ic,id;
printf("input a:");
scanf("%s",a);/*输入a*/
printf("\ninput b:");
scanf("%s",b);/*输入b*/
ia=strlen(a);
ib=strlen(b);/*求出a,b的长度(也是输入数据的位数)*/
if(ia>ib){strcpy(c,a);strcpy(d,b);}/*比较两个的长短,把长的那个放到c里,短的放到d里*/
else if(ia==ib&&(a[0]+b[0]-'0'>'9')){/*如果两数位数一样,考虑首位相加进位,并事先多准备一个位置*/
ic=ia+1;c[0]='0';c[1]='\0';strcat(c,a);strcpy(d,b);}
else {strcpy(c,b);strcpy(d,a);}/*比较两个的长短,把长的那个放到c里,短的放到d里*/
ic=strlen(c);
id=strlen(d);/*求出实际参加运算的c,d的长度*/
do{id--;ic--;
c[ic]=c[ic]+d[id]-'0';/*运算*/
if(c[ic]>'9'){c[ic]-=10;c[ic-1]+=1;}/* 处理进位,逢十进一,原位减十,前位加一*/
}while(ic!=0&&id!=0);
printf("\n%s+%s=%s\n",a,b,c);
}
主要考虑进位问题,逢十进一。

/*我做了一个,你看看,应该可以很容易懂得*/
#i