C语言题目描述 输入一个数字,其进制数可能为以下四种形式: 二进制:以0b开头,包含字符0和1; 八进制:以0开头,包含字符0~7; 十进制:包含字符0-9,且除了自然数0以外的数字不以0开头; 十六进制:以0x开头,包含字符0~9和a~f。 请你将输入数字转换为十进制数字输出。 注意:若输入为0,我们认为它是十进制数,可直接输出0。 输入 输入一个数字,其进制为以上四种之一。以换行结尾。 输出 输出转换后的十进制数。
时间: 2023-12-06 16:39:41 浏览: 28
以下是使用C语言编写的程序,实现输入一个数字,将其转换为十进制数并输出:
```c
#include <stdio.h>
#include <string.h>
int main() {
char num[20];
int len, base, i, val = 0;
scanf("%s", num);
len = strlen(num);
if (num[0] == '0' && (num[1] == 'x' || num[1] == 'X')) {
base = 16;
i = 2;
} else if (num[0] == '0') {
base = 8;
i = 1;
} else if (num[0] == '0' && (num[1] == 'b' || num[1] == 'B')) {
base = 2;
i = 2;
} else {
base = 10;
i = 0;
}
for (; i < len; i++) {
if (num[i] >= '0' && num[i] <= '9') {
val = val * base + num[i] - '0';
} else if (num[i] >= 'a' && num[i] <= 'f') {
val = val * base + num[i] - 'a' + 10;
} else if (num[i] >= 'A' && num[i] <= 'F') {
val = val * base + num[i] - 'A' + 10;
}
}
printf("%d\n", val);
return 0;
}
```
程序首先读入一个字符串表示的数字,然后根据其开头字符确定进制数。接着遍历字符串中的每个字符,对于数字字符直接转换为十进制数,对于十六进制的a~f字符则转换为10~15的十进制数。最后输出结果即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)