大数据实验室23届备战24届蓝桥杯热身赛 答案及注释
难度由简到难
包括
我们对于后端开发中最常用的字符串操作
题目A
//导包Scanner类
import java.util.Scanner;
public class Main {
//主方法
public static void main(String[] args) {
//创建对象Scanner类的对象
Scanner sc=new Scanner(System.in);
//输入x,y
int x= sc.nextInt();
int y= sc.nextInt();
//如果x和y相等 为真 判断通过
if(x==y) System.out.println("Tacit!");
else System.out.println("No Tacit!");
}
}
题目B
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//输入a,b,c
int a= sc.nextInt();
int b= sc.nextInt();
int c= sc.nextInt();
//(int)为强制类型转换 会缺失精度
int output=(int) (a*0.2+b*0.3+c*0.5);
System.out.println(output);
}
}
题目C
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int number= sc.nextInt();
int sum=0;
//双重循环
//外层循环控制有组组数,即多少个括号
//i为第0组,第1组 ... 第i组
//外层循环number次
for (int i = 0; i < number; i++) {
//每一组都有i+1个数,由组数决定,把每一组的数依次加给sum
//内层循环i+1次 由i控制
//i可以看做是第i组
for (int i1 = 0; i1 <= i+1; i1++) {
sum+=i1;
}
}
System.out.println(sum);
}
}
题目D
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n= sc.nextInt();
//提前创建数组 长度为21 21是根据题目所给 因为最多20个数
int x[]=new int[21];
x[1]=0;
x[2]=1;
x[3]=1;
//用循环填满数组
for(int i=4;i<=20;i++){
x[i]=x[i-3]+2*x[i-2]+x[i-1];
}
//直接根据索引找到数据
System.out.println(x[n]);
//也可以采用题目C的方法
}
}
题目E
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//输入n
int n= sc.nextInt();
//从i到n遍历一遍 用循环
//即把i到n都拿出来
for (int i = 1; i <= n; i++) {
//根据题目做一个取余判断
if(i%3==2&&i%5==3&&i%7==2){
System.out.println(i);
}
}
}
}
题目F
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//根据题目写一个二维数组
//第一个[]内为行
//第二个[]内为列
int x[][]=new int[7][2];
for (int i = 0; i < 7; i++) {
for (int i1 = 0; i1 < 2; i1++) {
x[i][i1]= sc.nextInt();
}
}
定义sum数组 长度为7 为了存储7个和
int sum[]=new int[7];
//把每一行的数都加起来
for (int i = 0; i < 7; i++) {
sum[i] = x[i][0] + x[i][1];
}
int count=0,index=0;
//通过遍历不断更新count,把count更新为最大值
//把索引赋值给index
for (int i = 0; i < 7; i++) {
if(sum[i]>count){
count=sum[i];
index=i;
}
}
//判断输出 说出的为索引加一 因为索引是从0开始
if(count>8) System.out.println(index+1);
else System.out.println("0");
}
}
题目G
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//贪心算法,求局部最优解
//我们求最少解,我们假设一次就能刚好跳过去
//第二次就能测出距离
int n = scanner.nextInt();
//距离是1第一次跳1次直接跳过去了
//距离肯定就是1
if (n == 1) {
System.out.println(0);
} else {
//否则要跳一次过去,再跳一下消耗一次小沙,以得知悬崖的距离
System.out.println(1);
}
}
}
题目H
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
char x=sc.next().charAt(0);
char temp='A';
//a为行数
int a=(int)x-64;
//System.out.println(a);
//外层循环控制行数 i为第i行
for (int i = 1; i <= a; i++) {
//内层循环有三个部分
//打印a-i个空格
//打印i个temp 每次打印temp后 temp自加
//打印i-1个temp 每次打印temp后 temp自减
for (int i1 = 1; i1 <= a-i; i1++) {
System.out.print(" ");
}
for (int i2=1;i2<=i;i2++){
System.out.print(temp);
temp++;
}
temp-=1;
for (int i3=1;i3<=i-1;i3++){
temp-=1;
System.out.print(temp);
}
//换行
System.out.println();
}
}
}
题目I
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int number= sc.nextInt();
int x= sc.nextInt();
int b,sum=0;
//遍历
for (int i = 1; i <= number; i++) {
b=i;
//得到每一位 对10取余再取整
while (b!=0){
if (b%10==x){
sum++;
}
b/=10;
}
}
System.out.println(sum);
}
}
题目J
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//方法nextline表示一行一行输入
//在字符串前面加上空格,以便于判定
String text=" "+sc.nextLine();
//System.out.println(text);
//将字符串转化成数组,其中空格也放入数组
char x[]=text.toCharArray();
/*
for (int i = 0; i < x.length; i++) {
System.out.print(x[i]+" ");
}
*/
//假设字符串为空 目的是将得到的首字母加给字符串
String s="";
//遍历字符数组
for (int i = 0; i < x.length; i++) {
//发现了空格 则记录空格后面的字符 将其转化成大写后加给s
if(x[i]==' '){
if(97<=x[i+1])
//用ACILL值判断或者是'A'<'Z'都可
//如果是小写减去32变成大小写后再加给s
s+=(char)(x[i+1]-32);
//已经是大写,直接加给s
else s+=x[i+1];
}
}
System.out.println(s);
}
}