【PAT乙级】1016 部分 A+B (15 分) C语言实现

题目:

1016 部分A+B

代码实现:

#include <stdio.h>

int main() {
    char a[11], b[11], da, db;

    // 获取输入的值
    if (scanf("%s %c %s %c", a, &da, b, &db) == 4) {
        int na = 0, nb = 0;
        // 计算 da 在 a 中出现的次数
        for (int i = 0; a[i] != '\0'; i++) {
            if (a[i] == da) {
                na++;
            }
        }

        // 计算 db 在 b 中出现的次数
        for (int i = 0; b[i] != '\0'; i++) {
            if (b[i] == db) {
                nb++;
            }
        }

        // 2的31次方 > 2 * 10的9次方,所以有符号数的 int 也能够存储
        unsigned int pa = 0, pb = 0;
        for (int i = 1; i <= na; i++) {
            // 计算 pa 的值
            int num = da - '0';
            pa = num + (pa * 10);
        }

        for (int i = 1; i <= nb; i++) {
            // 计算 pb 的值
            int num = db - '0';
            pb = num + (pb * 10);
        }

        printf("%u\n", pa + pb);
    }

    return 0;
}
posted @ 2022-05-26 08:44  夏夜星空晚风  阅读(23)  评论(0编辑  收藏  举报