如何用c语言以字符形式逐个读入十六进制数的每一位,输入测试次数T,且每组测试数据一行,为十六进制数。数据以#结束,边读入边计算,将十六进制数转为10进制。假设数据不含小数。对每组测试数据,然后输出转换后的十进制数
时间: 2023-06-05 15:05:51 浏览: 144
字符串的形式读入,需要用到scanf函数。
具体步骤如下:
根据输入的测试次数T,利用for循环多次读入数据。
对于每一组测试数据,先用字符串形式读入该十六进制数,即用scanf函数使用“%s”格式读入。
遍历读入的字符串,用字符形式逐个读入每一位十六进制数。可以通过以下方法实现:
通过字符串下标访问每一个字符,如str[i];
通过指针遍历字符串,如char* p=str; while(*p!='\0'){...}。
对于每一位读入的十六进制数字符,通过条件判断转换为对应的十进制数,即0
9与AF分别对应10~15。可使用switch语句或if语句实现。将每一位转换后的十进制数打印出来,即完成了每组测试数据的输入和处理。
以下是示例代码:
#include <stdio.h>
int hex_to_dec(char ch) // 将十六进制数字符转换为十进制数
{
if (ch >= '0' && ch <= '9') {
return ch - '0';
} else if (ch >= 'A' && ch <= 'F') {
return ch - 'A' + 10;
} else {
return ch - 'a' + 10;
}
}
int main()
{
int T;
scanf("%d", &T);
for (int i = 0; i < T; i++) {
char str[100];
scanf("%s", str);
printf("Case %d: ", i+1);
for (int j = 0; str[j] != '\0'; j++) {
int dec = hex_to_dec(str[j]);
printf("%d", dec);
}
printf("\n");
}
return 0;
}
相关推荐
















