代码求调
查看原帖
代码求调
593001
Langrange2021楼主2023/3/28 20:56
#include<iostream>
#include<cstring>
using namespace std;
void swapa(char* a)
{
    int i = 0;
    int j = strlen(a) - 1;
    while (i < j)
    {
        swap(a[i], a[j]);
        i++;
        j--;
    }
}
void swap(char& a, char& b)
{
    int t = a;
    a = b;
    b = t;
}
int max(int a, int b)
{
    if (a > b)
        return a;
    else
        return b;
}
int min(int a, int b)
{
    if (a < b)
        return a;
    else
        return b;
}
int main()
{
    int count = 0;
    char a[501], b[501];
    int s[503];
    for (int i = 1; i < 503; i++)
        s[i] = -1;
    s[0] = 0;
    cin >> a >> b;
    swapa(a);
    swapa(b);
    for (int i = 0; i < min(strlen(a), strlen(b)); i++)
    {
        int sum = (int)a[i] - 48 + (int)b[i] - 48;
        s[i] +=sum % 10;
        s[i + 1] = sum / 10;
    }
    if (strlen(a) > strlen(b))
    {
        s[min(strlen(a), strlen(b))] = (s[min(strlen(a), strlen(b))]+(int)a[min(strlen(a), strlen(b))] - 48)%10;
        s[min(strlen(a), strlen(b)) + 1] = (s[min(strlen(a), strlen(b))] + (int)a[min(strlen(a), strlen(b))] - 48) / 10;
    }
    else
    {
        s[min(strlen(a), strlen(b))] = (s[min(strlen(a), strlen(b))]+(int)b[min(strlen(a), strlen(b))] - 48)%10;
        s[min(strlen(a), strlen(b)) + 1] = (s[min(strlen(a), strlen(b))] + (int)b[min(strlen(a), strlen(b))] - 48) / 10;
    }
    for (int i = min(strlen(a), strlen(b)) + 1; i < max(strlen(a), strlen(b)); i++)
    {
        if (strlen(a) > strlen(b))
        {
            s[i] = (s[i] + (int)a[i] - 48)%10;
            s[i + 1] = (s[i] + (int)a[i] - 48) / 10;
        }
        else
            s[i] = (s[i] + (int)b[i] - 48) % 10;
        s[i + 1] = (s[i] + (int)b[i] - 48) / 10;
    }
    for (count = 0; count < 503; count++)
    {
        if (s[count] == -1)
        {
            count--;
            break;
        }
    }
    for (int i = count;i>=0;i--)
    {
        cout << (char)(s[i] + 48);
    }
    return 0;
}
2023/3/28 20:56
加载中...