大整数又称高精度整数,用基本数据类型无法村存储其精度的整数,所以需要用数组存储
需要注意以下几点:
1、大整数运算,用数组来表示,数组中每一位存储整数的每一位。
2、 整数的高位存储在数组的高位,整数的低位存储在数组的低位,运算的时候从低位到高位进行枚举。
3、整数按照字符串类型进行读入,读入的字符串需要逆序,并且使用len来记录位的长度
4、需要构造函数,能够直接初始化结构体
5、通过字符串进行读入,在转存到bign结构体,读入的时候整数高位在字符串低位,因此要倒着赋值
#include<cstdio>
#include<cstring>
struct bign{
int d[1000];
int len;
bign(){//初始化结构体
memset(d,0,sizeof(d));
len=0;
}
};
bign change(char str[])
{//将整数转为 bign
bign a;
a.len=strlen(str);
for(int i=0;i<a.len;i++)
{
a.d[i]=str[a.len-i-1]-'0';
}
return a;
}
bign add(bign a,bign b)
{
bign c;
int carry=0;//进位
for(int i=0;i<a.len||i<b.len;i++)
{
int t=a.d[i]+b.d[i]+carry;
c.d[c.len++]=t%10;
carry=t/10;
}
if(carry!=0)
{
c.d[c.len++]=carry;
}
return c;
}
void print(bign a)
{
for(int i=a.len-1;i>=0;i--)
{
printf("%d",a.d[i]);
}
}
int main()
{
char str1[1000],str2[1000];
scanf("%s%s",str1,str2);
bign a=change(str1);
bign b=change(str2);
print(add(a,b));
return 0;
}