数学中将十进制转换为七进制是如何求得呢?
将十进制数一直除以7,得到的余数倒着输出,即为其对应的七进制数。
由此,为了联系数字逆序输出的知识,我们得到这样的一个思路:依次输出余数,得到一个反序的数,然后在将这个数倒序输出,就得到了该十进制数对应的七进制。
这个思路分为两步:
- 按照顺序输出余数,得到了一个反序的七进制数
- 将该数逆序输出
#include <stdio.h>
int main()
{
int a = 0;
int c = 0;
int ret = 0;//ret为该十进制数对应的七进制数
scanf("%d",&a);
//正序输出余数
while (a)
{
c = c * 10 + a % 7;
a /= 7;
}
//倒序输出
while (c)
{
ret = ret * 10 + c % 10;
c /= 10;
}
printf("%d",ret);
return 0;
}
转换为k进制,只需要加一个输入值,并将所有的7改为k即可。如下
#include <stdio.h>
int main()
{
int a = 0;
int c = 0;
int ret = 0;//ret为该十进制数对应的七进制数
int k = 0;
scanf("%d %d",&a,&k);
//正序输出余数
while (a)
{
c = c * 10 + a % k;
a /= k;
}
//倒序输出
while (c)
{
ret = ret * 10 + c % 10;
c /= 10;
}
printf("%d",ret);
return 0;
}
有两步得出的方法,自然也有一步得出的方法:
增加了一个变量n来控制其在哪一位上。
int main()
{
int a = 0;
//int k = 0;
scanf("%d", &a);
int ret = 0;
int n = 1;
while (a)
{
ret = ret + (a % 7) * n;
a /= 7;
n *= 10;
}
printf("%d",ret);
return 0;
}
转换为k进制:
int main()
{
int a = 0;
int k = 0;
scanf("%d %d", &a, &k);
int ret = 0;
int n = 1;
while (a)
{
ret = ret + (a % k) * n;
a /= k;
n *= 10;
}
printf("%d",ret);
return 0;
}
用函数表示为:
#include <stdio.h>
//将十进制数a转换为k进制
int ten_to_k(int a, int k)
{
int ret = 0, b = 0;
int n = 1;
while (a)
{
ret = ret + (a % k) * n;
a /= k;
n = n * 10;
}
return ret;
}
int main()
{
int a = 0;
int k = 0;
scanf("%d %d", &a,&k);
int ret = ten_to_k(a, k);
printf("%d",ret);
return 0;
}