精华内容
下载资源
问答
  • 实现堆栈输入输出,十进制转八进制和十六进制 文章目录1.入栈2.出栈3.十进制转八进制4.八进制转十六进制5.附上源码6.运行结果 1.入栈 代码如下(示例): void intput(ElemType a[], int& top,ElemType item)...

    实现堆栈输入输出,十进制转八进制和十六进制


    1.入栈

    代码如下(示例):

    void intput(ElemType a[], int& top,ElemType item)
    {
    	if (top == (N - 1))//判断栈满
    	{
    		cout << "堆栈满" << endl;
    		return;
    	}
    	top++;
    	a[top]=item;
    
    }
    

    2.出栈

    代码如下(示例):

    void output(ElemType a[], int& top, ElemType& item)
    {
    	if (top == (-1))//判断栈空
    	{
    		cout << "堆栈空" << endl;
    		return;
    	}
    	item = a[top];
    	top--;
    }
    

    3.十进制转八进制

    100/8=12…4
    12 / 8=1…4
    1 / 8=0…1
    100的八进制为144
    只需要把每次的余数保留就是得到的结果,一直除到商为0

    void DecimaltoOctal(int num)
    {
    	int a[N];
    	int top=-1;
    	do {
    		top++;
    		a[top] = num % 8;
    		num = num / 8;
    	} while (num != 0);
    	cout << "八进制:";
    	do {
    		cout <<  a[top--];
    	} while (top!=-1);
    }
    

    4.八进制转十六进制

    八进制转十六进制 与 十进制转八进制 同理
    只需要把每次的余数保留就是得到的结果,一直除到商为0
    但在输出的时候十六进制:
    A=10 B=11 … F=15 稍微改动即可

    void DecimaltoHexadecimal(int num)
    {
    	int a[N];
    	int top = -1;
    	do {
    		top++;
    		a[top]=num % 16;
    		num = num / 16;
    	} while (num != 0);
    	cout << "十六进制:";
    	do {
    		if (a[top] > 9)
    		{
    			switch (a[top]) {
    			case 10:
    				cout << 'A'; break;
    			case 11:
    				cout << 'B';  break;
    			case 12:
    				cout << 'C';  break;
    			case 13:
    				cout << 'D'; break;
    			case 14:
    				cout << 'E';  break;
    			default:
    				cout << 'F';  break;
    			}
    		}
    		else
    		{
    			cout << a[top];
    		}
    		top--;
    	} while (top != -1);
    }
    

    5.附上源码

    #include<iostream>
    using namespace std;
    #define N 100
    typedef int ElemType;
    void intput(ElemType a[], int& top,ElemType item)
    {
    	if (top == (N - 1))//判断栈满
    	{
    		cout << "堆栈满" << endl;
    		return;
    	}
    	top++;
    	a[top]=item;
    
    }
    void output(ElemType a[], int& top, ElemType& item)
    {
    	if (top == (-1))//判断栈空
    	{
    		cout << "堆栈空" << endl;
    		return;
    	}
    	item = a[top];
    	top--;
    }
    void DecimaltoOctal(int num)
    {
    	int a[N];
    	int top=-1;
    	do {
    		top++;
    		a[top] = num % 8;
    		num = num / 8;
    	} while (num != 0);
    	cout << "八进制:";
    	do {
    		cout <<  a[top--];
    	} while (top!=-1);
    }
    void DecimaltoHexadecimal(int num)
    {
    	int a[N];
    	int top = -1;
    	do {
    		top++;
    		a[top]=num % 16;
    		num = num / 16;
    	} while (num != 0);
    	cout << "十六进制:";
    	do {
    		if (a[top] > 9)
    		{
    			switch (a[top]) {
    			case 10:
    				cout << 'A'; break;
    			case 11:
    				cout << 'B';  break;
    			case 12:
    				cout << 'C';  break;
    			case 13:
    				cout << 'D'; break;
    			case 14:
    				cout << 'E';  break;
    			default:
    				cout << 'F';  break;
    			}
    		}
    		else
    		{
    			cout << a[top];
    		}
    		top--;
    	} while (top != -1);
    }
    int main()
    {
    	ElemType a[N];
    	int top = -1;
    	ElemType item;
    
    	DecimaltoOctal(100);
    	DecimaltoHexadecimal(100);
    
    	cout << ' ' << endl;
    	cout<<"输入需进栈数量:";
    	int n;
    	cin >> n;
    	for (int i = 0;i < n;i++)
    	{
    		cin >> item;
    		intput(a, top, item);
    	}
    
    	cout << "输入需退栈数量:";
    	cin >> n;
    	for (int i = 0;i < n;i++)
    	{
    		output(a, top, item);
    		cout<<item<<" ";
    	}
    	return 0;
    }
    

    6.运行结果

    八进制:144十六进制:64
    输入需进栈数量:3
    1 2 3
    输入需退栈数量:3
    3 2 1
    
    展开全文
  • C和C++中十进制转八进制和十六进制

    千次阅读 2014-01-10 18:41:26
    C: #include int main(void) { unsigned int a = 123... // 八进制 printf("%x\n", a); // 字母小写的十六进制 printf("%X\n", a); // 字母大写的十六进制 return 0; } C++: #include using namespace std; v

    C:

    #include<stdio.h>
    
    int main(void)
    {
    	unsigned int a = 123;
    	printf("%o\n", a); // 八进制
    	printf("%x\n", a); // 字母小写的十六进制
    	printf("%X\n", a); // 字母大写的十六进制
    	return 0;
    }
    

    C++:

    #include<iostream>
    using namespace std;
    
    void Print(unsigned int a)
    {
    	cout << oct // 设置格式状态:用八进制显示
    		 << a << endl;
    	cout << hex  // 用十六进制显示
    		 << a << endl;
    	cout << uppercase // 设置十六进制的字母为大写
    		 << a << endl;
    	cout << nouppercase << dec // 恢复默认流状态
    		 << a << '\n' << endl;
    }
    
    int main()
    {
    	unsigned int a = 123u;
    	Print(a);
    	cout << showbase; // 输出指明数的基数的前缀
    	Print(a);
    	cout << noshowbase;
    	return 0;
    }
    


    展开全文
  • 以下程序的输出结果是 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)十六进制转八进制

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

     

     

     

     

     

     

     

    展开全文
  • 输入一个正整数n, 编程求所有这样的五位六位十进制数,满足各位数字之等于n 。 输入格式 输入一行,包含一个正整数n。 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。 思路:五位数六...

    基础练习 特殊回文数

    问题描述

    123321是一个非常特殊的数,它从左边读和从右边读是一样的。

    输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

    输入格式

    输入一行,包含一个正整数n。

    输出格式

    按从小到大的顺序输出满足条件的整数,每个整数占一行。

    思路:五位数和六位数的范围,采用前面的遍历得各位数相加再判断的速度难免会慢许多,故采用此回文数的性质:左右对称,将五至六位数拆成三个在[0,10)的数并 乘2求和(6位数时),两位乘2加中间位求和(5位数时)将和与目标值作相等判断,用动态数组add一下,最后在无脑排序一下(可在排序这里优化运行速度)

    import java.util.Scanner;
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class Main {
    	public static void main(String[] args)
    	{
    		Scanner sc=new Scanner(System.in);
    		int n=sc.nextInt();
    		ArrayList<Integer> rs=new ArrayList<Integer>();
    		for(int i=1;i<10;i++)
    			for(int j=0;j<10;j++)
    				for(int t=0;t<10;t++)
    				{
    					if(2*i+2*j+t==n)
    						rs.add(i*10000+j*1000+t*100+j*10+i);
    					if(2*i+2*j+2*t==n)
    						rs.add(i*100000+j*10000+t*1000+t*100+j*10+i); 
    				}
    		Collections.sort(rs);
    		for(int i=0;i<rs.size();i++)
    		System.out.println(rs.get(i));
    	}
    }

     基础练习 十进制转十六进制

    问题描述

    十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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进制表示

    思路:用自带的方法即可

    java.lang.Integer.toHexString() 方法返回一个整数参数的字符串表示形式在基数为16的无符号整数,下面的字符作为十六进制数字:0123456789ABCDEF。

    声明

    以下是java.lang.Integer.toHexString()方法的声明

    public static String toHexString(int i)

    参数

    • i -- 这是要转换为字符串的整数。

    返回值

    此方法返回由十六进制的参数(以16为基数)表示的无符号整型值的字符串表示形式。


    java.lang.String.toUpperCase() 方法使用默认语言环境的规则,将所有的字符在这个字符串为大写。

    声明

    以下是java.lang.String.toUpperCase()方法的声明

    public String toUpperCase()

    参数

    • NA

    返回值

    此方法返回转换为大写的字符串。

    import java.util.*;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		int n=sc.nextInt();
    		System.out.println(Integer.toHexString(n).toUpperCase());
    	}
    }

    基础练习 十六进制转十进制

    问题描述

    从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

    注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

    样例输入

    FFFF

    样例输出

    65535

    思路:一样用自带方法即可

    BigInteger(String val, int radix)
    这个构造函数用于转换为BigInteger的指定基数为一个BigInteger的字符串表示形式。

    String toString() 
    此方法返回此BigInteger的十进制字符串表示形式

    import java.util.Scanner;
    import java.math.BigInteger;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		String s=sc.next();
    		BigInteger bi=new BigInteger(s,16);
    		String show=bi.toString(10);
    		System.out.println(show);
    	}
    }

    基础练习 十六进制转八进制

    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式
      输出n行,每行为输入对应的八进制正整数。

      【注意
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    思路:十六进制数的长度不超过100000,而long类型才十九位,故不能用系统自带的进制转换方法。16->2->8。十六进制每一位 对应4位二进制数,八进制对应3位二进制数,十六进制转二进制后,转八进制前,判断长度%3=0,如果不是,+0补齐.之后在转化八进制开始要判断开头的三个是不是"000"的形式,如果是则不算在八进制数里

    import java.util.*;
    public class Main{
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            String[] sts = new String[n];
            for(int i=0;i<n;i++){
                sts[i] = sc.next();
            }
            sc.close();
            for(int i=0;i<n;i++){
                String strBinary = toBinary(sts[i]);
                int len_strBin = strBinary.length();
                if(len_strBin%3==1) strBinary = "00"+strBinary;
                if(len_strBin%3==2) strBinary = "0"+strBinary;
                String strOctal = toOctal(strBinary);
                System.out.println(strOctal);
            }
        }
        private static String toOctal(String strBinary) {
            int len = strBinary.length();
            int k;
            StringBuffer stb = new StringBuffer();
            if(strBinary.substring(0, 3).equals("000"))
                k=3;
            else
                k=0;
            for(int i=k;i<len-2;i+=3){
                switch (strBinary.substring(i, i+3)) {
                    case "000":stb.append("0");break;
                    case "001":stb.append("1");break;
                    case "010":stb.append("2");break;
                    case "011":stb.append("3");break;
                    case "100":stb.append("4");break;
                    case "101":stb.append("5");break;
                    case "110":stb.append("6");break;
                    case "111":stb.append("7");break;
                    default:break;
                }
            }
            return stb.toString();
        }
        private static String toBinary(String strHex) {
            int len_str = strHex.length();
            StringBuffer stb = new StringBuffer();
            for(int i=0;i<len_str;i++){
                switch (strHex.charAt(i)) {
                    case '0':stb.append("0000");break;
                    case '1':stb.append("0001");break;
                    case '2':stb.append("0010");break;
                    case '3':stb.append("0011");break;
                    case '4':stb.append("0100");break;
                    case '5':stb.append("0101");break;
                    case '6':stb.append("0110");break;
                    case '7':stb.append("0111");break;
                    case '8':stb.append("1000");break;
                    case '9':stb.append("1001");break;
                    case 'A':stb.append("1010");break;
                    case 'B':stb.append("1011");break;
                    case 'C':stb.append("1100");break;
                    case 'D':stb.append("1101");break;
                    case 'E':stb.append("1110");break;
                    case 'F':stb.append("1111");break;
                    default:break;
                }
            }
            return stb.toString();
        }
    }

    基础练习 数列排序 

    问题描述  

    给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

    输入格式  

    第一行为一个整数n。  

    第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

    输出格式  

    输出一行,按从小到大的顺序输出排序后的数列。

    思路:直接用自带无脑排序即可

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args)
    	{
    		Scanner sc = new Scanner(System.in);
    		int n, a[];
    		while(sc.hasNextInt()){
    			n = sc.nextInt();
    			a = new int[n];
    			for(int i=0; i<n; i++) a[i] = sc.nextInt();
    			Arrays.sort(a);
    			for(int i=0; i<n; i++) System.out.print(a[i] + " ");
    			System.out.println();
    		}
    	}
    }
    展开全文
  • java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制) 这几天在复习C语言的数据结构栈队列那一章的时候,看到利用栈的特性FILO实现的进制转换十分简洁 想起了java中实现栈的操作十分方便(不用...
  • 二进制、八进制和十六进制十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是N进制,那么: 对于整数部分,从右往左看,第i位的位权等于Ni-1 对于小数部分,恰好相反,要从左...
  •  输入一个正整数n, 编程求所有这样的五位六位十进制数,满足各位数字之等于n 。 输入格式  输入一行,包含一个正整数n。 输出格式  按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例...
  • =1000000),输出其对应的八进制和十六进制的值。 输入格式十进制正整数(<=1000000)输出格式其对应的八进制和十六进制的值(2个值中间用空格分隔) 样例输入1000000 样例输出03641100 0XF4240提示 不要求...
  • 十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X。 【未显示前导 0 或者oX】 #include <stdio.h> int main(){ int i = 1234; ...
  • 直接使用列表逆序打印输出方法二:使用队列deque直接打印输出方法三:使用 divmod计算并用join连接字符串打印输出string.join(sequence ) 序列符号连接函数解释list[a :b : c] 解释十进制转八进制十进制转十六进制 ...
  • 思路: 下面我把相互转换的所有类型都写出来了。实际上都是通过十进制中转的,这样比较简单,写出X...十六进制转十进制转八进制: 其他同理 代码结构图 全部代码: #include <iostream> #include <math....
  • 将二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。假设当前数字是 N 进制,那么:对于整数部分,从右往左看,第 i 位的位权...
  • 1.位,单位是bit,也称为二进制位,是计算机内部数据存储最小的单位;字节,单位是Byte,是计算机数据处理的最小单位;1字节=8比特,即1B=8b;2.话不多说,二进制(B)、八进制(O...十进制转换为二进制、八进制和十六...
  • 小编典典转换BigInteger为十进制十六进制,二进制,八进制字符串:让我们从一个BigInteger值开始:BigInteger bigint = BigInteger.Parse("123456789012345678901234567890");基地10基地16内置的Base 10(十进制)...
  • 十进制,二进制,八进制十六进制的解意详细转换 十进制 二进制 八进制 十六进制 十进制转换成二进制 十进制转换成八进制进制 十进制转换成十六进制 二进制进制转换成十进制 二进制转换成八进制进制 二进制转换成...
  • 两题搞定进制转换(1)二进制转八进制和十六进制(2)十进制转二进制数注意!!! 1.进位计数法       所谓进位计数法是一种计数方法,咱们最常用的莫过于十进制了,除此之外还有八...
  • 1、什么是进制 ...2、二进制和十进制的相互转换 二进制----->十进制: 计算公式:系数 * 基数 ^ 权次(这个公式适用于任何进制到十进制的转换) 权次:从右到左的角标,从0开始 10100010 = 0*2^0 + 1
  • C++ 二进制、十进制八进制和十六进制 转换

    千次阅读 热门讨论 2019-04-26 16:49:20
    如果要求按八进制十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。但是二进制没有默认的输出格式,需要自己写函数进行转换。 输入整数n , 则在C++中cout<&...
  • c语言栈实现十进制转换为二进制,八进制和十六进制 写一个程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过.在此基础上修改程序,实现十进制数据M 向N 进制(2或8或16)的转换. #include<stdio.h> #...
  • 1.十进制转R进制 ...十进制转八进制和二进制方法思路一样。 1.3 十进制转十六进制 十进制转十六进制和二进制方法思路一样。 ** 2.R进制转十进制 2.1 二进制转十进制 方法为:把二进制数按权展开、相加...
  • Here you will get python program to convert decimal ... 在这里,您将获得将十进制转换为二进制,八进制和十六进制的python程序。 Python provides inbuilt functions for conversion of one number system to a...
  • 十进制转二进制八进制十六进制进制转八进制规律:合三为一,不足在前面补零例如: 二进制:101 100 111 八进制:0541 二进制转十六进制规律:合四为一,不足在前面补零例如: 二进制:1111 0011 1001 ...
  • 二进制、八进制和十六进制十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是 N 进制,那么: 对于整数部分,从右往左看,第 i 位的位权等于Ni-1 对于小数部分,恰好相反,要...
  • 十进制剖析进制世界600,361,-7.99……看着这些耳熟能详的数字,你有没有想太多呢?其实这都是全世界通用的十进制,即1.满十进一,满二十进二,以此类推……2.按权展开,第一位权为10^0,第二位10^1……以此类推...

空空如也

空空如也

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

十进制转八进制和十六进制