精华内容
下载资源
问答
  • 以下程序的输出结果是 main(){ int a=20; printf("%d,%o,%x\n",a,a,a);...1.题目给出了 a=20这个十进制现在我们需要用十进制转八进制,这里我们采用的就是直接除8取余的方法 2.同理对于10进制16进制我们也是...

    以下程序的输出结果是
    main(){

    int a=20;

    printf("%d,%o,%x\n",a,a,a);

    }
    看到这个题目首先我们要明白%o 和 %x代表的是什么意思

    %o代表的是输出该数字的八进制

    %x代表的是输出该数字的十六进制

    1.题目给出了 a=20这个十进制现在我们需要用十进制转八进制,这里我们采用的就是直接除8取余的方法

    2.同理对于10进制转16进制我们也是采取除16取余的方法

    3.相反,如果我们有一个十六进制那么怎么转成十进制、八进制呢?请看下面解释

    (1)十六进制转十进制

    16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……

    例:2AF5换算成10进制:

    用竖式计算:

    第0位: 5 * 16^0 = 5

    第1位: F * 16^1 = 240

    第2位: A * 16^2= 2560

    第3位: 2 * 16^3 = 8192

    直接计算就是:

    5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997

    (2)十六进制转二进制

    由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:

    例:2AF5换算成2进制:

    第0位: (5)16 = (0101) 2

    第1位: (F)16 = (1111) 2

    第2位: (A) 16 = (1010) 2

    第3位: (2) 16 = (0010) 2

    得:(2AF5)16=(0010.1010.1111.0101)2

    (3)十六进制转八进制

    先将十六进制转为二进制,再将二进制转为八进制

     

     

     

     

     

     

     

    展开全文
  • 十进制转R进制 十进制转二进制 十进制整数二进制 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到...

    1.十进制转R进制

    1.1 十进制转二进制

    十进制整数转二进制

    十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。

    例题: 135D = ______ B

    **解析:**如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 0111B.
    这里写图片描述

    图1.十进制整数转二进制

    十进制小数转二进制

    十进制小数转换成二进制小数采用 “乘2取整,顺序排列” 法。

    具体做法是:

    用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

    例题: 0.68D = ______ B(精确到小数点后5位)

    **解析:**如下图所示,0.68乘以2,取整,然后再将小数乘以2,取整,直到达到题目要求精度。得到结果:0.10101B.

    在这里插入图片描述

    图2.十进制小数转二进制

    1.2 十进制转八进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 10.68D = ______ Q(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以8取余数,直到无法整除。小数部分0.68乘以8,取整,然后再将小数乘以8,取整,直到达到题目要求精度。得到结果:12.534Q.

    这里写图片描述

    图3.十进制转八进制

    1.3 十进制转十六进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 25.68D = ______ H(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以16取余数,直到无法整除。小数部分0.68乘以16,取整,然后再将小数乘以16,取整,直到达到题目要求精度。得到结果:19.ae1H.

    这里写图片描述

    图4.十进制转十六进制
    # 2.R进制转十进制 ## 2.1 二进制转十进制 **方法为:**把二进制数按权展开、相加即得十进制数。(具体用法如下图)

    例题: 1001 0110B = ______ D

    **解析:**如下图所示。得到结果:150D.

    这里写图片描述

    图5.二进制转十进制

    2.2 八进制转十进制

    八进制转十进制的方法和二进制转十进制一样。

    例题: 26Q = ______ D

    **解析:**如下图所示。得到结果:22D.

    这里写图片描述

    图6.八进制转十进制

    2.3 十六进制转十进制

    例题: 23daH = ______ D

    **解析:**如下图所示。得到结果:9178D.

    这里写图片描述

    图7.十六进制转十进制

    3.二进制转八进制

    二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取成一位。

    例题: 1010 0100B = ____Q

    **解析:**计算过程如下图所示。得到结果:244Q.

    这里写图片描述

    图8.二进制转八进制

    4.二进制转十六进制

    二进制转换成八进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。

    例题: 1010 0100B = ____H

    **解析:**计算过程如下图所示。得到结果:a4H.

    这里写图片描述

    图9.二进制转十六进制

    5.工欲善其事,必先利其器

    下面的表格是8位二进制所对应的十进制数值,对进制转换以及类似题目的理解非常有用:

    11111111B
    1286432168421D

    注:B:二进制
           D:十进制


    例题: 135D = ______ B

    **解析:**有了上面二进制对应十进制数值的表格,我们就可以将题目给的十进制135拆分为:128+7,再从表格中找到对应的数值,拼凑即可得到答案。
    135D = 128D + 7D = 1000 0111B

    展开全文
  • BASIC-10、十进制转十六进制 思路如下: 其实这根本就不算一个题,你可以直接提交一个六行代码 #include<stdio.h> int main() { int n; scanf("%d",&n); printf("%X\n", n); return 0; } 正统...

    每日刷题(三十一)

    BASIC-10、十进制转十六进制

    在这里插入图片描述
    在这里插入图片描述
    思路如下:
    在这里插入图片描述
    其实这根本就不算一个题,你可以直接提交一个六行代码

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

    正统代码如下:

    #include<stdio.h>
    
    int main()
    {
    	int n;
    	scanf("%d", &n);
    	char a[] = {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 'A', 'B', 'C', 'D', 'E', 'F'};
    	int t = n;
    	int tmp = n % 16;
    	char m;
    	char k[100];
    	int i;
    	if(n / 16 == 0)
    	{
    		m = a[tmp];
    		printf("%c", m);
    		return 0;
    	}
    	else
    	{
    		i = 0;
    		while(t)
    		{
    			k[i] = a[tmp];
    			
    			t = t / 16;
    			tmp = t % 16;
    			i++;
    		}
    		while(i > -1)
    		{
    			printf("%c", k[--i]);
    		}
    	}
    		
    	return 0;
    }
    

    部分运行结果如下:
    在这里插入图片描述

    BASIC-11、十六进制转十进制

    在这里插入图片描述
    这题也非常简单,但是要注意一点,定义数值型为long long型更保险,以免溢出

    详细C代码如下:

    #include<stdio.h>
    #include<string.h>
    
    int change(char a[], int i)
    {
    	switch(a[i])
    	{
    		case '0':
    			return 0;
    		case '1':
    			return 1;
    		case '2':
    			return 2;
    		case '3':
    			return 3;
    		case '4':
    			return 4;
    		case '5':
    			return 5;
    		case '6':
    			return 6;
    		case '7':
    			return 7;
    		case '8':
    			return 8;
    		case '9':
    			return 9;
    		case 'A':
    			return 10;
    		case 'B':
    			return 11;
    		case 'C':
    			return 12;
    		case 'D':
    			return 13;
    		case 'E':
    			return 14;
    		case 'F':
    			return 15;
    	}
    }
    
    int main()
    {
    	char a[8];
    	scanf("%s", a);
    	int t = strlen(a);
    	long long num = 0;
    	int i = 0;
    	num = change(a, i);
    	while(--t)
    	{
    		num = 16 * num + change(a, i + 1);
    		i++;
    	}
    	printf("%lld\n", num);
    	return 0;
    }
    

    BASIC-12、十六进制转八进制

    在这里插入图片描述
    特别省事的代码如下

    #include<stdio.h>
    #include<string.h>
    
    int change(char a[], int i)
    {
    	switch(a[i])
    	{
    		case '0':
    			return 0;
    		case '1':
    			return 1;
    		case '2':
    			return 2;
    		case '3':
    			return 3;
    		case '4':
    			return 4;
    		case '5':
    			return 5;
    		case '6':
    			return 6;
    		case '7':
    			return 7;
    		case '8':
    			return 8;
    		case '9':
    			return 9;
    		case 'A':
    			return 10;
    		case 'B':
    			return 11;
    		case 'C':
    			return 12;
    		case 'D':
    			return 13;
    		case 'E':
    			return 14;
    		case 'F':
    			return 15;
    	}
    }
    
    int main()
    {
    	char a[100000];
    	int n;
    	scanf("%d", &n);
    	int v;
    	for(v = 0; v < n; v++)
    	{
    		scanf("%s", a);
    		int t = strlen(a);
    		long long num = 0;
    		int i = 0;
    		num = change(a, i);
    		while(--t)
    		{
    			num = 16 * num + change(a, i + 1);
    			i++;
    		}
    		printf("%o\n", num);
    	}
    		
    	return 0;
    }
    

    但是因为题目要求把所有输入数据都输完后才可以输出,所以不符合要求,上面那套代码就只适合玩玩,下面才是正规解:

    #include<stdio.h>
    #include<string.h>
    
    int change(char a[], int i)
    {
    	switch(a[i])
    	{
    		case '0':
    			return 0;
    		case '1':
    			return 1;
    		case '2':
    			return 2;
    		case '3':
    			return 3;
    		case '4':
    			return 4;
    		case '5':
    			return 5;
    		case '6':
    			return 6;
    		case '7':
    			return 7;
    		case '8':
    			return 8;
    		case '9':
    			return 9;
    		case 'A':
    			return 10;
    		case 'B':
    			return 11;
    		case 'C':
    			return 12;
    		case 'D':
    			return 13;
    		case 'E':
    			return 14;
    		case 'F':
    			return 15;
    	}
    }
    
    int main()
    {
    	char a[100000];
    	int n;
    	scanf("%d", &n);
    	int cnt = 0;
    	long long th[100000];
    	int v;
    	for(v = 0; v < n; v++)
    	{
    		scanf("%s", a);
    		int t = strlen(a);
    		long long num = 0;
    		int i = 0;
    		num = change(a, i);
    		while(--t)
    		{
    			num = 16 * num + change(a, i + 1);
    			i++;
    		}
    		int k[100000];
    		int w = num;			 
    		int u = num % 8;
    		if(num / 8 == 0)
    		{
    			th[cnt++] = u;
    			continue;
    		}
    		else
    		{
    			int z = 0;
    			while(w)
    			{
    				k[z] = u;
    				w = w / 8;
    				u = w % 8;
    				z++;
    			}
    			z--;
    			long long rv = k[z];
    			while(z > 0)
    			{
    				rv = rv * 10 + k[--z];
    			}
    			th[cnt++] = rv;
    		}
    	}
    	int tc = 0;
    	for(; tc < cnt; tc++)
    		printf("%lld\n", th[tc]);
    	return 0;
    }
    

    样例运行结果如下:
    在这里插入图片描述
    最后还是要吐槽一下,什么变态测试数据!
    在这里插入图片描述

    BASIC-13、数列排序

    在这里插入图片描述
    在这里插入图片描述
    我这里用的是冒泡排序法,详细代码如下:

    #include<stdio.h>
    
    int main()
    {
    	int n;
    	scanf("%d", &n);
    	int a[n];
    	int i;
    	for(i = 0; i < n; i++)
    		scanf("%d", &a[i]);
    	int j;
    	int tmp = 0;
    	for(i = 0; i < n - 1; i++)
    	{
    		for(j = i + 1; j < n; j++)
    		{
    			if(a[i] > a[j])
    			{
    				tmp = a[j];
    				a[j] = a[i];
    				a[i] = tmp;
    			}
    		}
    	}
    	for(i = 0; i < n; i++)
    		printf("%d ", a[i]);
    	printf("\n");
    	return 0;
    }
    

    最近我还会有更多博文更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗ 感谢支持,下期更精彩!!!

    展开全文
  • 也就是说按普通的思路来做,先十进制再转换成八进制会报错, 但是这里直接采取格式话输出是成功的,可能是系统的Bug. 题目要求: 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述  给定n个十六进制正整数,...
  • 蓝桥杯 基础练习(十) 十进制转十六进制 C语言

    千次阅读 多人点赞 2019-01-19 12:03:09
    十进制转十六进制 C语言 问题描述  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以...

    十进制转十六进制 C语言

    问题描述
      十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
      给出一个非负整数,将它表示成十六进制的形式。

    输入格式
      输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

    输出格式
      输出这个整数的16进制表示

    样例输入
    30

    样例输出
    1E

    这是一道进制转换题,蓝桥杯有三道进制转换的题目,笔者本来想将三道写到一篇文章中供读者作比较的,但是…笔者学艺不精,在十六进制转十进制的题目中遇到了问题,想了一整夜都没解决,所以还是先发第一题的,等笔者解决了问题在下一篇文章中讨论。

    enmmm,时间隔太久,不知道从什么地方说起,先贴代码吧:

    #include <stdio.h>
    
    char getnum(int a)
    {
    	switch(a) //进制转换
    	{
    		case 0: return '0';break;
    		case 1: return '1';break;
    		case 2: return '2';break;
    		case 3: return '3';break;
    		case 4: return '4';break;
    		case 5: return '5';break;
    		case 6: return '6';break;
    		case 7: return '7';break;
    		case 8: return '8';break;
    		case 9: return '9';break;
    		case 10: return 'A';break;
    		case 11: return 'B';break;
    		case 12: return 'C';break;
    		case 13: return 'D';break;
    		case 14: return 'E';break;
    		case 15: return 'F';break;
    		
    	}
    } 
    
    int main() {
    	int a[128];  //存放除以16后得到的各个余数
    	int n,i=0;
    	scanf("%d",&n);
    	
    	if(n==0)
    	{
    		printf("0");
    	}  //0不能作被除数,所以如果输入0,则直接输出0
    	
    	else
    	{
    		while(n)
    		{
    			a[i++]=n%16;  
    			n/=16;
    		}
    		
    		for(i-=1;i>=0;i--) //i-=1,指向最后一位,倒序输出,这个解释有点麻烦,自己理解吧
    		{
    			putchar(getnum(a[i]));
    		}  
    	}
    	return 0;
    }
    

    首先解释一下,笔者的思路很简单,就是先将输入的十进制数n除以16得到商和余数,余数直接放入申请好的数组中,如果商大于等于16,那么就循环上面这个操作。
    这样我们会得到一串数组,数组中的每一位余数代表这个数n所对应的十六进制数的每一位的数值(十进制)。

    然后将这些数值用switch函数转化成十六进制数就得到了我们想要的结果。

    嗯,可能读者会看不懂,毕竟笔者的表达能力真的不行,看不懂的就直接看代码吧,实在抱歉。

    需要注意的点代码中都有标出,好了,笔者继续去肝下一题了T-T

    展开全文
  • 1.十六进制转八进制 见例题: 问题描述  给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  输入的第一行为一个正整数n (1&lt;=n&lt;=10)。  接下来n行,每行一个由09、大写字母AF组成的字符...
  • //题目:八进制转换为十进制 #include<stdio.h> #include<math.h> int main() { int i=0,n,tmp,sum=0; scanf("%d",&n); while(n) { tmp=n%10; n=n/10; sum+=tmp*pow(8,i); i++;...
  • 试题 基础练习 十进制转十六进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示...
  • 试题 基础练习 十六进制转十进制 问题描述  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 ...
  • 目录先导知识1、十进制转R进制例:100D(十进制)转换成二进制是多少?例:100D(十进制)转换成八进制是多少?例:100D(十进制)转换成十六进制是多少?2、R进制转十进制(乘权求和法)例:1001B(二进制)转换成...
  • 资源限制 时间限制:1.0s 内存限制:512.0MB ...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非...
  • 今天来总结一下各种进制转换问题,详细齐全易于理解,希望对你有帮助哦! 先从我们最熟悉的十进制入手吧,其他进制与十进制的转换方法都是一样的,保证能全部记住!...一、十进制转换成二进制、八进制、十六进制
  • 基础练习 十进制转十六进制 问题描述  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1...
  • 十六进制、二进制转换以及练习

    千次阅读 2021-06-04 16:01:01
    如果用十进制整数表示,它的值域就是0〜255)为单位取值,取值标识为地址(C语言指针为字节的虚拟地址,编译器将指针同类型联系在一起并对其维护) 十六进制表示:0x或ox开头,以16为基数,来表示位模式。十六进制...
  • #做题笔记,仅自己可看懂 题目: 正确姿势: import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(Integer....
  • python 十进制转十六进制(蓝桥杯)

    千次阅读 2020-02-26 13:53:55
    题目要求: 时间限制:1.0s 内存限制:512.0MB ...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制 的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非...
  • 试题 基础练习 十六进制转八进制

    千次阅读 2020-04-26 00:36:00
     给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  输入的第一行为一个正整数n (1<=n<=10)。  接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制...
  • 题目数据会很大 Accept Code #include <stdio.h> #include <string.h> char str[60000000]; char a[60000000]; int htoi(char s[]) { long long len,t,sum=0,i; len=strlen(s);... ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,623
精华内容 1,049
关键字:

十进制转进制十六进制例题