使用C语言写一函数,输入一个十六进制数,输出相应的十进制数。 程序的运行示例如下: 输入十六进制数: 3a 十进制数58 继续吗? y 输入十六进制数: 2f 十进制数47 继续吗? n
时间: 2023-11-24 19:05:15 浏览: 494
可以使用`sscanf`函数将输入的十六进制数格式化为十进制数。具体实现如下:
```
#include <stdio.h>
int main() {
char hex[10];
int decimal;
do {
printf("输入十六进制数: ");
scanf("%s", hex);
sscanf(hex, "%x", &decimal);
printf("十进制数%d\n", decimal);
printf("继续吗? ");
} while (getchar() != 'n');
return 0;
}
```
上述程序中,我们使用了`do-while`循环来不断读取输入的十六进制数,并将其转化为十进制数。用户可以选择是否继续输入,当用户输入n时,程序退出循环。`sscanf`函数中的`%x`表示将输入的字符串按十六进制解析为整数。
相关问题
c语言写一函数,输入一个十六进制数,输出相应的十进制数。 输入提示:printf("输入十六进制数:"); 输出提示:printf("\n十进制数%d\n", ); 输入提示: printf("继续吗?\n"); 程序的运行示例如下: 输入十六进制数: 3a 十进制数58 继续吗? y 输入十六进制数: 2f 十进制数47 继续吗? n
以下是实现输入一个十六进制数,输出相应的十进制数的C语言函数:
```c
#include <stdio.h>
#include <stdlib.h>
int hexToDec(char hex[]) {
int len = strlen(hex);
int base = 1;
int decimal = 0;
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - 48) * base;
base *= 16;
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
decimal += (hex[i] - 87) * base;
base *= 16;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
decimal += (hex[i] - 55) * base;
base *= 16;
}
}
return decimal;
}
int main() {
char hex[100];
char continueFlag;
do {
printf("输入十六进制数:");
scanf("%s", hex);
int decimal = hexToDec(hex);
printf("\n十进制数%d\n", decimal);
printf("继续吗?\n");
scanf(" %c", &continueFlag);
} while (continueFlag == 'y' || continueFlag == 'Y');
return 0;
}
```
程序会不断地提示用户输入一个十六进制数,然后将其转换成相应的十进制数并输出。最后询问用户是否继续,只有在用户输入"y"或"Y"时才会继续。
用C语言编程写一函数,输入一个十六进制数,输出相应的十进制数。
在C语言中,你可以编写一个函数来将十六进制数转换成十进制数。这里是一个简单的函数示例,它接受一个字符串作为输入,然后逐位解析并计算出对应的十进制值:
```c
#include <stdio.h>
#include <string.h>
unsigned int hex_to_decimal(char *hex_str) {
unsigned int decimal = 0;
int length = strlen(hex_str);
for (int i = 0; i < length; i++) {
char hex_char = hex_str[i];
if (hex_char >= '0' && hex_char <= '9') {
decimal = decimal * 16 + (hex_char - '0');
} else if (hex_char >= 'a' && hex_char <= 'f') {
decimal = decimal * 16 + (hex_char - 'a' + 10);
} else if (hex_char >= 'A' && hex_char <= 'F') {
decimal = decimal * 16 + (hex_char - 'A' + 10);
}
}
return decimal;
}
int main() {
char hex[] = "FF"; // 示例十六进制数
unsigned int dec = hex_to_decimal(hex);
printf("Hexadecimal %s equals decimal %u.\n", hex, dec);
return 0;
}
```
在这个例子中,`hex_to_decimal`函数遍历输入的十六进制字符串,通过判断字符范围将其转换为相应的十进制数值,并累加到结果上。在`main`函数中,我们测试了这个转换过程。
阅读全文
相关推荐













