蓝桥杯2022年java试题基础练习⼀:基础练习:
(本⽂只附代码,解析后续修改后添上)
1.a+b问题:
代码如下:
1 1 import java.util.*;
2 2 public class Main {
3 3 public static void main(String args[]) {
4 4 int a,b;
5 5
6 6 Scanner input = new Scanner(System.in);
7 7 a = Int();
8 8 b = Int();
9 9
10 10 System.out.println(a+b);
11 11 }
12 12 }
View Code
2.序列排序问题:
代码如下:
1 1 import java.util.Arrays;
2 2 import java.util.Scanner;
3 3
4 4 public class Main {
5 5 public static void main(String[] args) {
6 6 Scanner scanner = new Scanner(System.in);
7 7 int n = Int();
8 8 int[] arr = new int[n];
9 9 //往数组添加元素,接收数据
10 10 for (int i = 0; i < n; i++) {
11 11 arr[i] = Int();
12 12 }
13 13
14 14 //对数组排序
15 15 Arrays.sort(arr);
16 16
17 17 //打印数组
18 18 for (int i = 0; i < n; i++) {
19 19 System.out.print(arr[i] + " ");
20 20 }
21 21 }
22 22 }
View Code
3.⼗六进制转⼋进制:
代码如下:
1import java.util.Scanner;
2public class Main {
3public static void main(String[] args) {
4 Question1();
5
6 }
7public static void Question1() {
8 Scanner in = new Scanner(System.in);
9int n = Integer.Line());
10int i, j;
11 String[] sz = new String[n];
12//读⼊⼗六进制数
13for (i = 0; i < n; i++) {
14 sz[i] = in.next();
15 }
16for(i = 0; i < sz.length; i++) {
17 String s = sz[i];
18 StringBuilder sb = new StringBuilder();
19//将⼀位⼗六进制数转换为四位⼆进制数 20for(j = 0; j < s.length(); j++) {
21switch(s.charAt(j)) {
22case '0':
23 sb.append("0000");
24break;
25case '1':
26 sb.append("0001");
27break;
28case '2':
29 sb.append("0010");
30break;
31case '3':
32 sb.append("0011");
33break;
34case '4':
35 sb.append("0100");
36break;
37case '5':
38 sb.append("0101");
39break;
40case '6':
41 sb.append("0110");
42break;
43case '7':
44 sb.append("0111");
45break;
46case '8':
47 sb.append("1000");
48break;
49case '9':
50 sb.append("1001");
51break;
52case 'A':
53 sb.append("1010");
54break;
55case 'B':
56 sb.append("1011");
57break;
58case 'C':
59 sb.append("1100");
60break;
61case 'D':
62 sb.append("1101");
63break;
64case 'E':
65 sb.append("1110");
66break;
67case 'F':
68 sb.append("1111");
69break;
70 }
71 }
72//再将⼆进制数转换成⼋进制数
73 transform(sb);
74 }
75
76 }
equals不等于77public static void transform(StringBuilder sb) { 78int num = sb.length() % 3;
79//判断长度是否为3的倍数
80switch(num) {
81case 0:
82//若转换的⼋进制数中第⼀位为0则删去 83if(sb.substring(0, 3).equals("000"))
84 sb.delete(0, 3);
85break;
86case 1:
87if(sb.substring(0, 1).equals("0"))
88 sb.delete(0, 1);
89else sb = sb.insert(0, "00");
90break;
91case 2:
92if(sb.substring(0, 2).equals("00"))
93 sb.delete(0, 2);
94else sb = sb.insert(0, "0");
95break;
96 }
97 StringBuilder res = new StringBuilder();
98int len = sb.length();
99 String[] new_s1 = new String[len/3];
100//取三位转换成⼋进制数
101for(int i = 0; i < len/3; i++) {
102int tmp = Integer.parseInt(sb.substring(i * 3, i * 3 + 3), 2); 103 res.append(tmp);
104 }
105 System.out.println(res);
106 }
107 }
View Code
4.⼗六进制转⼗进制:
代码如下:
1import java.util.Scanner;
2public class Main {
3public static void main(String[] args) {
4 Scanner scanner = new Scanner(System.in);
5 String string = Line();
6 System.out.print(Long.parseLong(string, 16));
7 }
8 }
View Code
5.⼗进制转⼗六进制:
代码如下:
1import java.util.Scanner;
2public class Main {
3public static void main(String[] args) {
4 Scanner input = new Scanner(System.in);
5 Int());
6
7 }
8
9public static void one(int a){
10int b;
11if(a<=15) {
12 tohax(a);
13// System.out.print(a);
14
15 }
16else{
17 b=a%16;
18 one(a>>4);
19 tohax(b);
20// System.out.print(b);
21 }
22 }
23public static void tohax(int c){
24switch (c){
25default:
26 System.out.print(c);
27break;
28
29case 10:
30 System.out.print("A");
31break;
32case 11:
33 System.out.print("B");
34break;
35case 12:
36 System.out.print("C");
37break;
38case 13:
39 System.out.print("D");
40break;
41case 14:
42 System.out.print("E");
43break;
44case 15:
45 System.out.print("F");
46break;
47
48 }
49 }
50 }
View Code
6.特殊的回⽂数:
代码如下:
1import java.util.Scanner;
2
3public class Main {
4final static byte one = 1;//常量1.
5final static byte two = 2;//常量2.
6final static byte ten = 10;//常量10;
7
8//输⼊:正整数n。
9
10
11//输出:y⾏,每⾏为⼀个回⽂数。
12/*
13 * 格式:回⽂数每个数的和都为n
14 * 从左读和从右读是⼀样的,所以是关于y轴对称。
15 * 数据⼤⼩:10001-999999。n的⼤⼩为2-54.
16 * 5位的是2-45,6位的是2-54.
17 * 要求:10进制,五位到六位的所有正整数。
18 * 从⼩到⼤输出结果。
19 * */
20
21//程序如下:
22//1.输⼊正整数n。
23//2.判断是否是偶数,不是,则说明⼀定是5位。
24//3.判断是否⼩于45,不是,则说明⼀定是6位。
25//4.求5位。输出结果
26//5. 求6位。输出结果
27public static void main(String[] args) {
28
29 Scanner input = new Scanner(System.in);
30byte in = Byte(); //获取到输⼊到2-54的⼀个正整数。
31
32if (in % two != 0) {
33 askfive(in);//不是偶数,就只求5位
34 } else if (in > 45) {
35 asksix(in);//⼤于45,就只求6位。
36 } else {//都不是,就要求5位和6位。
37 askfive(in);
38 asksix(in);
39 }
40 }
41
42public static void askfive(byte in) {
43//求5位数。
44//先确定第⼀位最⼩值存不存在。
45for (int i = one; i <ten ; i++) {//第⼀位
46for (int j = 0; j <ten ; j++) {//第⼆位
47final int i0 = in - two * i - two * j;
48if (i0 < ten&&i0>=0) {//求第⼀位等于第五位,第⼆位等于第四位,第三位是否满⾜⼩于10的要求的数存在。
49 System.out.println(i+""+j+""+i0+""+j+""+i);
50
51 }
52 }
53 }
54 }
55
56public static void asksix(byte in) {
57//求6位数。
58//先确定第⼀位最⼩值存不存在。
59for (int i = one; i <ten ; i++) {//第⼀位数
60for (int j = 0; j <ten ; j++) {//第⼆位数
61final int i1 = (in - two * i - two * j) / two;
62if (i1 < ten&&i1>=0) {//第三位数成⽴
63 System.out.println(i+""+j+""+ i1 +""+ i1 +""+j+""+i);
64 }
65
66 }
67
68 }
69 }
70
71 }
View Code
7.回⽂数:
代码如下:
1public class Main {
2
3/*
4 * 输⼊:⽆
5 * 输出:回⽂数
6 * 格式要求:长度是四位的⼗进制数。关于y轴对此,第⼀位等于第四位,第⼆位等于第三位。
7 * 范围是1001-9999.
8 * 要求:从⼩到⼤。
9 * */
10
11
12//编程思路:
13//1.从第⼀位为1,第⼆位为0,开始循环。
14//2、输出所有这样的数。
15
16
17public static void main(String[] args) {
18for (int i = 1; i <10 ; i++) {//第⼀位
19for (int j = 0; j < 10; j++) {//第⼆位
20 System.out.println(i+""+j+""+j+""+i);
21 }
22 }
23 }
24 }
View Code
8.特殊的数字:
代码如下:
1public class Main {
2final static byte ten = 10;//常量10;
3final static byte three = 3;//常量3;
4
5
6/*
7 * 输⼊:⽆
8 * */
9
10/*
11 * 输出:n⾏,三位的⼗进制
12 * 格式要求:从⼩到⼤。
13 * */
14
15
16//程序思路:
17//1、范围是从100-999.⽽根据⽴⽅根来推断,如果从⽴⽅根下⼿,最⼩要从105(1+125>100)开始循环,最⼤到962(8+216+729<999) 18// 2.对三个数循环,求和,判断是否等于⾃⼰的10进制。
19// 3.输出所有相等的数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论