基础练习 十进制转十六进制【蓝桥杯】

  • 内容
  • 相关
问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F16个符号,分别表示十进制数的015。十六进制的计数方法是满161,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E
  给出一个非负整数,将它表示成十六进制的形式。
输入格式
  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
  输出这个整数的16进制表示
样例输入
30
样例输出

1E


分析

    这道题最简单的一种写法莫过于直接用格式输出了。%X用于输出十六进制数。

源代码1

#include <stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	printf("%X",n);
	return 0;
}

补充:

    C语言中用于输出十六进制的格式有:%x、%X、%#x、%#X四种。

#include <stdio.h>
int main()
{
	int n;
	scanf("%d",&n);		//假设输入的是 30 
	printf("%x\n",n);	//输出为 1e
	printf("%X\n",n);	//输出为 1E
	printf("%#x\n",n);	//输出为 0x1e
	printf("%#X\n",n);	//输出为 0X1E
	return 0;
}

输出:

TIM截图20180310214326.png

源代码2

#include <stdio.h>
int main()
{
	char b[100];
	long a;
	int w = 0, i = 0;
	scanf("%d",&a);   //cin >> a;
	if(a == 0)
	printf("0\n");   //cout << "0" << endl;
	else
	{
		while(a)
		{
			b[w++] = a%16;
			a/=16;
		}
		for(i=w-1; i>=0; i--)
		{
			if(b[i] < 10)
			printf("%c",b[i]+'0');
			else
			printf("%c",b[i]+'A'-10);
		}
	}
	printf("\n");
	return 0;
}

源代码3

#include <stdio.h>
int main()
{
	int a;
	scanf("%d",&a);
	int w = 0,c = 0, i = 0;
	char str[100];
	if(a == 0)
	{
		str[0] = '0';
		w++;
	}
	while(a)
	{
		c = a%16;
		if(c < 10)
		str[w] = '0'+c;
		else
		str[w] = 'A'+c-10;
		w++;
		a/=16;
	}
	for(i=w-1; i>=0; i--)
		printf("%c",str[i]);
	printf("\n");
	return 0;
}

    其实第和第个源代码是一样类型的。要注意的是循环变量 i 不能再 for 循环中定义,要提前定义。

11111111111111.png

本文标签:

版权声明:若无特殊注明,本文皆为《尤尤》原创,转载请保留文章出处。

本文链接:基础练习 十进制转十六进制【蓝桥杯】 - https://www.yxfseo.cn/post-191.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注