C语言 函数实现进制转换
时间: 2023-05-20 14:05:47 浏览: 186
C语言中可以使用 sprintf 函数将数字转换成字符串,也可以使用 strtol 函数将字符串转换成数字。以下是一个将十进制转换成二进制的函数实现:
```c
#include <stdio.h>
void dec2bin(int n) {
char bin[32];
int i = 0;
while (n > 0) {
bin[i++] = n % 2 + '0';
n /= 2;
}
for (int j = i - 1; j >= 0; j--) {
printf("%c", bin[j]);
}
}
int main() {
int n = 123;
dec2bin(n);
return 0;
}
```
输出结果为:1111011
相关问题
c语言实现任意进制转换
以下是C语言实现任意进制转换的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* convert(int num, int base) {
char* result = (char*) malloc(sizeof(char) * 100);
int i = 0;
char symbol[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (num == 0) {
result[i++] = '0';
result[i] = '\0';
return result;
}
while (num > 0) {
result[i++] = symbol[num % base];
num /= base;
}
result[i] = '\0';
// Reverse the string
int len = strlen(result);
for (int j = 0; j < len / 2; j++) {
char temp = result[j];
result[j] = result[len - j - 1];
result[len - j - 1] = temp;
}
return result;
}
int main() {
int num, base;
printf("Enter a number: ");
scanf("%d", &num);
printf("Enter the base (2-36): ");
scanf("%d", &base);
if (base < 2 || base > 36) {
printf("Invalid base!");
return 0;
}
char* result = convert(num, base);
printf("Result: %s", result);
free(result);
return 0;
}
```
该代码中,`convert`函数接受一个十进制整数和一个目标进制,返回一个对应的字符串。在函数中,我们使用一个字符数组`symbol`来存储各个进制下的符号。当输入的整数为0时,直接返回字符串“0”。当输入的整数大于0时,我们不断地取模并将余数对应的符号加入结果字符串中,直到整数变为0。最后,我们需要将结果字符串反转,因为我们是从低位到高位依次添加符号的。
在`main`函数中,我们从用户输入中获取需要转换的十进制整数和目标进制。如果目标进制不在2-36之间,则输出“Invalid base!”,程序结束。否则,我们调用`convert`函数得到结果字符串,并输出到屏幕上。最后,我们需要释放结果字符串所占用的内存。
c语言实现十六进制转换十进制
要将十六进制数转换为十进制数,可以使用C语言中的`sscanf()`函数或自行编写算法来进行转换。下面是一个使用`sscanf()`函数的示例代码:
```c
#include <stdio.h>
int main() {
char hexNum[10];
int decNum;
printf("请输入一个十六进制数:");
scanf("%s", hexNum);
sscanf(hexNum, "%x", &decNum);
printf("转换后的十进制数为:%d\n", decNum);
return 0;
}
```
运行这段代码,它会要求你输入一个十六进制数,并将其转换为对应的十进制数后输出。
另外,如果你想自己编写算法实现十六进制到十进制的转换,可以按照以下步骤进行:
1. 从右往左遍历十六进制数的每一位。
2. 对于每一位,根据其对应的权重(16的幂),将该位的十六进制数字转换为对应的十进制数字。
3. 将每一位得到的十进制数字相加,得到最终的十进制结果。
请注意,这只是算法的一种实现方式,你可以根据自己的需求和编程风格进行修改和优化。