程序猿的日常内卷 2023-03-30 10:40 采纳率: 100%
浏览 51
已结题

杭电OJ1002, 求A+B

我这个题目是杭电OJ上的pb1002,具体问题如下:

img

然后下面是我的c语言代码:

#include<stdio.h>
#include<string.h>
int main(){
//    #define test
//    #ifdef test
//    freopen("pb1002.in", "r", stdin);
//    freopen("pb1002.out", "w", stdout);
//    #endif
    char a[1001], b[1001];
    int x[1001]={0}, y[1001]={0}, z[1001]={0};
    int k=0, n, i, len1, len2, maxlen;
    scanf("%d", &n);
    while(k++<n){
        scanf("%s %s", &a, &b);
        len1=strlen(a);
        len2=strlen(b);
        for(i=0; i<len1; i++) 
            x[i]=a[len1-1-i]-'0';
        for(i=0; i<len2; i++) 
            y[i]=b[len2-1-i]-'0';
        maxlen=(len1>len2)?len1:len2;
        for(i=0; i<maxlen; i++) 
            z[i]=x[i]+y[i];
        for(i=0; i<maxlen; i++){
            if (z[i]/10) {
                z[i]=z[i]%10;
                z[i+1]++;
            }
        }
        printf("Case %d:\n", k);
        printf("%s + %s = ", a, b);
        if (z[maxlen]) printf("%d", z[maxlen]);
        for(i=maxlen-1; i>=0; i--){
            printf("%d", z[i]);
        }
        if (k!=n) printf("\n\n");
    }
    return 0;
}

提交后显示我的是WRONG ANSWER, 希望有人能帮我看看哪里的问题,感谢感谢

  • 写回答

2条回答 默认 最新

  • 智者知已应修善业 2023-03-30 11:12
    关注

    老掉牙的算法用了5个数组,新算法用2个数组即可,而且数组每单元可动态存储不同位数从1位到安全的8位或18位,扩展后的万位数组可以运算倍数位,按每单元5位运算结果.设计加法应注意连续进位处理.设计减法应该注意连续借位处理.

    img


    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 3月30日

悬赏问题

  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表