40分代码,请问出了什么问题
查看原帖
40分代码,请问出了什么问题
367436
Miquella楼主2020/12/5 21:01
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
    char aa[1001],bb[1001];
    int a[1001],b[1001],c[1002],i,x;
    cin>>aa>>bb;
    //把char数组aa和bb转换为int数组a和b
    int lena,lenb,lenc;
    lena = strlen(aa);lenb = strlen(bb);
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    //为了方便代码表填写,转换的同样翻转一下数组
    for(i = 0;i<=lena-1;i++) a[lena-i] = aa[i] - '0';
    for(i = 0;i<=lenb-1;i++) b[lenb-i] = bb[i] - '0';
    //第二部分:计算c = a+b
    lenc = 1;
    x = 0;
    while(lenc<=lena||lenc<=lenb)
    {
        c[lenc] = a[lenc]+b[lenc]+x;
        
        if(c[lenc]>9)
        {
            c[lenc]-=10;
            x = 1;
        }
        lenc++;
    }
    //处理a+b已经加完,但是x里面还有存有进位的情况
    c[lenc] = x;
    if(c[lenc] == 0)
    {
        lenc--;
    }
    //第三部分:输出c
    for(i = lenc;i>=1;i--)cout<<c[i];
    cout<<endl;
    return 0;
}
2020/12/5 21:01
加载中...