C++小菜鸡求帮助,可有偿

img

img

img


编程课有点摆了,现在急需完成,求帮助一下下,可以有偿,谢谢啦~
一共3道题呀

#include
#include
#include
using namespace std;
string a, b, ans;

int main() {
cin >> a >> b;
int aa = a.length();
int bb = b.length();
int ss = min(aa, bb);
int ll = max(aa, bb);
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < ss; i++) {
ans += a[i] + b[i] - '0';
}
if (aa < bb) {
for (int i = ss; i < ll; i++) {
ans += b[i];
}
} else if (aa > bb) {
for (int i = ss; i < ll; i++) {
ans += a[i];
}
}
ans += '0';
for (int i = 0; i < ll + 1; i++) {
if (ans[i] > '9') {
ans[i + 1]++;
ans[i] -= 10;
}
}
reverse(ans.begin(), ans.end());
for (int i = ans.find_first_not_of('0'); i < ll + 1; i++) {
if (i == -1) {
cout << 0;
return 0;
}
cout << ans[i];
}

return 0;

}

一共三道题,谢谢啦


//第一题
//求两个不超过400位的非负整数的和
#include <stdio.h>
#include <string.h>

int main()
{
    int c, N;    //测试数据的组数
    scanf("%d", &N);
    c = getchar();        //接收缓冲区的\n
    
    char num1[401];        //接收第一个数字
    char num2[401];        //接收第二个数字
    char sum[402];        //接受和

    int i1, i2, i, k;
    for (k = 0; k < N; ++k)
    {
        //初始化
        memset(num1, 0, sizeof(num1));
        memset(num2, 0, sizeof(num2));
        memset(sum, 0, sizeof(sum));

        int ch;
        for (i1 = 0; (ch = getchar()) != ' '; ++i1)
        {
            num1[i1] = ch;
        }

        for (i2 = 0; (ch = getchar()) != '\n' && ch != EOF; ++i2)
        {
            num2[i2] = ch;
        }

        i1--;
        i2--;
        i = 400;
        int tmp = 0;    //存储进位
        int add = 0;    //存储每一位的数字
        while (i1 >= 0 && i2 >= 0)
        {
            add = num1[i1--] + num2[i2--] - '0' * 2 + tmp;
            sum[i--] = add % 10 + '0';
            tmp = add / 10;
        }

        while (i1 >= 0)
        {
            add = num1[i1--] - '0' + tmp;
            sum[i--] = add % 10 + '0';
            tmp = add / 10;
        }
        while (i2 >= 0)
        {
            add = num2[i2--] - '0' + tmp;
            sum[i--] = add % 10 + '0';
            tmp = add / 10;
        }

        printf("%s\n", sum + i + 1);
    }

    return 0;
}

#include
#include
#include
using namespace std;
string a, b, ans;

int main() {
cin >> a >> b;
int aa = a.length();
int bb = b.length();
int ss = min(aa, bb);
int ll = max(aa, bb);
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < ss; i++) {
ans += a[i] + b[i] - '0';
}
if (aa < bb) {
for (int i = ss; i < ll; i++) {
ans += b[i];
}
} else if (aa > bb) {
for (int i = ss; i < ll; i++) {
ans += a[i];
}
}
ans += '0';
for (int i = 0; i < ll + 1; i++) {
if (ans[i] > '9') {
ans[i + 1]++;
ans[i] -= 10;
}
}
reverse(ans.begin(), ans.end());
for (int i = ans.find_first_not_of('0'); i < ll + 1; i++) {
if (i == -1) {
cout << 0;
return 0;
}
cout << ans[i];
}

return 0;}


是这样的吧?