您的位置:首页 > 其它

蓝桥杯——十六进制转换十进制

2016-03-06 18:03 162 查看
问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

//错误出现在temp,sum,的基本类型

#include <stdio.h>

#include <string.h>

#define N 10000

int main()

{

char str1
;//str1用来表示十六进制

int n,i,j;

//printf("请输入n的值\n");

scanf("%d",&n);

while(n--)

{

memset(str1,0,sizeof(str1));

scanf("%s",str1);

int strlength1;

long long sum,temp;

strlength1=strlen(str1);

sum=0;//置为0

for(i=0;i<strlength1;i++)

{

if(str1[i]=='A')

temp=10;

else if(str1[i]=='B')

temp=11;

else if(str1[i]=='C')

temp=12;

else if(str1[i]=='D')

temp=13;

else if(str1[i]=='E')

temp=14;

else if(str1[i]=='F')

temp=15;

else

temp=str1[i]-'0';//全部使用if语句与使用else if是有差别的

for(j=i;j<strlength1-1;j++)

{

temp=temp*16;

}

sum=sum+temp;

}

printf("%I64d\n",sum);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: