题目描述:

  输入两个非负10进制整数A和B(≤2-1),输出A+B的D(1<D≤10)进制数。

输入格式:

  输入在一行中依次给出3个整数A、B和D。

样例:

  输入:123 456 8

  输出:1103

思路:

  先计算A+B的值,然后再将其转换为D进制。可使用“除基取余法”。

注意点:

  1. A+B的范围在int范围内
  2. 最好使用do···while语句。使用while语句要特判A+B等于0的情况
  3. 存储A+B%D的数组要从高位到低位进行输出

代码:

 #include<iostream>
using namespace std; int main()
{
int a, b, z;//题目数据正好在int范围内
int datas[] = { };//存储D进制的每一位数
int d, num = ; scanf("%lld %lld %d", &a, &b, &d); z = a + b; //进行进制转换
do
{
datas[num++] = z % d;
z /= d;
} while (z != ); //对D进制数进行输出,从高位到低位
for (int i = num - ;i >= ;i--)
{
printf("%d", datas[i]);
} return ;
}

参考书籍-《算法笔记》-胡凡

05-27 13:55