用strlen()函数输入一个用字符串表示的十六进制数转换成十进制整数。C语言
时间: 2024-05-14 07:16:29 浏览: 14
可以使用C语言中的`strtol()`函数将十六进制字符串转换成十进制整数。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char hex[100];
printf("请输入一个十六进制数:");
scanf("%s", hex);
int dec = strtol(hex, NULL, 16);
printf("转换后的十进制数为:%d\n", dec);
return 0;
}
```
在上述代码中,首先使用`scanf()`函数读取一个十六进制字符串,然后使用`strtol()`函数将其转换成十进制整数,并将结果存储在变量`dec`中。最后使用`printf()`函数输出转换后的十进制数。
相关问题
用strlen()函数和指针输入一个用字符串表示的十六进制数转换成十进制整数。C语言
以下是一个简单的代码示例:
```c
#include <stdio.h>
#include <string.h>
int hexToDec(char *hex) {
int len = strlen(hex);
int base = 1;
int dec = 0;
int i;
for (i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - 48) * base;
base *= 16;
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec += (hex[i] - 87) * base;
base *= 16;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 55) * base;
base *= 16;
}
}
return dec;
}
int main() {
char hex[100];
printf("请输入一个十六进制数:");
scanf("%s", hex);
printf("转换后的十进制数为:%d\n", hexToDec(hex));
return 0;
}
```
这个程序使用`strlen()`函数获取输入的十六进制数的长度,然后使用一个循环从后往前遍历每个字符,将其转换成十进制数并累加到`dec`变量中,最后返回`dec`。
用C语言写出代码十六进制字符串转十进制负整数PTA
以下是用C语言实现将十六进制字符串转换为十进制负整数的代码:
```c
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
char hex_str[100];
int len, i, dec_num = 0;
printf("请输入一个十六进制字符串:\n");
scanf("%s", hex_str);
len = strlen(hex_str);
for(i = 0; i < len; i++){
int digit;
if(hex_str[i] >= '0' && hex_str[i] <= '9'){
digit = hex_str[i] - '0';
}
else if(hex_str[i] >= 'a' && hex_str[i] <= 'f'){
digit = hex_str[i] - 'a' + 10;
}
else if(hex_str[i] >= 'A' && hex_str[i] <= 'F'){
digit = hex_str[i] - 'A' + 10;
}
dec_num += digit * pow(16, len-i-1);
}
printf("转换后的十进制数为:%d\n", -dec_num);
return 0;
}
```
该代码将用户输入的十六进制字符串转换为十进制数,并输出其负值。使用了循环和条件语句来解析字符串中的每个字符,并使用pow函数计算每个位的权值。最终计算出的十进制数取负值后输出。