| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 463 人关注过本帖
标题:杭电1002,大数相加不能AC,希望看看我的代码哪里有问题。
只看楼主 加入收藏
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:5 
杭电1002,大数相加不能AC,希望看看我的代码哪里有问题。
程序代码:
#include "stdio.h"
#include "string.h"
int main()
{
    char a[1000],b[1000],t;
    int len,i,A,B,n=1000,t1,j;
    scanf("%d",&t1);
    for(j=1;j<=t1;j++)
    {
        char c[1001]={0};
        n=1000;
       
    scanf("%s %s",a,b);
   
    A=strlen(a);
    B=strlen(b);
    if(A>=B)len=A;
    if(B>A)len=B;
   
    for(i=0;i<A-1;i++,A--) ////反序a
    {
        t=a[i];
        a[i]=a[A-1];
        a[A-1]=t;       
    }
        for(i=0;i<B-1;i++,B--) ///反序b
    {
        t=b[i];
        b[i]=b[B-1];
        b[B-1]=t;       
    }
    A=strlen(a);
    B=strlen(b);
    for(i=0;i<A;i++)a[i]=a[i]-'0';///换成整数
    for(i=0;i<B;i++)b[i]=b[i]-'0';
   
    c[0]=a[0]+b[0]; ///先计算个位数
        for(i=1;i<len;i++)
    {
        c[i]=a[i]+b[i]+c[i-1]/10; ///i位相加并加上前一位进数
        c[i-1]=c[i-1]%10; ///
       
    }
    c[i+1]=c[i]/10; ///计算最高位
    c[i]%=10;
   
    while(!c[n]) ///测量数组长度
    n--;
   
    printf("Case %d:\n",j);
    for(i=A-1;i>=0;i--)
    {
    printf("%d",a[i]);
    }
    printf(" + ");
        for(i=B-1;i>=0;i--)
    {
    printf("%d",b[i]);
    }
    printf(" = ");
        for(i=n;i>=0;i--)
    {
    printf("%d",c[i]);
    }
    printf("\n");
   
   
}
return 0;

}
直接看看我的代码吧,别自己写了,我希望知道我哪里有问题。谢谢了。


已经加上我的注释

[ 本帖最后由 skyn 于 2012-11-5 23:52 编辑 ]
搜索更多相关主题的帖子: 希望 
2012-11-05 23:29
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
收藏
得分:0 
已经找到问题了。。正在解决!

﹎'ひS.т.й.R.S.に`"
2012-11-05 23:35
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
收藏
得分:0 
不知道怎么解决,求高手解答!

﹎'ひS.т.й.R.S.に`"
2012-11-05 23:44
低调求学
Rank: 2
等 级:论坛游民
帖 子:51
专家分:33
注 册:2012-5-9
收藏
得分:0 
能说说具体是什么问题吗?感觉的你的代码挺冗余的。。
2012-11-06 18:40
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
收藏
得分:0 
数组a b长度不一致时,相加会出现问题。也许是没有赋值的数相加造成的

﹎'ひS.т.й.R.S.に`"
2012-11-07 00:30
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <string.h>

#define MAX 1000

int ans[MAX];

int main()
{
    int t,i,j,pos,caseNum=0;
    char str1[MAX],str2[MAX];
   
    scanf("%d",&t);
    while(t--)
    {
        scanf("%s %s",str1,str2);
        pos=0;
        caseNum++;
        memset(ans,0,sizeof(ans));
        for(i=strlen(str1),j=strlen(str2);i>=0&&j>=0;i--,j--)
        {
            ans[pos]+=str1[i]-'0'+str2[j]-'0';
            if(ans[pos]>9)
            {
                ans[pos]%=10;
                ans[pos+1]+=1;
            }
            pos++;
        }
        if(i>0)
        {
            for(;i>=0;i--)
            {
                ans[pos]+=str1[i]-'0';
                if(ans[pos]>9)
                {
                    ans[pos]%=10;
                    ans[pos+1]+=1;
                }
                pos++;
            }
        }
        if(j>0)
        {
            for(;j>=0;j--)
            {
                ans[pos]+=str2[j]-'0';
                if(ans[pos]>9)
                {
                    ans[pos]%=10;
                    ans[pos+1]+=1;
                }
                pos++;
            }
        }
        printf("Case %d:\n",caseNum);
        printf("%s + %s = ",str1,str2);
        if(ans[pos]) printf("%d",ans[pos]);
        for(i=pos-1;i>0;i--) printf("%d",ans[i]);
        printf("\n");
        if(t) printf("\n");
    }
    return 0;
}

编程之路定要走完……
2012-11-07 09:09
快速回复:杭电1002,大数相加不能AC,希望看看我的代码哪里有问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030110 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved