精华内容
下载资源
问答
  • 10:十进制转十六进制 问题描述:  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以...

    10:十进制转十六进制

    问题描述:

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

    ----------------------------------------------------

    思路:

           十进制转换为k进制可采用除k取余法。

           需要注意的是:这里越早得到的数字其数位越低,因此应对得到的字符串进行倒置处理。

    代码示例:

    import java.util.*;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		long n = in.nextLong();
    		in.close();
    		
            // 用数组保存十六进制下0-15相应的字符
    		char[] a = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    		
    		StringBuilder s = new StringBuilder();
    		
    		if (n == 0)
    			s.append("0");
    		
    		while (n != 0) {
    			s.append(a[(int)n%16]);
    			n /= 16;
    		}
    		s.reverse();
    		System.out.println(s);
    	}
    }

     

    11:十六进制转十进制

    问题描述:

      从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
      注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

    样例输入:

            FFFF

    样例输出:

            65535

    --------------------------------------------------------------------------------------------------

    思路:

            k进制转换为十进制,即求 当前位数字 * 进制基数 * 数位权重 之和。

           例如:1E = E(14)*16^0 + 1*16^1 = 14 + 16 = 30

    代码示例:

    import java.util.*;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		StringBuilder s = new StringBuilder(in.nextLine());
    		in.close();
    		
    		long rel = 0;
    		s.reverse();
    		for (int i=0; i<s.length(); i++) {
    			char c = s.charAt(i);
    			int temp = c-'0';
    			
                // 用来判断这一位的字符是0-9还是A-F('A'-'0'=17)
    			if (temp < 16) {
    				rel += temp * Math.pow(16, i);
    			}
    			else {
    				rel += (temp-7) * Math.pow(16, i);
    			}
    		}
    		
    		System.out.println(rel);
    	}
    }
    

     

    12:十六进制转八进制

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

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

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

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

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

    ---------------------------------------------------------------------------------

    思路:
      先将十六进制数转换成二制数,再由二进制数转换成八进制。

           需要注意的是:每1位十六进制数可以转换为4位二进制数,而3位二进制数可以转换为1位八进制数。

    代码示例:

    import java.util.*;
    
    public class Main{
        // 将十六进制转换为二进制
    	private static StringBuilder toBinary(String strHex) {  
            StringBuilder strBin = new StringBuilder();
            
            for (int i=0; i<strHex.length(); i++){
            	char c = strHex.charAt(i);
                switch (c) {
                    case '0':
                    	strBin.append("0000");
                    	break;
                    case '1':
                    	strBin.append("0001");
                    	break;
                    case '2':
                    	strBin.append("0010");
                    	break;
                    case '3':
                    	strBin.append("0011");
                    	break;
                    case '4':
                    	strBin.append("0100");
                    	break;
                    case '5':
                    	strBin.append("0101");
                    	break;
                    case '6':
                    	strBin.append("0110");
                    	break;
                    case '7':
                    	strBin.append("0111");
                    	break;
                    case '8':
                    	strBin.append("1000");
                    	break;
                    case '9':
                    	strBin.append("1001");
                    	break;
                    case 'A':
                    	strBin.append("1010");
                    	break;
                    case 'B':
                    	strBin.append("1011");
                    	break;
                    case 'C':
                    	strBin.append("1100");
                    	break;
                    case 'D':
                    	strBin.append("1101");
                    	break;
                    case 'E':
                    	strBin.append("1110");
                    	break;
                    case 'F':
                    	strBin.append("1111");
                    	break;
                    default:
                    	break;
                }
            }
            return strBin;
        }
    	
        // 将二进制转换为八进制
    	private static StringBuilder toOctal(StringBuilder strBin) {
            StringBuilder strOct = new StringBuilder();
            
            for (int i=0; i<strBin.length(); i+=3) {
            	String temp = strBin.substring(i, i+3);
            	
                switch (temp) {
                    case "000":
                    	strOct.append("0");
                    	break;
                    case "001":
                    	strOct.append("1");
                    	break;
                    case "010":
                    	strOct.append("2");
                    	break;
                    case "011":
                    	strOct.append("3");
                    	break;
                    case "100":
                    	strOct.append("4");
                    	break;
                    case "101":
                    	strOct.append("5");
                    	break;
                    case "110":
                    	strOct.append("6");
                    	break;
                    case "111":
                    	strOct.append("7");
                    	break;
                    default:
                    	break;
                }
            }
            return strOct;
        }
    	
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            
            String[] strHex = new String[n];
            for (int i=0; i<n; i++) {
                strHex[i] = in.next();
            }
            in.close();
            
            for (int i=0;i<n;i++) {
                StringBuilder strBin = toBinary(strHex[i]);
                int l = strBin.length();
                
                // 不足三位时用零补足
                if (l%3 == 1) {
                	strBin.insert(0, "00");
                }
                if (l%3 == 2) {
                	strBin.insert(0, "0");
                }
                
                StringBuilder strOct = toOctal(strBin);
                // 去掉前导位的0
                if (strOct.charAt(0) == '0') {
                	
                	strOct.deleteCharAt(0);
                }
                System.out.println(strOct);
            }
        }
    }

     

    展开全文
  • BASIC-10 十进制转十六进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。 它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制...

    BASIC-10 十进制转十六进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

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

    #include<iostream>
    #include<cstring>
    using namespace std;
    int  main(){
    	int n,i=0,t;
    	cin>>n;
    	char s[10];
    	if(n==0)
    		cout<<0;
    	else{
    		while(n){
    			t=n%16;
    			if(t>=10)
    				s[i++]=t%10+'A';
    			else
    				s[i++]=t+'0';
    			n=n/16;
    		}
    		s[i]='\0';
    		char ch;
    		int len=strlen(s);
    		for(i=0;i<len/2;i++){
    			ch=s[i];
    			s[i]=s[len-i-1];
    			s[len-i-1]=ch;
    		}
    		cout<<s;
    	}
    	return 0;
    }
    

    BASIC-11 十六进制转十进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
    注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

    样例输入

    FFFF

    样例输出

    65535

    #include<iostream>
    #include<cstring>
    using namespace std;
    int  main(){
    	char s[10];
    	long long sum=0;	//注意数据类型的大小
    	cin>>s;
    	int len=strlen(s);
    	for(int i=0;i<len;i++){
    		if(s[i]>='0'&&s[i]<='9'){
    			sum=sum*16+(s[i]-'0');
    		}
    		if(s[i]>='A'&&s[i]<='F')
    			sum=sum*16+(s[i]-'A'+10);
    	}
    	cout<<sum;
    	return 0;
    }
    

    BASIC-12 十六进制转八进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

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

    输入格式

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

    输出格式

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

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

    样例输入

    2   
    39   
    123ABC

    样例输出

    71   
    4435274

    【提示】   
    先将十六进制数转换成某进制数,再由某进制数转换成八进制。

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        int n;
        cin>>n;
        string s1[12],s2[12];
        for(int i = 0;i<n;i++)
            cin>>s1[i];
        for(int i = 0;i<n;i++){
            s2[i]="";
            for(int j = 0;j<s1[i].length();j++){
                switch (s1[i][j]) {
                    case '0' : s2[i] += "0000"; break;
                    case '1' : s2[i] += "0001"; break;
                    case '2' : s2[i] += "0010"; break;
                    case '3' : s2[i] += "0011"; break;
                    case '4' : s2[i] += "0100"; break;
                    case '5' : s2[i] += "0101"; break;
                    case '6' : s2[i] += "0110"; break;
                    case '7' : s2[i] += "0111"; break;
                    case '8' : s2[i] += "1000"; break;
                    case '9' : s2[i] += "1001"; break;
                    case 'A' : s2[i] += "1010"; break;
                    case 'B' : s2[i] += "1011"; break;
                    case 'C' : s2[i] += "1100"; break;
                    case 'D' : s2[i] += "1101"; break;
                    case 'E' : s2[i] += "1110"; break;
                    case 'F' : s2[i] += "1111"; break;
                    default:
                        break;
                }
            }
            if(s2[i].length()%3==1)
    			s2[i] = "00" + s2[i];
            else if(s2[i].length()%3==2)
    			s2[i] = "0" + s2[i];
            int flag = 0;
            for(int j = 0;j<=s2[i].length()-3;j+=3){
                int num = 4*(s2[i][j]-'0')+2*(s2[i][j+1]-'0')+(s2[i][j+2]-'0');
                if(num)
    				flag = 1;
                if(flag)
    				cout<<num;
            }
            cout<<endl;
        }
        return 0;
    }
    
    

    BASIC-13 数列排序

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

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

    输入格式

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

    输出格式

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

    样例输入

    5
    8 3 6 4 9

    样例输出

    3 4 6 8 9

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
    	int n,m[201];
    	cin>>n;
    	for(int i=0;i<n;i++)
    		cin>>m[i];
    	sort(m,m+n);
    	for(int i=0;i<n;i++)
    		cout<<m[i]<<" ";
    	return 0;
    }
    
    展开全文
  • 1、十进制转2~16进制【问题描述】从键盘输入十进制整数num及转换的进制数base,将整数num转换为base进制(base取值范围为 2~16)。方法为:十进制数除base取余法,即十进制数除以base,余数为权位上的数,得到的商值...

    1、十进制转216进制

    【问题描述】从键盘输入十进制整数num及转换的进制数base,将整数num转换为base进制(base取值范围为 2~16)。

    方法为:十进制数除base取余法,即十进制数除以base,余数为权位上的数,得到的商值继续除以base,依此步骤继续向下运算直到商为0为止。

    源程序:

    #include 

    void trans(int data, int base) 

        int x[64],k,i=0;

        while(data) 

        {  

            x[i]=data%base;  

            data/=base;

            i++;

        }

        for(k=i-1;k>=0;k--)

          if(x[k]<10) 

                printf("%d", x[k]);    

          else if(x[k]<=16) 

                printf("%c", 'A'+x[k]-10); 

    int main(void) 

        int num,base; 

        scanf("%d%d", &num, &base); 

        if(base<=0||base>16)

           { 

              printf("data error\n"); 

              return; 

           } 

        printf("number=%d  base=%d\n",num,base); 

        trans(num,base); 

        printf("\n"); 

        return 0;

    2、十六进制转十进制

    【问题描述】输入一个字符串,取出该字符串中的十六进制字符(不分大小写)组成一个新的表示十六进制数的字符串,输出该字符串并将其转换成十进制数后输出。

    方法为:十六进制数由数字0~9、字母A~F(或a~f)组成。把十六进制数按权展开、相加即得十进制数。

    源程序:

    #include

    #include

    int main(void)

    {

      char s[20],hex[20];

      int i,j,num;

      gets(s);

      /* 取出字符串中的十六进制字符  */

      for(i=0,j=0;s[i]!='\0';i++)

       {

         if(s[i]>='0'&&s[i]<='9'||s[i]>='A'&&s[i]<='F'||s[i]>='a'&&s[i]<='f')

           {

              hex[j]=s[i];

              j++;

           }

       }

       hex[j]='\0';

       printf("Hexadecimal String: ");

       puts(hex);

       /* 十六进制转十进制 */ 

       num=0;  

       for(i=0;hex[i]!='\0';i++)

        {

            if(hex[i]>='0'&&hex[i]<='9')

                num=num*16+hex[i]-'0';

             else if(hex[i]>='A'&&hex[i]<='F')

                         num=num*16+hex[i]-'A'+10;

                     else if(hex[i]>='a'&&hex[i]<='f')

                         num=num*16+hex[i]-'a'+10;  

        }

       printf("Decimal number=%d\n",num);          

       return 0;

    }

    e79db2c90e777fbbfd05d8369f2e7c12.png

    bf2bb94b968eaa8f6fa7a16838c4e85c.png

    展开全文
  • 一、十进制转十六进制相关知识点及小练习 1.十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,...

    一、十进制转十六进制相关知识点及小练习

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

    例如:
    十进制的435转换为十六进制,用435除以16,商13余11,即十六进制为
    b13,由最高位开始书写。

    二、十进制转二进制相关知识点及小练习
    1.利用逢二进一的特点,用位格快速转换二进制。
    1 2 4 8 32 64 128…

    若一个十进制数为45,则为32+8+4+1,二进制为11101,将有用到的数字下填写1,没用到的填写0,就简单快捷得出二进制。

    这是一个简单的方法,大家还有其他方法,可以多多交流。

    展开全文
  • 以下程序的输出结果是 main(){ int a=20; printf("%d,%o,%x\n",a,a,a);...1.题目给出了 a=20这个十进制现在我们需要用十进制转八进制,这里我们采用的就是直接除8取余的方法 2.同理对于10进制转16进制我们也是...
  • 一个十进制转十六进制的应用程序,现在出的是自动进位的,要不自动进位的,修改下就行
  • 十进制转十六进制

    2014-08-12 10:00:38
    原创最好用的十进制转十六进制程序,您只需输入十进制数就会得到十六进制数。使用起来是最为方便的啦!
  • 10.基础练习 十进制转十六进制 /*问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,...
  • 在编写程序进行赋值的时候(==),注意将常量放在左边 unsigned int mask=0x80000000; //掩码 num&0x80000000:注意强制类型转化  使用“与”的情况: ①清0特定位 ②取某数中指定位 (公式:unsigned int ...
  • 十进制转换十六进制文件类型:.asm有充分说名
  • 十进制转十六位位二进制程序,可以直接仿真出结果,在图像水印方面应用
  • 程序可实现十进制转换成二进制和十六进制程序可实现十进制转换成二进制和十六进制程序可实现十进制转换成二进制和十六进制
  • 基础练习 十进制转十六进制 时间限制:1.0s 内存限制:512.0MB 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。...
  • 程序主要是将十进制转十六进制函数(包括正负整数及小数),并根据设置显示大小端。 输入参数说明:x表示十进制数,N表示最后转换成的十六进制数的位数(字节数),flag表示大小端(1是小端,2是大端)
  • 试题 基础练习 十进制转十六进制 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。 它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。 十六进制的计数方法是满16进1...
  •  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号, 分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而...
  • 基础练习之十进制转十六进制 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以...
  • 十进制转十六进制 问题描述(蓝桥水题)  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,...
  • //题目:八进制转换为十进制 #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个符号,分别表示十...

空空如也

空空如也

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

十进制转十六进制程序