#include<stdio.h>
#include<string.h>
#include<math.h>
#define IndexMax 1002
char* puqi(char num[],int Lmax,int Lmin)
{
int i;
char c[IndexMax];
for(i=0;i< Lmax;i++)
{
c[i]='0';
}
c[i]='\0';
for(i=0;i<=Lmin;i++)
{
c[Lmax-i]=num[Lmin-i];
}
return c;
}
int main()
{
//输入数据
char a[IndexMax],b[IndexMax];
//补齐后的输入数据
char ap[IndexMax],bp[IndexMax];
//逆序后的输入数据
char a1[IndexMax],b1[IndexMax];
//计算结果
char result[IndexMax];
char * ca,*cb;
int p = 0,q = 0;
while(scanf("%s %s",&a[p++],&b[q++])!=EOF)//%s发现空白就终止,自动加'\0'
{
int i,j,la,lb,n,Lmax;
la = strlen(a);
lb = strlen(b);
Lmax = la+1;
if(Lmax<lb)
Lmax=lb;
//第一步:补齐数据
if(la>lb)
{
cb=puqi(b,la,lb);
for(i=0;i<Lmax;i++)
{
bp[i] = *(cb+i);
ap[i] = a[i];
}
ap[Lmax]='\0';
bp[Lmax]='\0';
n = strlen(bp);
}
if(la<lb)
{
ca=puqi(a,lb,la);
for(i=0;i<Lmax;i++)
{
ap[i] = *(ca+i);
bp[i] = b[i];
}
ap[Lmax]='\0';
bp[Lmax]='\0';
n = strlen(ap);
}
if(la == lb)
for(i=0;i<Lmax;i++)
{
ap[i] = a[i];
bp[i] = b[i];
ap[Lmax]='\0';
bp[Lmax]='\0';
n = la;
}
//第二步:逆序
j=0;
for(i=n-1;i>=0;i--)
{
a1[j] = ap[i];
b1[j] = bp[i];
j=j+1;
}
a1[j] = '\0';
b1[j] = '\0';
//第三步:加法操作
for(i=0;i<n;i++)
{
if((a1[i]+b1[i]-'0')>'9')
{
result[i] = a1[i]+b1[i]-('9'+'1'-'0');
b1[i+1] += ('1'-'0');
}
else
result[i] = a1[i]+b1[i]-'0';
}
//判断最高位是否进位
if((a1[n-1]+b1[n-1]-'0')>'9')
{
result[n] = '1';
result[n+1] = '\0';
}
else
result[n] = '\0';
n = strlen(result);
//第四步:逆序输出结果
for(i=n-1;i>=0;i--)
{
printf("%c",result[i]);
}
printf("\n");
p=0;q=0;
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复