用c语言将十进制正整数m转换成k进制数(2≤k≤9)并输出(m,k从键盘输入)。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)
时间: 2024-02-21 19:58:56 浏览: 32
好的,以下是用 C 语言实现的代码:
```c
#include <stdio.h>
int main() {
int m, k;
scanf("%d%d", &m, &k); // 从键盘读入 m 和 k
char result[100]; // 初始化结果字符串
int i = 0; // 初始化结果字符串的下标
while (m > 0) {
result[i++] = m % k + '0'; // 将余数转换为字符并添加到字符串末尾
m /= k; // 更新 m 的值
}
for (int j = i - 1; j >= 0; j--) {
printf("%c", result[j]); // 倒序输出结果字符串
}
printf("\n"); // 输出换行符
return 0;
}
```
你可以将上面的代码复制到一个 C 语言环境中编译运行,然后输入 m 和 k 的值,程序就会输出转换后的 k 进制数。例如,输入 8 和 2,程序将输出 1000。
上面的代码中,我们使用了字符数组来存储转换后的 k 进制数。在每次迭代中,我们将 m 对 k 取余得到一个数位,将其转换为字符并添加到结果字符串的末尾,然后将 m 除以 k 更新其值。最后,我们倒序输出结果字符串,得到最终的 k 进制数。
相关问题
用c语言将十进制正整数m转换成k进制数(2≤k≤9)并输出(m,k从键盘输入)。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
好的,我可以帮你解决这个问题。
以下是用C语言编写的程序,可以将十进制正整数m转换为k进制数(其中2≤k≤9):
```c
#include <stdio.h>
int main() {
int m, k, i = 0, j;
int a[100];
printf("请输入一个十进制正整数m:");
scanf("%d", &m);
printf("请输入k进制数的基数k:");
scanf("%d", &k);
while (m) {
a[i] = m % k;
m /= k;
i++;
}
printf("转换后的k进制数为:");
for (j = i - 1; j >= 0; j--)
printf("%d", a[j]);
return 0;
}
```
程序通过读取键盘输入的十进制正整数m和k进制数的基数k,将m转换为k进制数,并输出结果。
具体实现方法是利用了除以k取余数的方法,将m不断除以k,每次得到的余数存入数组a中,直到商为0为止。最后,将数组a中的元素倒序输出即可得到转换后的k进制数。
希望这个程序能够解决你的问题!
c语言将十进制正整数转成十六进制字符串输出
以下是一个将十进制正整数转成十六进制字符串输出的C语言示例代码:
```
#include <stdio.h>
int main() {
int num;
printf("请输入一个十进制正整数:");
scanf("%d", &num);
char hex[10];
int i = 0;
while (num != 0) {
int temp = num % 16;
if (temp < 10) {
hex[i] = temp + '0';
} else {
hex[i] = temp - 10 + 'A';
}
i++;
num /= 16;
}
i--;
printf("转换成十六进制为:");
for (; i >= 0; i--) {
printf("%c", hex[i]);
}
return 0;
}
```
运行示例:
```
请输入一个十进制正整数:255
转换成十六进制为:FF
```