C语言大神能不能帮我解说一下这个程序

2024-11-17 00:32:52
推荐回答(1个)
回答1:

这算法应该是实现不定位数的相加运算把
#include "stdio.h"
#include "string.h"
#include"stdlib.h"
main()
{ int t,i,n;
char s1[80],s2[80],s3[80],te;
int flag=0;
gets(s1);
gets(s2);
strrev(s1); //将输入的s1倒序
strrev(s2);
if(strlen(s2)>strlen(s1))
{t=strlen(s1);n=1;} //求长度
else {t=strlen(s2);n=0;}
for(i=0;i{
s3[i]=((s1[i]-'0')+(s2[i]-'0'))+'0'+flag; 实现s1与s2的倒序加法
if(s3[i]>'9') //若相加大于一,减十后给下一位加一
{flag=1;
s3[i]-=10;
}
else flag=0;
}
for(i=t;n==1&&i{
s3[i]=s2[i]+flag;
if(s3[i]>'9')
{flag=1;
s3[i]-=10;
}
else flag=0;
}
for(i=t;n==0&&i{
s3[i]=s1[i]+flag;
if(s3[i]>'9')
{flag=1;
s3[i]-=10;
}
else flag=0;
}
if(flag)
{s3[i]='1';i++;}
s3[i]='\0';
strrev(s3); //倒序s3
puts(s3); //输出
}