首先我说一下思路,因为所求的数过大,所以只能用数组或字符串来储存
下面是加法,而乘法也差不多,就是用最原始的方法求(用小学的时候学习乘法的方法),另外需要考虑进位问题,超过10进位,
#include <stdio.h>
#include <string.h>
#define N 50
void main()
{
char a[N],b[N];
int c[N]={0},d[N]={0},i,j,k,t,count1,count2;
gets(a);//输入一个数,用字符串接收
gets(b);//输入另一个数,用字符串接收
for(i=49,j=strlen(a)-1;j>=0;i--,j--)//把加数转换为数组形式储存,便于讲算
c[i]=a[j]-'0';
count1=i+1;
for(i=49,j=strlen(b)-1;j>=0;j--,i--)//把另一个加数转换为数组形式储存,
d[i]=b[j]-'0';
count2=i+1;
if(count1<count2) t=count1;
else t=count2;
printf("%d,%d,%d\n",count1,count2,t);
for(i=t;i<N;i++)//把每们分别相加
d[i]=d[i]+c[i];
for(i=N-2;i>=t-1;i--)//进位
d[i]=d[i]+d[i+1]/10;
for(i=t;i<N;i++)//超过10的部分扔掉
d[i]=d[i]%10;
for(i=0;i<N;i++)
{
if(d[i]!=0) {k=i;break;}}
for(i=k;i<N;i++)
printf("%d",d[i]);
printf("\n");
}