编写程序,以字符形式输入一个四位十六进制数,将其变换为一个十进制整数后输出。
代码如下:
说明:
1. 以字符串方式存储一个四位十六进制数,其中的每一个字符都必须是十六进制数中合法的字符,应有相应语句做出判断;
2. 十六进制转换为十进制,要考虑0-9,A-F,a-f之间相应的表示和转换;
测试用例:输入 | 测试用例:输出 |
6D3f | The dec data is:27967 |
45fs | Original data error |
#include <stdio.h>
int main()
{
char s[5];
gets(s);
int i, t, flag = 1, sum = 0;
for (i = 0; i < 4; ++i) {
switch (s[i]) {
case '0' : t = 0; break;
case '1' : t = 1; break;
case '2' : t = 2; break;
case '3' : t = 3; break;
case '4' : t = 4; break;
case '5' : t = 5; break;
case '6' : t = 6; break;
case '7' : t = 7; break;
case '8' : t = 8; break;
case '9' : t = 9; break;
case 'A' : t = 10; break;
case 'a' : t = 10; break;
case 'B' : t = 11; break;
case 'b' : t = 11; break;
case 'C' : t = 12; break;
case 'c' : t = 12; break;
case 'D' : t = 13; break;
case 'd' : t = 13; break;
case 'E' : t = 14; break;
case 'e' : t = 14; break;
case 'F' : t = 15; break;
case 'f' : t = 15; break;
default : flag = 0;
}
sum += t*pow(16, 3-i);
}
if (flag) {
printf("The dec data is:%d", sum);
}
else {
printf("Original data error");
}
return 0;
}