#include
#include
#include
#defineMAXSIZE200
//用来计算bigint中第一个不为零的数字(最高位)的位置(下标)
intmark_bigint(intbigint[])
{
intmark;
for(mark=MAXSIZE-1;mark>=0;mark--)
{
if(bigint[mark]==0)break;
}
returnmark;
}
intmain(void)
{
intbigint1[MAXSIZE]={0,0,9,8,7,6,5,4,3,2,1};
//用来存放大整数1的整型数组,这个大整数值为:12345678900
intbigint2[MAXSIZE]={6,7,1,2,9,8,9,6,8,2,7,8,9,1,2};
//用来存放大整数2的整型数组,这个大整数值为:219872869892176
intbigint3[MAXSIZE+1];
//用来存放大整数运算结果的整型数组
intk,i,mark1,mark2,mark3,mark;
mark1=mark_bigint(bigint1);
//计算bigint1中第一个不为零的数字(最高位)所在的下标
mark2=mark_bigint(bigint2);
//计算bigint2中第一个不为零的数字(最高位)所在的下标
mark=mark1>mark2?mark1:mark2;
//取位数长的那个大整数的最高位的下标
k=0;
while(k10)//进位处理
{
bigint3[k+1]++;
bigint3[k]=bigint3[k]-10;
}
k++;
}
mark3=mark_bigint(bigint3);
//计算bigint3中第一个不为零的数字(最高位)所在的下标
printf("相加结果为:\n");
for(i=MAXSIZE-1;i>=0;i--)//输出相加结果
printf("%d",bigint3);
putchar('\n');
return0;
}
分 -->
|