-
题目描述:
-
输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。
-
输入:
-
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。
-
输出:
-
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
-
样例输入:
-
8 1300 48 2 1 7 0
-
样例输出:
-
2504 1000
思路:
典型进制转换题,m进制数可以用字符串或整型数组表示,注意进位和数的范围。
进制转换的一种技巧是高位全部置零,这样不用单独判断最高位是多少。
另外一定要注意特殊情况的处理,比如0+0
代码:
#include <stdio.h>
int main(void)
{
int c[20];
int m, b;
unsigned int a;
int i;
while (scanf("%d", &m) != EOF)
{
if(m == 0) break;
scanf("%d%d", &a, &b);
a += b;
i = 0;
do
{
c[i++] = a % m;
a /= m;
}while (a != 0);
while (i>0)
{
printf("%d", c[--i]);
}
printf("\n");
}
return 0;
}
本文介绍了一个典型的进制转换问题,通过实例演示了如何将两个非负十进制整数相加后的结果转换为指定进制的表示形式。文章提供了一段C语言实现代码,并详细解释了解题思路。

被折叠的 条评论
为什么被折叠?



