蓝桥杯基础练习BASIC 8~13(内涵Java解题答案)

这些Java程序分别实现了不同数字特性的检查(如回文数)和进制转换功能,包括从16进制到2进制再到8进制的转换。代码展示了对输入数字进行条件判断和数学运算的过程,以及使用Scanner类进行用户输入的处理。
摘要由CSDN通过智能技术生成

声明:蓝桥杯练习系统中的Java环境为1.8.0

BASIC-8

在这里插入图片描述

import java.util.*;


public class Main {

	public static void main(String[] args) {
		for (int i = 1000; i < 10000; i++) {
			int a = i / 1000;
			int b = (i - a * 1000) / 100;
			int c = (i - (a * 1000 + b * 100)) / 10;
			int d = i % 10;
			if (a == d && b == c) {
				System.out.println(i);
			}
		}
	}
}

BASIC-9

在这里插入图片描述

package test;

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for (int i = 10000; i < 1000000; i++) {
			//当i是六位数时
			if (i > 100000) {
				// 第一位
				int a = i / 100000;
				// 第二位
				int b = (i / 10000) % 10;
				// 第三位
				int c = (i / 1000) % 10;
				// 第四位
				int d = (i / 100) % 10;
				// 第五位
				int e = (i / 10) % 10;
				// 第六位
				int f = i % 10;
				if (a == f && b == e && c == d && (a + b + c + d + e + f) == n) {
					System.out.println(i);
				}
			}else{
				//当i是五位数时
				// 第一位
				int a = (i / 10000) % 10;
				// 第二位
				int b = (i / 1000) % 10;
				// 第三位
				int c = (i / 100) % 10;
				// 第四位
				int d = (i / 10) % 10;
				// 第五位
				int e = i % 10;
				if (a == e && b == d  && (a + b + c + d + e) == n) {
					System.out.println(i);
				}
				
			}
		}
	}
}

BASIC-10

在这里插入图片描述

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String result = "";
		//这里千万不要忘了n=0 的情况少了就扣十分
		if(n==0){
			result="0";
		}
		while (n != 0) {
			char s;
			int a = n % 16;
			if (a > 9) {
				s = (char) ('A' + (a - 10));
			} else {

				s = (char) ('0' + (a - 0));
			}
			result = s + result;
			n = n / 16;
		}
		System.out.println(result);
	}
}

BASIC-11

在这里插入图片描述

import java.util.*;

public class Main {

	public static void main(String[] args) {
		   Scanner in = new Scanner(System.in);  
	        String a = in.nextLine();  
	        //这里需要注意,使用long 是为了防止转换成的十进制数超出了int的范围。
	        //parseLong对字符串参数的解析就是按照这个进制标准进行转化成10进制的数值
	        long b = Long.parseLong(a, 16);  
	        System.out.println(b); 
	}
}

BASIC-12

在这里插入图片描述

import java.util.*;

/*
*这里说明一下,为什么16进制要先转化为2进制再转化为8进制
*题中说了“每个十六进制数长度不超过100000”,这个长度long类型容纳不下,
所以不能先转换成10进制,再转换成8进制,所以这时候需要用到了字符串,先转化为2进制,使用数组来存放各个数据
*/
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// 输入想转化的数的个数
		int n = sc.nextInt();
		// 16进制数转化为2进制之后存入这个数组里
		String[] two = new String[n];
		for (int i = 0; i < n; i++) {
			// 输入想转化的数
			String x = sc.next();
			// 将16进制的数转为2进制存入数组中
			two[i] = toTwo(x);
		}
		for (int i = 0; i < n; i++) {
			System.out.println(toEight(two[i]));
		}
	}

	// 将16进制转化为2进制的方法
	static String toTwo(String sixteen) {
		// 获取16进制数的长度
		int length = sixteen.length();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; i++) {
			// 挨个获取
			switch (sixteen.charAt(i)) {
			case '0':
				sb.append("0000");
				break;
			case '1':
				sb.append("0001");
				break;
			case '2':
				sb.append("0010");
				break;
			case '3':
				sb.append("0011");
				break;
			case '4':
				sb.append("0100");
				break;
			case '5':
				sb.append("0101");
				break;
			case '6':
				sb.append("0110");
				break;
			case '7':
				sb.append("0111");
				break;
			case '8':
				sb.append("1000");
				break;
			case '9':
				sb.append("1001");
				break;
			case 'A':
				sb.append("1010");
				break;
			case 'B':
				sb.append("1011");
				break;
			case 'C':
				sb.append("1100");
				break;
			case 'D':
				sb.append("1101");
				break;
			case 'E':
				sb.append("1110");
				break;
			case 'F':
				sb.append("1111");
				break;
			default:
				break;
			}

		}
		return sb.toString();
	}

	// 将2进制的数转化为8进制 的方法
	static String toEight(String two) {
		int length = two.length();
		//判断长度是不是三的倍数
		if(length%3==1){
			two="00"+two;
		}
		if(length%3==2){
			two="0"+two;
		}
		int k;
		StringBuffer sb = new StringBuffer();
		// 判断出二进制的前三位是否都为0
		if (two.substring(0, 3).equals("000")) {
			k = 3;
		} else {
			k = 0;
		}
		//注意:这里的条件中,不能将two.length() - 2写为length-2,
		//因为在上面判断length是否为3的倍数的时候,改变了他的长度。所以这里也应该是动态的
		for (int i = k; i < two.length() - 2; i += 3) {
			String str = two.substring(i, i + 3);
			if (str.equals("000")) {
				sb.append("0");
			}
			if (str.equals("001")) {
				sb.append("1");
			}
			if (str.equals("010")) {
				sb.append("2");
			}
			if (str.equals("011")) {
				sb.append("3");
			}
			if (str.equals("100")) {
				sb.append("4");
			}
			if (str.equals("101")) {
				sb.append("5");
			}
			if (str.equals("110")) {
				sb.append("6");
			}
			if (str.equals("111")) {
				sb.append("7");
			}

		}

		return sb.toString();
	}

}

BASIC-13

在这里插入图片描述

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		//输入数组的长度
		int n=sc.nextInt();
		int[] a=new int[n];
		//往数组中存放数
		for (int i = 0; i < a.length; i++) {
			a[i]=sc.nextInt();
			
		}
		//Api排序
		Arrays.sort(a);
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i]+" ");
		}	
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blog_xsong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值