编写函数int conv(char hex[])将16进制的数字字符串转换为十进制整数,要求主函数中输入16进制数字字符串,调用conv函数输出其十进制整数。16进制数字字符串的位数要求在6位以下,1位以上,并以H或h结尾。
时间: 2023-12-18 22:05:37 浏览: 109
以下是实现代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int conv(char hex[]) {
int len = strlen(hex);
int base = 1;
int decimal = 0;
for (int i = len - 2; i >= 0; i--) {
if (isdigit(hex[i])) {
decimal += (hex[i] - '0') * base;
} else if (isalpha(hex[i])) {
decimal += (toupper(hex[i]) - 'A' + 10) * base;
}
base *= 16;
}
return decimal;
}
int main() {
char hex[7];
printf("请输入一个16进制数字字符串(不超过6位):");
scanf("%6s", hex);
int decimal = conv(hex);
printf("%s的十进制整数为:%d\n", hex, decimal);
return 0;
}
```
主函数中先输入一个不超过6位的16进制数字字符串,然后调用conv函数将其转换为十进制整数,并输出结果。在conv函数中,首先获取字符串长度和初始进制base,然后通过循环遍历每个字符,如果是数字则将其转换为对应的十进制数加到decimal中,如果是字母则按照16进制的转换规则将其转换为对应的十进制数加到decimal中。最后返回decimal即可。
阅读全文