HJ5 进制转换

描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在1≤n≤2^31−1

输入描述:

输入一个十六进制的数值字符串。(如0x11)

输出描述:

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入:0xAA

输出:170

代码一: 

//输入16进制的数值,前面加“0x”
#define _CRT_SECURE_NO_WARNINGS	//加这句话是因为gets函数产生的问题
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	char shiliu[9];	//数据范围:保证结果在 1≤n≤2^31−1 
	int len,i,b;
	int shi=0;
	double a=16,ci;
	gets(shiliu);
	len=strlen(shiliu);
	for(i=len-1;i>1;i--)	//倒着来是因为进制算法
	{
		if(shiliu[i]=='13')
			shiliu[i]=shiliu[i-1];	//gets函数会读入回车键,要去掉回车键
		switch(shiliu[i])
		{
			case '0':shiliu[i]=0;break;
			case '1':shiliu[i]=1;break;
			case '2':shiliu[i]=2;break;
			case '3':shiliu[i]=3;break;
			case '4':shiliu[i]=4;break;
			case '5':shiliu[i]=5;break;
			case '6':shiliu[i]=6;break;
			case '7':shiliu[i]=7;break;
			case '8':shiliu[i]=8;break;
			case '9':shiliu[i]=9;break;
			case 'A':shiliu[i]=10;break;
			case 'B':shiliu[i]=11;break;
			case 'C':shiliu[i]=12;break;
			case 'D':shiliu[i]=13;break;
			case 'E':shiliu[i]=14;break;
			case 'F':shiliu[i]=15;break;
			default:printf("输入数值不对");
		}
		ci=pow(a,(len-1-i));	//pow函数括号的参数有数值类型要求
		b=(int)ci;	//ci是double型,转换成整数型
		shi=shi+shiliu[i]*b;
	}
	printf("%d\n",shi);

 system("pause");
}

代码二: 

//直接输入16进制的数值,即前面不加“0x”
#define _CRT_SECURE_NO_WARNINGS	//加这句话是因为gets函数产生的问题
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	char shiliu[9];
	int len,i,b;
	int shi=0;
	double a=16,ci;
	gets(shiliu);
	len=strlen(shiliu);
	for(i=len-1;i>=0;i--)	//倒着来是因为进制算法
	{
		if(shiliu[i]=='13')
			shiliu[i]=shiliu[i-1];	//gets函数会读入回车键,要去掉回车键
		switch(shiliu[i])
		{
			case '0':shiliu[i]=0;break;
			case '1':shiliu[i]=1;break;
			case '2':shiliu[i]=2;break;
			case '3':shiliu[i]=3;break;
			case '4':shiliu[i]=4;break;
			case '5':shiliu[i]=5;break;
			case '6':shiliu[i]=6;break;
			case '7':shiliu[i]=7;break;
			case '8':shiliu[i]=8;break;
			case '9':shiliu[i]=9;break;
			case 'A':shiliu[i]=10;break;
			case 'B':shiliu[i]=11;break;
			case 'C':shiliu[i]=12;break;
			case 'D':shiliu[i]=13;break;
			case 'E':shiliu[i]=14;break;
			case 'F':shiliu[i]=15;break;
			default:printf("输入数值不对");
		}
		ci=pow(a,(len-1-i));	//pow函数括号的参数有数值类型要求
		b=(int)ci;	//ci是double型,转换成整数型
		shi=shi+shiliu[i]*b;
	}
	printf("%d\n",shi);

 system("pause");
}

注意:

 1、没有 “#define _CRT_SECURE_NO_WARNINGS” 这句话时,可能会出现

错误    C4996    'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.   

错误信息的大意如下:

  1. 此函数或变量可能不安全。

  2. 可以使用scanf_s代替该函数。

  3. 如果要取消禁用,请定义_CRT_SECURE_NO_WARNINGS。

  4. 更多信息请查看在线帮助

解决办法:

        错误中已有提示,只需要在程序的开头添加一个宏定义,即(注意这个宏定义要在#include <stdio.h>前面,否则还会报错)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

2、switch的语句规则

3、数据类型之间的转换

4、数值的次方运算

5、ASCII码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值