2301_79861214 2023-10-26 17:34 采纳率: 89.5%
浏览 4
已结题

是不应该用longlong吗 怎么解决呢

img


这个为什么不可以呢 是用longlong有问题么 那么应该怎么写呢
希望各位指点

  • 写回答

3条回答 默认 最新

  • 关注

    大整数加法了解一下

    #include <stdio.h>
    #include <string.h>
    
    #define MAX_LEN 1024
    
    char lhs[MAX_LEN];
    char rhs[MAX_LEN];
    char result[MAX_LEN];
    
    int reverse(char *str);
    void add(char *lhs, char *rhs, char *result);
    
    int main()
    {
        scanf("%s %s", lhs, rhs);
        add(lhs, rhs, result);
        printf("%s\n", result);
        return 0;
    }
    
    int reverse(char *str)
    {
        const int len = (int)strlen(str);
        char temp;
    
        for (int i = 0; i != len / 2; i++)
        {
            temp = str[i];
            str[i] = str[len - i - 1];
            str[len - i - 1] = temp;
        }
    
        return len;
    }
    
    void add(char *lhs, char *rhs, char *result)
    {
        int lhsLen = reverse(lhs);
        int rhsLen = reverse(rhs);
    
        int carry = 0;
        const int ten = 10;
    
        for (int i = 0, j = 0, sum; i < lhsLen || j < rhsLen; i++, j++)
        {
            sum = (i < lhsLen ? lhs[i] - '0' : 0) +
                  (j < rhsLen ? rhs[j] - '0' : 0) + carry;
    
            result[i] = (char)(sum % ten + '0');
    
            carry = sum / ten;
        }
    
        int maxLen = lhsLen > rhsLen ? lhsLen : rhsLen;
    
        if (carry > 0)
        {
            result[maxLen++] = (char)(carry + '0');
        }
    
        result[maxLen] = '\0';
    
        reverse(result);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!