fangyxp 2021-09-25 20:15 采纳率: 100%
浏览 18
已结题

帮我康康,这个高精度加法哪里有问题,蟹蟹

帮我看看,急!

#include<bits/stdc++.h>
using namespace std;
char sa[1010],sb[1010];
int la,lb,lc,a[1010],b[1010],c[1010];
int main()
{
    cin >> sa >> sb;
    la = strlen(sa);
    lb = strlen(sb);
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    for(int i=0;i<=la;i++)
        a[i]=sa[i]-'0';
    for(int i=0;i<=lb;i++)
        a[i]=sb[i]-'0';
    lc = la > lb ? la : lb;
    memset(c,0,sizeof(c));
    for(int i=0;i<lc;i++)
    {
        c[i]=a[i]+b[i]+c[i];
        if(c[i]>=10)
        {
            c[i+1] = 1;
            c[i] -= 10;
        }
    }
    if(c[lc]>0)lc++;
    for(int i=0;i<lc;i++)
        cout<<lc[i];
    return 0;
}

就是输入sa,sb,转到a,b里面,然后加起来,再算进位,有问题吗?
有,还是编译错误,没发现哪错了

  • 写回答

2条回答 默认 最新

  • 泡视界 2021-09-26 09:57
    关注

    问题蛮多的:

    1. Main.cc:29:19: error: invalid types ‘int[int]’ for array subscript 是说你的第29行 cout<<lc[i]; 这一句,lc是个int,不是数组,不能用括号 [ ]进行其值的引用。
    2. 第15行 a[i]=sb[i]-'0'; 这一句应该改为 b[i]=sb[i]-'0';
    3. 没考虑数组溢出的情况,也就是当输入数据超过了1010后的情况,
    4. 第12行和14行的循环条件 for(int i=0;i<=la;i++) 这样写的话会将输入字符串的结尾字符\0 也纳入转换成数字的计算中,应该为 for(int i=0;i<la;i++)
    5. 致命错误:结果转为两数和保存在 c的过程没考虑低位对齐的要素。比如 222 + 3333,你的算法的结果为 5553, 但实际需要低位对齐得出 3555。
      以上,好好修改
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 cv::resize不同线程时间不同
  • ¥15 web课程,怎么做啊😭没好好听课 根本不知道怎么下手
  • ¥15 做一个关于单片机的比较难的代码,然后搞一个PPT进行解释
  • ¥15 python提取.csv文件中的链接会经常出现爬取失败
  • ¥15 数据结构中的数组地址问题
  • ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
  • ¥15 Python题,根本不会啊
  • ¥15 会会信号与系统和python的来
  • ¥15 关于#python#的问题
  • ¥20 oracle RAC 怎么配置啊,配置