倾世宠妻慕容长青结局:请问如何去掉零(C程序)

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 01:23:39
【问题描述】
编写程序实现两个超长正整数(每个最长80位数字)的加法运算。

【输入形式】

从键盘读入两个整数
1. 第一行是超长正整数A;
2. 第二行是超长正整数B;

【输出形式】
输出只有一行,是两个长整数的运算结果,从高到低依次输出各位数字。各位数字紧密输出。
算法提示:

1.用字符串输入两个超长整数,分别存放在两个字符串中,每一位对应一个字符串中的字符。
2.以较短的超长整数为基准,从低位到高位,对应位转换成数字后相加,再加上前一位相加的进位,得到的和模上10再转换为字符即为当前位,得到的和整除10即为当前位的进位。将计算得到的每一位保存到结果字符数组。
3.将较长字符串的剩余位加上最后一个进位移到结构数组后面。
4.将结果数组反序输出(去掉高位多余的0)。
【输入样例】

134098703578230056
234098

【输出样例】
134098703578464154

【样例说明】
进行两个正整数加法运算,134098703578230056 + 234098 = 134098703578464154。

#include<stdio.h>
#include<string.h>

void Format(char *ch)
{
char temp[101];
int i,j,mark=0,len=strlen(ch);
int x,x1=0;

for(i=0;i<len;i++)
if(ch[i]!='0')
{
mark=i;
break;
}
else
continue;

for(i=mark,j=0;i<len;i++,j++)
temp[j]=ch[i];
temp[j]=0;
strcpy(ch,temp);
}

void Add(char *ch1,char *ch2)
{
int l1=strlen(ch1),l2=strlen(ch2);
char temp[101];
int j,ll,ii;
int maxlen=(l1>l2) ? l1:l2;
int carry=0;

for(j=0;j<maxlen;j++)
{
int d1=(j>l1-1)?0:ch1[l1-j-1]-'0';
int d2=(j>l2-1)?0:ch2[l2-j-1]-'0';
int digitsum=d1+d2+carry;
if(digitsum>=10)
{
digitsum-=10;
carry=1;
}
else
carry=0;
temp[j]=digitsum+'0';
}
if(carry==1)
temp[j++]='1';
temp[j]='\0';

ll=strlen(temp);
for(ii=ll-1;ii>=0;ii--)
printf("%c",temp[ii]);
printf("\n");
}

main()
{
char a[80],b[80];
scanf("%s",a);
scanf("%s",b);
Format(a);
Format(b);
Add(a,b);

}

此程序运行这个000+00=000,请问如何处理结果中高位的零,使其编程000+00=0

请朋友指点一下,结束回答会给最佳答案追加分数!谢谢!