|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#define n 50
main()
{
char a[n]={},b[n]={},c[n]={},ch,f,m;
int i,d=0,e=0,g,h,k,j;
for(i=0;i<n;i++)//全部初始化为0,防止“\0”的出现
{
a[i]='0';b[i]='0';c[i]='0';
}
for(i=n-1;i>=0;i--)//输入字符
{
scanf("%c",&ch);
if(ch==' ')break;
a[i]=ch;
d++;
}
for(i=n-1;i>=0;i--)//同上
{
scanf("%c",&ch);
if(ch=='\n')break;
b[i]=ch;
e++;
}
for(i=n-d,g=0;g<=d/2-1;i++,g++)//逆序
{
f=a[i];
a[i]=a[n-1-g];
a[n-1-g]=f;
}
for(i=n-d,g=0;g<=e/2-1;i++,g++)//同上
{
h=b[i];
b[i]=b[n-1-g];
b[n-1-g]=h;
}
for(i=n-1;i>=0;i--)//解决进位的问题
{
if(((a[i]-'0')+(b[i]-'0'))/10==0)//解决不进位的算法
{
if((a[i]-'0')+(b[i]-'0')==10)
{
c[i]='0';
a[i-1]++;
}
else
c[i]=(a[i]-'0')+(b[i]-'0')+'0';//感觉这样写麻烦,但别的都错了……
}
else//解决进位的算法
{
c[i]=(a[i]-'0')+(b[i]-'0')-10+'0';
j=((a[i]-'0')+(b[i]-'0'))/10;
a[i-1]+=j;
}
}
for(i=0;i<=n;i++)//算出到底到哪一位才开始有数字
{
if(c[i]!='0')
{
k=i;
break;
}
}
for(i=k;i<n;i++)//输出结果
{
printf("%c",c[i]);
}
}
|
|