声明:蓝桥杯练习系统中的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]+" ");
}
}
}