当前位置:   article > 正文

基础练习 十六进制转十进制_把十六进制转换为十进制题目

把十六进制转换为十进制题目

刷题笔记
题目:

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入
FFFF

样例输出
65535

其实这道基础题可以采用进制输入输出格式直接解题,代码如下:代码片

#include<stdio.h>
int main() 
{ 
	int n;
	scanf("%X",&n);//输入十六进制 
	printf("%lld",n);//输出十进制 
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

当然,如果你想通过算法进行转换也是可以的,这样可以让你对进制转换的过程以及理解会有更好的帮助。代码如下:代码片

#include<stdio.h>
#include<string.h>
#include<math.h>
int f(char s[]) //16进制转10进制 
{
	long long ans=0;
  int i,j=0;  
  int len=strlen(s);//字符串的长度 
/* 
 for(int i=0;i<len;i++){ //遍历字符串 
   if(s[i]>='A'&&s[i]<='F') //把字符字母的部分换成数字,如当 s[i]='B'时 'B'-'A'+10=1+10=11
   ans=ans*16+s[i]-'A'+10;
    else
    ans=ans*16+s[i]-'0';//把字符数字的部分换成数字,如当 s[i]='2'时 '2'-'0'=2                       //'2'的ASCII为50,'0'的ASCII为48,所以50-48=2  
  }  
  */ 
  
  
//上面是正向思维,下面是逆向思维 
	for(i=len-1;i>=0;i--){
		if(s[i]>='A'&&s[i]<='F')
		ans+=(s[i]-'A'+10)*pow(16,j);
		else
		ans+=(s[i]-'0')*pow(16,j);
		j++;
	}            
  return ans;//函数返回的值
} 
int main()
{
  char t[100]; 
  gets(t);//输入 
  printf("%lld",f(t));//f(t)是函数调用,调用完后输出返回的值 
  return 0;
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/244555
推荐阅读
相关标签
  

闽ICP备14008679号