【PAT B1022】D进制的A+B

【PAT B1022】D进制的A+B

输入两个非负10进制整数A和B(<=2^30-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103

#include <stdio.h>

//十进制转换为D进制(除基取余法)
int main() {
    int choose;
    printf("输入1 十进制转换为D进制\n输入2 D进制转换为十进制\n");
    scanf("%d", &choose);
    if (choose == 1) {
        int a, d;
        printf("输入十进制数 和将要转换的进制D\n");
        scanf("%d%d", &a, &d);
        int sum = a;
        int ans[31], num = 0;
        //取余数
        do {
            ans[num++] = sum % d;
            sum = sum / d;
        } while (sum != 0);
        //逆序输出
        for (int i = num - 1; i >= 0; i--) {
            printf("%d", ans[i]);
        }
    } else if (choose == 2) {
        int a, d;
        printf("输入D进制数 和进制D\n");
        scanf("%d%d", &a, &d);
        //将D进制的a转换为十进制的y
        int y = 0, product = 1;//表示D的0次方
        while (a != 0) {
            //逐次取出个位
            y = y + (a % 10) * product;
            //去掉已经计算的个位数
            a = a / 10;
            //修改权重 d^0 d^1...
            product = product * d;
        }
        printf("%d", y);
    }

    return 0;
}

测试结果:
在这里插入图片描述

发布了33 篇原创文章 · 获赞 1 · 访问量 4152

猜你喜欢

转载自blog.csdn.net/qq_39827677/article/details/103855264