📄 超长整数相加.c
字号:
#include <stdio.h>
main()
{
char a[100],b[100];
int v,i=0,j=0,k,t=1,x,y,z,d[100],m=0,r;
while((v=getchar())!='\n'&&v!=EOF)
{
a[i]=v;
i++;
}
while((v=getchar())!='\n'&&v!=EOF)
{
b[j]=v;
j++;
}
if(i<=j)
{
z=a[i-1]-'0'+b[j-1]-'0';
if(z>9)
{
d[0]=z-10;
m=1;
}
else
d[0]=z;
r=j-2;
for(k=i-2;k>=0;k--)
{
x=a[k]-'0';
y=b[r]-'0';
z=x+y+m;
r--;
if(z>9)
{
d[t]=z-10;
m=1;
t++;
}
else
{
d[t]=z;
m=0;
t++;
}
}
if(m==1&&t>=j)
d[t++]=1;
else
{
d[t]=b[j-t-1]+m-'0';
for(t=i+1;t<j;t++)
d[t]=b[j-t-1]-'0';
}
}
else
{
z=a[i-1]-'0'+b[j-1]-'0';
if(z>9)
{
d[0]=z-10;
m=1;
}
else
d[0]=z;
r=i-2;
for(k=j-2;k>=0;k--)
{
x=a[r]-'0';
y=b[k]-'0';
z=x+y+m;
r--;
if(z>9)
{
d[t]=z-10;
m=1;
t++;
}
else
{
d[t]=z;
m=0;
t++;
}
}
if(m==1&&t>=i)
d[t++]=1;
else
{
d[t]=a[i-t-1]+m-'0';
for(t=j+1;t<i;t++)
d[t]=a[i-t-1]-'0';
}
}
m=t;
for(i=t-1;i>=0;i--)
{
if(d[i]!=0)
break;
else
m--;
}
for(i=m-1;i>=0;i--)
printf("%d",d[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -