Java蓝桥杯基础练习

Posted 努力努力再努力²

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java蓝桥杯基础练习相关的知识,希望对你有一定的参考价值。

目录


10、十进制转十六进制

import java.util.Scanner;

//法一:100分
public class 十进制转十六进制_10 
 public static void main(String[] args) 
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
//		System.out.println(Integer.toBinaryString(n)); //二进制
//		System.out.println(Integer.toOctalString(n));//八进制
		System.out.println(Integer.toHexString(n).toUpperCase()); //十六进制
	

11、十六进制转十进制

import java.math.BigInteger;
import java.util.Scanner;

//法1: 100分
public class 十六进制转十进制_11 
	public static void main(String[] args) 
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		String Oct=new BigInteger(str, 16).toString(10);
		System.out.println(Oct);
	

12、十六进制转八进制

import java.math.BigInteger;
import java.util.Scanner;
//法1: 100分
public class 十六进制转八进制_12  
	/* 给定n个十六进制正整数,输出它们对应的八进制数。 */
	public static void main(String[] args) 
	   Scanner sc=new Scanner(System.in);
      //获取n
	   int n=sc.nextInt();
	   //定义数组来存放转换后的数
	   String []arr=new String[n];
	   //循环然后进行16进制转换为8进制
	   for(int i=0;i<n;i++) 
		   //获取16进制数(注意next和nextInt区别)
		   String sixteen=sc.next();
		   //由于数字可能会越界,所有使用BigInteger的api
		   //new BigInteger(number, from).toString(to);
		   //number:要转换的数     from:原数的进制      to:要转换成的进制
		   String eight=new BigInteger(sixteen, 16).toString(8);
		   //将结果存入arr中
		   arr[i]=eight;
	   
	   //遍历数组并打印
	   for(int i=0;i<n;i++) 
		   System.out.println(arr[i]);
	   
	

13、数列排序

import java.util.Scanner;

public class 数列排序_13 
	public static void  main(String a[]) 
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int f[] =new int[n];
		for (int i = 0; i < n; i++) 
			f[i]=in.nextInt();
		
		int b = 0;
		for(int i =0;i<n-1;i++) 
			for(int j = i+1;j<n;j++) 
				if(f[i]>f[j]) 
					b = f[i];
					f[i] = f[j];
					f[j] = b;
				
			
		
		for(int i =0;i<n;i++) 
			System.out.printf("%d ",f[i]);
		

	



14、时间转换

import java.util.Scanner;

public class 时间转换_14 
	public static void  main(String a[]) 
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int H=n/3600;
		int M=(n-H*3600)/60;
		int S=(n-H*3600)-60*M;

		
		System.out.print(H+":"+M+":"+S);
	
	

15、字符串对比

import java.util.Scanner;

public class 字符串比较_15 
	public static void  main(String a[]) 
		Scanner in = new Scanner(System.in);
		String []arr=new String[2];
	
		for (int i = 0; i < arr.length; i++) 
			 arr[i]=in.next();
		
		if(arr[0].length()!=arr[1].length())
		
			System.out.print("1");
		else 
			if(arr[0].equals(arr[1]) )
				System.out.print("2");
			else if (arr[0].toUpperCase().equals(arr[1].toUpperCase())) 
				System.out.print("3");
			else 
				System.out.print("4");
			
			
		
		
	

16、分解质因数

import java.util.Scanner;

public class 分解质因数_16 
	//质数: 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
	//0和1既不是质数也不是合数,最小的质数是2
    public static void main(String[] args) 
           Scanner in = new Scanner(System.in);
           int a = in.nextInt();
           int b = in.nextInt();
           for(;a<=b;a++)
        	   int temp = a;
        	   boolean flag = false;
        	   System.out.print(temp+"=");
        	   while(temp!=1)
        		   for(int i=2;i<=temp;i++)
        			   if(isPrime(i)&&temp%i==0)
        				   if(flag)
        					   System.out.print("*"+i); 
        				   else
        					   flag = true;
        					   System.out.print(i);
        				   
        				   temp /= i; 
        				   break;
        			   
        		   
        	   
        	   System.out.println();
           
        
        
        public static boolean isPrime(int n)
        	if(n<2)return false;
        	if(n==2)return true;
        	if(n%2==0)return false;
        	for(int i=3;i*i<=n;i+=2)
        		if(n%i==0)
        			return false;
        		
        	
        	return true;
        
 

