c语言使用辗转相除法将一个非负十进制数转换为9进制的数
时间: 2023-06-09 16:08:50 浏览: 82
首先,我们将该十进制数不断除以9并记录余数,直到商为0。然后将余数倒序组合即可得到9进制数。
下面是使用C语言实现的代码:
```
#include <stdio.h>
int main() {
int decimal, remainder, quotient;
int n = 0; // 余数的个数
int result[100]; // 存放余数
printf("请输入一个非负十进制数:");
scanf("%d", &decimal);
while (decimal != 0) {
remainder = decimal % 9; // 求余数
result[n] = remainder; // 存储余数
n++;
decimal /= 9; // 求商
}
printf("转换后的9进制数为:");
for (int i = n - 1; i >= 0; i--) {
printf("%d", result[i]);
}
printf("\n");
return 0;
}
```
输入一个非负十进制数(例如:110),运行程序后可以得到输出:
```
请输入一个非负十进制数:110
转换后的9进制数为:134
```
相关问题
使用辗转相除法将一个非负十进制数转换为9进制的数的c语言代码
以下为使用辗转相除法将一个非负十进制数转换为9进制的数的C语言代码:
```c
#include <stdio.h>
int main()
{
long long decimal, quotient, remainder;
int i = 1, j;
printf("Enter a non-negative decimal number: ");
scanf("%lld", &decimal);
quotient = decimal;
char nine[32] = {0};
while (quotient != 0)
{
remainder = quotient % 9;
nine[i++] = remainder + '0';
quotient = quotient / 9;
}
printf("The 9-ary number of the decimal number %lld is: ", decimal);
for (j = i - 1; j > 0; j--)
printf("%c", nine[j]);
return 0;
}
```
注:该代码使用long long类型来存储输入的非负十进制整数,使用辗转相除法将该数转换为9进制数,并将结果以字符形式输出。
c语言将一个非负十进制数转换成一个十六进制数数字串并输出
可以使用以下代码将一个非负十进制数转换成一个十六进制数数字串并输出:
```c
#include <stdio.h>
int main() {
unsigned int num;
printf("请输入一个非负十进制数:");
scanf("%u", &num);
printf("转换成十六进制数为:0x");
char hex[9]; // 十六进制数最多有8位数字
int i = 0;
do {
int remainder = num % 16;
if (remainder < 10) {
hex[i++] = remainder + '0';
} else {
hex[i++] = remainder - 10 + 'a';
}
num /= 16;
} while (num > 0);
for (int j = i - 1; j >= 0; j--) {
printf("%c", hex[j]);
}
printf("\n");
return 0;
}
```
这个程序首先要求用户输入一个非负十进制数,然后将其转换成一个十六进制数数字串并输出。在转换的过程中,每次从原数中取出一个位,然后将其转换成一个十六进制数位。最后,将所有的十六进制数位按照从高到低的顺序输出即可。