用c语言写一个可以吧输入的10进制数转化为任意进制的程序
时间: 2023-04-04 10:00:18 浏览: 71
您好,我可以回答这个问题。以下是一个用 C 语言编写的将十进制数转换为任意进制的程序:
```
#include <stdio.h>
void convert(int num, int base) {
if (num == ) {
return;
}
convert(num / base, base);
int remainder = num % base;
if (remainder < 10) {
printf("%d", remainder);
} else {
printf("%c", remainder - 10 + 'A');
}
}
int main() {
int num, base;
printf("请输入一个十进制数:");
scanf("%d", &num);
printf("请输入要转换的进制:");
scanf("%d", &base);
printf("转换结果为:");
convert(num, base);
printf("\n");
return ;
}
```
这个程序会先让用户输入一个十进制数和要转换的进制,然后调用 `convert` 函数将十进制数转换为指定进制并输出结果。
相关问题
基于c语言,写一个把任意十六进制数转化为十进制数的代码
好的,我明白了。以下是一个将十六进制数转化为十进制数的C语言函数:
```
#include <stdio.h>
#include <string.h>
#include <math.h>
long int hex_to_decimal(char hex[]);
int main()
{
char hex[20];
printf("请输入一个十六进制数: ");
scanf("%s", hex);
printf("对应的十进制数为: %ld", hex_to_decimal(hex));
return 0;
}
long int hex_to_decimal(char hex[])
{
int length = strlen(hex);
long int decimal = 0;
int base = 1;
for(int i = length-1; i >= 0; i--)
{
if(hex[i] >= '0' && hex[i] <= '9')
{
decimal += (hex[i] - 48) * base;
base = base * 16;
}
else if(hex[i] >= 'a' && hex[i] <='f')
{
decimal += (hex[i] - 87) * base;
base = base * 16;
}
else if(hex[i] >= 'A' && hex[i] <='F')
{
decimal += (hex[i] - 55) * base;
base = base * 16;
}
}
return decimal;
}
```
这个函数是通过一位一位地读入十六进制数,并将其转化为十进制数。注意,在转化时,要将十六进制数中的A-F以及a-f分别转化为10-15的十进制数,并乘以对应的位数,再加到最终结果中。
基于stm32,写一个任意十六进制数转化为十进制的代码
好的,针对你的问题,我可以给出以下C语言代码:
```c
#include <stdio.h>
// 十六进制字符转换为整数
int hexCharToInt(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else {
return -1;
}
}
// 十六进制字符串转换为十进制整数
unsigned int hexStrToDec(char* hexStr) {
unsigned int result = 0;
int i = 0;
while (hexStr[i] != '\0') {
int digit = hexCharToInt(hexStr[i]);
if (digit == -1) {
return 0; // 非法字符
}
result = result * 16 + digit;
i++;
}
return result;
}
int main() {
char hexStr[] = "1a3f";
printf("0x%s = %u\n", hexStr, hexStrToDec(hexStr));
return 0;
}
```
这段代码会将输入的十六进制字符串转化为对应的十进制数,并输出结果。你可以把需要转换的十六进制字符串放到 `hexStr` 数组中进行测试。注意,该代码只能转换无符号整数,如果需要转换带符号整数,则需要进行额外的处理。