题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 :1-2的31次方减一
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
输入例子1:
0xAA
输出例子1:
170
代码
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char a[1000];
int n;
while(scanf("%s",a)!=EOF)//用字符数组来存储这个十六进制
{
int i,sum=0;
n=strlen(a);
for(i=n-1;i>=2;i--)//从右往左来求16进制
{
if(a[i]=='A')
{
sum+=10*pow(16,n-1-i);
}
else if(a[i]=='B')
{
sum+=11*pow(16,n-1-i);
}
else if(a[i]=='C')
{
sum+=12*pow(16,n-1-i);
}
else if(a[i]=='D')
{
sum+=13*pow(16,n-1-i);
}
else if(a[i]=='E')
{
sum+=14*pow(16,n-1-i);
}
else if(a[i]=='F')
{
sum+=15*pow(16,n-1-i);
}
else
{
sum+=(a[i]-'0')*pow(16,n-1-i);//减去字符0的ascii码值,正好是当前数值。
}
}
printf("%d\n",sum);
}
return 0;
这是一个关于编程的机试题目,要求编写C语言代码实现将输入的十六进制数值字符串转化为十进制整数并输出。程序通过遍历字符串,根据ASCII码对应关系转换十六进制字符,并累加到结果中。输入输出示例包括一个16进制数'0xAA',其对应的十进制输出为170。
247

被折叠的 条评论
为什么被折叠?



