#|华为机试第五题(HJ5 进制转换)

【#|华为机试第五题(HJ5 进制转换)】
华为机试第五题:HJ5 进制转换

  • 一、网址链接
  • 二、题目描述
      • ①描述
      • ②输入描述
      • ③输出描述
      • ④示例一
  • 三、代码实现
      • ①Java代码实现
      • ②C++代码实现
      • ③C代码实现

一、网址链接 牛客----https://www.nowcoder.com/ta/huawei
二、题目描述 ①描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1<=n<=2 31-1
②输入描述
输入一个十六进制的数值字符串。
③输出描述
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
④示例一
输入: 0xAA
输出: 170
三、代码实现 ①Java代码实现
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); while(scanner.hasNext()){ String s=scanner.next(); System.out.println(Integer.decode(s)); } } }

import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); String line; while((line=br.readLine())!=null){ System.out.println(Long.parseLong(line.substring(2),16)); } } }

②C++代码实现
#include #include #include using namespace std; int main() { string s; while(cin>>s) { int bit=0; int ans =0; for(int i=s.length()-1; i>1; i--) { if(s[i]>='0'&&s[i]<='9') ans+=(s[i]-'0')*pow(16,bit++); else if(s[i]>='A'&&s[i]<='F') ans+=(s[i]-'A'+10)*pow(16,bit++); } cout<

③C代码实现
#include #include #include int main() { char str[100]; int i=0,count,sum; while(gets(str))//用于多次输入 { count=strlen(str); //计算字符串的长度 sum=0; for(i=count-1; i>=0; i--)//从十六进制个位开始,每位都转换成十进制 { if(str[i]>='0'&&str[i]<='9')//数字字符的转换 { sum+=(str[i]-48)*pow(16,count-i-1); } else if(str[i]>='A'&&str[i]<='F')//字母字符的转换 { sum+=(str[i]-55)*pow(16,count-i-1); } } printf("%d\n",sum); } return 0; }

    推荐阅读