蓝桥杯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小时内删除。