C语言:输入一个十六进制字符串,将其转换成为对应的整数并输出转换结果。

输入一个十六进制字符串,将其转换成为对应的整数并输出转换结果。
输入:第一行为正整数N,表示有N组输入数据;每组输入对应一行,为一个十六进制字符串,其形式为0xXXX
输出:每组输入对应一行输出,输出转换后的十进制整数。

样例输入

5
0x111
0x1Af
0xBcD
0x259
0x3fFF
样例输出

273
431
3021
601
16383

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "stdlib.h"
int main(void){
    int n;
    char x[9];
    printf("Input n(int hex like 0x89fd)...\n");
    scanf("%d",&n);
    while(n--){
        scanf("%s",x);
        printf("%ld\n",strtol(x+2,NULL,16));
    }
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-22
#include<stdio.h>
#include<string.h>
int main()
{
char c[100];
int i,leng,sum,a,N;
scanf("%d",&N);
while(N--)
{
sum=0;a=1;
scanf("%s",c);
leng=strlen(c);
for(i=leng-1;i>=1;i--,a=a*16)
if(c[i]>='a' && c[i]<='f') sum+=(c[i]-87)*a;
else if(c[i]>='A'&&c[i]<='F') sum+=(c[i]-55)*a;
else if(c[i]>='0'&&c[i]<='9') sum+=(c[i]-48)*a;
printf("%d\n",sum);
}
return 0;
}
来自大华科的渣渣
相似回答