使用C语言写一函数,输入一个十六进制数,输出相应的十进制数。 程序的运行示例如下: 输入十六进制数: 3a 十进制数58 继续吗? y 输入十六进制数: 2f 十进制数47 继续吗? n
时间: 2023-11-24 16:05:15 浏览: 375
可以使用`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语言中的`sscanf()`函数将十六进制字符串转换成十进制整数,示例如下:
```c
#include <stdio.h>
int hexToDec(char* hexStr) {
int decNum;
sscanf(hexStr, "%x", &decNum);
return decNum;
}
int main() {
char hexStr[10];
printf("请输入一个十六进制数:");
scanf("%s", hexStr);
printf("该十六进制数对应的十进制数为:%d\n", hexToDec(hexStr));
return 0;
}
```
运行结果:
```
请输入一个十六进制数:1a
该十六进制数对应的十进制数为:26
```
阅读全文