17、矩阵乘法


import java.util.Scanner;
public class 矩阵乘法_17 

    private static int N;//矩阵A的阶数
    private static int[][] matrix; //矩阵A

    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        int M = sc.nextInt(); //要求的幂数
        matrix = new int[N][N];  //原矩阵
        
        //输入矩阵数据									
        for (int i = 0; i < N; i++) 
            for (int j = 0; j < N; j++) 
                matrix[i][j] = sc.nextInt();
            
        
        
      //新矩阵
        int[][] newMatrix = new int[N][N];
      //幂数为0的情况
        if (M == 0) 
            for (int i = 0; i < N; i++) 
                newMatrix[i][i] = 1;
            
        //幂数不为0的情况    
         else 
            newMatrix = matrix;
            for (int i = 0; i < M - 1; i++) 
                newMatrix = matriMultiplication(newMatrix);
            
        
      //输出新矩阵
        for (int i = 0; i < N; i++) 
            for (int j = 0; j < N; j++) 
                System.out.print(newMatrix[i][j] + " ");
            
            System.out.println();
        
    

    private static int[][] matriMultiplication(int[][] matrixParam) 
        int[][] newMatrix = new int[N][N];
        for (int i = 0; i < N; i++) 
            for (int j = 0; j < N; j++) 
                for (int k = 0; k < N; k++) 
                    newMatrix[i][j] += matrixParam[i][k] * matrix[k][j];
                
            
        
        return newMatrix;
    




18、矩形面积交


import java.util.Scanner;
public class 矩形面积交_18 
	public static void main(String[] args) 
		Scanner sc = new Scanner(System.in);
		//获得四个点的坐标
		double x1 = sc.nextDouble(),y1=sc.nextDouble(),x2=sc.nextDouble(),y2 = sc.nextDouble();
		double x3 = sc.nextDouble(),y3=sc.nextDouble(),x4=sc.nextDouble(),y4 = sc.nextDouble();
		//关闭Scanner方法
		sc.close();
		//找出矩形一的最大最小值x,最大最小y
		double maxx = Math.max(x1,x2);
		double minx = Math.min(x1, x2);
		double maxy = Math.max(y1, y2);
		double miny =Math.min(y1, y2);
		//找出矩形二的最大最小值x,最大最小y
		double bigx = Math.max(x3,x4);
		double smax = Math.min(x3, x4);
		double bigy = Math.max(y3, y4);
		double smay =Math.min(y3, y4);
		//判断是否相离或者相切
		if(smax>=maxx||minx>=bigx ||smay>=maxy||miny>=bigy)
			System.out.println("0.00");
		else
			//找出相交的矩形的两个点,点1(xx,yy) 点2(x,y)
			double xx = Math.max(minx, smax),yy=Math.max(miny, smay);
			double x = Math.min(maxx, bigx),y=Math.min(maxy, bigy);
			System.out.println(String.format("%.2f", (Math.abs(x-xx)*Math.abs(y-yy))));
		
	

19、完美的代价

package a;
import java.util.Scanner;
public class 完美的代价_19 
	public static void main(String[] args) 
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String str = sc.next();
		//将输入字符串转换为char数组
		char[] charArr = str.toCharArray();
		//求出现的次数为奇数的字母个数	    
		int[] num = new int[26];
		//记录每个字母出现的个数
		for(int i = 0; i < n; i++) 
			num[charArr[i] - 'a']++;
		
		//出现次数为奇数的字母个数
		int count = 0;
		for(int i = 0; i < 26; i++) 
			if(num[i] != 0) 
				if(num[i] % 2 != 0) 
					count++;
				
			
		
		//若个数大于等于2个,则直接返回Impossible
		if(count >&

以上是关于Java蓝桥杯基础练习的主要内容,如果未能解决你的问题,请参考以下文章

Java蓝桥杯基础练习

蓝桥杯 基础练习 BASIC-19 完美的代价

蓝桥杯基础练习 完美的代价

[蓝桥杯] 基础练习 完美的代价

[蓝桥杯] 基础练习 完美的代价

[蓝桥杯] 基础练习 完美的代价