2 u012980441 u012980441 于 2014.01.06 21:31 提问

C语言问题,A+Bproblems,求帮助

题目描述
给你两个正的小数A和B,你的任务是计算出A+B的值。
输入
本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
输出
请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。
样例输入
1.1 2.9
1.1111111111 2.3444323343
1 1.1
样例输出
4
3.4555434454
2.1

#include
#include
int main()
{
int i,j,k,l,len1,len2,flag,sum[1100],p,zb;
char a[400],b[400];
while(scanf("%s%s",a,b)!=EOF)
{
len1=strlen(a);len2=strlen(b);
memset(sum,0,sizeof(sum));/////
flag=0;
for(i=0;a[i];i++)
if(a[i]=='.')
break;
k=i+1; //////0~~~i-1wei zhengshu
if(a[i])
flag=1; ///1 zhengshu 0 xiaoshu
for(j=0;b[j];j++)
if(b[j]=='.')
break;
l=j+1; /////0~~~~j-1 wei zhengshu
if(b[j])
flag=1;
if(i>j)
zb=i+1; ///zui da you zb wei zhengshu
else
zb=j+1;

    p=zb;      //// p wei zheng shu
    i--;
    j--;
    for(;;i--,j--)
    {
        if(i>=0&&j>=0)
            sum[p--]=a[i]-'0'+b[j]-'0';       ////sum[0] liu gei jinwei
        else if(i>=0&&j<0)
            sum[p--]=a[i]-'0';
        else if(i<0&&j>=0)
            sum[p--]=b[j]-'0';
        else if(i<0&&j<0)
            break;      
    }       
    p=zb+1;        //// p liu gei xiaoshudian
    for(;;k++,l++)
    {
        if(k<len1&&l<len2)
            sum[p++]=a[k]-'0'+b[l]-'0';    ///xiaoshu bufen jisuan
        else if(k<len1&&l>=len2)
            sum[p++]=a[k]-'0';
        else if(k>=len1&&l<len2)
            sum[p++]=b[l]-'0';
        else if(k>=len1&&l>=len2)
            break;      
    }
    for(i=p-1;i>=0;i--)
        if(sum[i]>=10)
        {
            sum[i]=sum[i]-10;
            sum[i-1]++;
        }
    i=0;
    while(sum[i]==0)
        i++;
    for(;i<=zb;i++)
        printf("%d",sum[i]);        
    p--;
    while(sum[p]==0&&p>=0)
        p--;
    if(p<=zb)
        flag=0;
    if(flag)
    {
        printf(".");
        for(i=zb+1;i<=p;i++)
            printf("%d",sum[i]);        
    }   
    printf("\n");
}
return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!