程序猿的日常内卷 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 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错
  • ¥15 java python或者任何一种编程语言复刻一个网页
  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信