蓝桥杯 - 基础练习 java

VIP题没做qwq~ 没得money!

注意!注意!注意!

以下题目在蓝桥杯里全部都是满分通过。

class类,必须命名为Main!

class类,必须命名为Main!

class类,必须命名为Main!

例:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
    }
}

BASIC-01

A+B问题

问题描述

输入A、B,输出A+B。

说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。

import java.util.Scanner;

public class BASIC01 {
//    输入A、B,输出A+B。
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int A = scanner.nextInt();
    int B = scanner.nextInt();
    System.out.println(A+B);
}
}

BASIC-13

数列排序

 问题描述

  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

import java.util.Scanner;

public class BASIC13 {
//     给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
//    创建一个arr的数组
    int[] arr = new int[n];
//    arr数组赋值
    for (int i = 0; i < n; i++) {
        arr[i] = scanner.nextInt();
    }
//    排序
    for (int i = 0; i < n; i++) {
        for (int j = i+1; j < n; j++) {
            if (arr[i]>arr[j]) {
                int T = arr[i];
                arr[i] = arr[j];
                arr[j] = T;
            }
        }
    }
//    打印
    for (int i = 0; i < n - 1; i++) {
        System.out.print(arr[i]+" ");
    }
//    打印最后一个,取消空格
    System.out.print(arr[n-1]);
}
}

BASIC-12

十六进制转八进制

问题描述

  给定n个十六进制正整数,输出它们对应的八进制数。

import java.math.BigInteger;
import java.util.Scanner;

public class BASIC12 {
//    给定n个十六进制正整数,输出它们对应的八进制数。
public static void main(String[] args) {
    Scanner scanner =new Scanner(System.in);
//    n 来定义个数
    int n =scanner.nextInt();
//    创建 c的数组
    String[] c = new String[n];
//    赋值
    for (int i = 0; i < n; i++) {
        c[i] = scanner.next();
    }
//    打印
    for (int i = 0; i < n; i++) {
        System.out.println(new BigInteger(c[i],16).toString(8));
    }

}

}

BASIC-11

十六进制转十进制

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

public class BASIC11 {
//      从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
//       注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        String c = scanner.next();
        System.out.println(new BigInteger(c,16).toString(10));
    }
}

BASIC-10

十进制转十六进制

问题描述

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。

import java.math.BigInteger;
import java.util.Locale;
import java.util.Scanner;

public class BASIC10 {
//    十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,
//    分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
//    给出一个非负整数,将它表示成十六进制的形式。
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        String c = scanner.next();
        System.out.println(new BigInteger(c,10).toString(16).toUpperCase(Locale.ROOT));
    }
}

解释一下BigInteger

原文链接蓝桥杯: 给定n个十六进制正整数,输出它们对应的八进制数。_balder_girl的博客-CSDN博

BASIC-9

特殊回文数

问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

import java.util.Scanner;

public class BASIC9 {
//      123321是一个非常特殊的数,它从左边读和从右边读是一样的。
//       输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
//        五位数遍历
        for (int i = 10000; i < 100000; i++) {
            int a = i/10000;//万位
            int b = i%10000/1000;//千位
            int c = i%1000/100;//百位
            int d = i%100/10;//十位
            int e = i%10;//个位
            if(a==e&&b==d&&a+b+c+d+e==n) System.out.println(i);
        }
//        六位数遍历
        for (int j = 100000; j < 1000000; j++) {
            int a = j%10;//个位
            int b = j%100/10;//十位
            int c = j%1000/100;//百位
            int d = j%10000/1000;//千位
            int e = j%100000/10000;//万位
            int f = j/100000;//十万位
            if(a==f&&b==e&&c==d&&a+b+c+d+e+f==n) System.out.println(j);
        }
    }
}

BASIC-8

回文数

问题描述

  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

public class BASIC8 {
//    1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
    public static void main(String[] args) {
        for (int i = 1000; i < 10000; i++) {
            int a = i/1000;//万位
            int b = i%1000/100;//白位
            int c = i%100/10;//十位
            int d = i%10;//个位
            if(a==d && b==c) System.out.println(i);
        }
    }
}

BASIC-7

特殊的数字

问题描述

  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。

public class BASIC7 {
//    153是一个非常特殊的数,它等于它的每位数字的立方和,
//    即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
public static void main(String[] args) {
    for (int i = 100; i < 1000; i++) {
        int a = i%10; //个位
        int b = i/10%10; //十位
        int c = i/100; //百位
        if (a*a*a+b*b*b+c*c*c == i) System.out.println(i);
    }
}
}

BASIC-6

杨辉三角形

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

1

1 1

1 2 1

1 3 3 1

给出n,输出它的前n行。

public class BASIC6 {
//    杨辉三角形
//    一共用了两种方法
public static void main(String[] args) {
    BASIC6 basic6 = new BASIC6();
//    basic6.d2();  或者 basic6.d1(); 调用
    basic6.d2();
}

public void d2(){
//    第二种方法
    Scanner scanner = new Scanner(System.in);
    int row = scanner.nextInt();
    int[][] arr = new int[row][];
    for (int i = 0; i < row; i++) {
        arr[i] = new int[i+1];
        for (int j = 0; j <= i; j++) {
            if (j == 0 || j == i){
                arr[i][j] = 1;
            }else{
                arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
            }
            System.out.print(arr[i][j]);
        }
        System.out.println();
    }
}


public void d1() {
//    第一种方法
    Scanner scanner =new Scanner(System.in);
    int n = scanner.nextInt();
    int[][] a = new int[n][n];
    for (int i = 0; i < n; i++) {
        //    边缘先改为1
        a[i][0] = a[i][i] = 1;
//        不是边缘的用前排的两个相加,计算下一个
        if (i>0){
            for (int j = 1; j < i; j++) {
                a[i][j] = a[i-1][j-1] + a[i-1][j];
            }
        }
//        遍历
        for (int k = 0; k <= i; k++) {
            System.out.print(a[i][k]+" ");
        }
//        换行回车
        System.out.println();
    }
}
}

BASIC-5

查找整数

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

import java.util.Scanner;

public class BASIC5 {
//    给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
//        定义n个 arr数组
        int[] arr = new int[n];
//        挨个赋值
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();
        }
//        f为计数
        int f=0;
        int a = scanner.nextInt();
        for (int i = 0; i < n; i++) {
            f++;
//            找到a的时候输出f记述,并直接结束程序
            if (arr[i] == a) {
                System.out.println(f);
                return;
            }
//            如果a不在数列中,那就输出-1
            if (f==n){
                f=-1;
                System.out.println(f);
                return;
            }
        }
    }
}

BASIC-4

数列特征

问题描述

给出n个数,找出这n个数的最大值,最小值,和。

import java.util.Scanner;

public class BASIC4 {
//    给出n个数,找出这n个数的最大值,最小值,和。
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int max = 0;
    int sum = 0;
//    赋一个输入的值
    int min = max = sum = scanner.nextInt();
//    从第二个开始循环
    for (int i = 1; i < n; i++) {
        int a = scanner.nextInt();
//        相加
        sum = a + sum;
//        找出最大值
        if (max < a) max = a;
//        找出最小值
        if (min > a) min = a;
    }
//    打印
    System.out.println(max);
    System.out.println(min);
    System.out.println(sum);
}
}

BASIC-3

字母图形

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

import java.util.Scanner;

//    一共写了两张方法

public class BASIC3 {
//    利用字母可以组成一些美丽的图形,下面给出了一个例子:
//    ABCDEFG
//    BABCDEF
//    CBABCDE
//    DCBABCD
//    EDCBABC
//    这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
public static void main(String[] args) {
    BASIC3 basic3 =new BASIC3();
//    basic3.nb1(); 或者 basic3.nb2();切换方法
    basic3.nb1();
}

public void nb2() {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();//行
    int m = sc.nextInt();//列
    char c = 'A';
    int i = 0;
    while (i < n) {
        char d = c;
        int k = -1;
        for (int j = 0; j < m; j++) {
            if (j == 0)
                System.out.print(d);
            else {
                if (d == 'A')
                    k = 1;
                d = (char) (d + k);
                System.out.print(d);
            }

        }
        System.out.println();

        i++;
        c++;
    }
}

public void nb1() {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int m = scanner.nextInt();
    int f = -1;
    for (int i = 0; i < n; i++) {
        f++;
//        打印减少的
//        j<m 是为了防止后面多出来的
        for (int j = 0; j < f && j < m; j++) {
            System.out.print((char)(65+f-j));

        }
//        打印增加的
        for (int j = 0; j < m-f; j++) {
            System.out.print((char) (65+j));
        }
        System.out.println();
    }
}
}

BASIC-2

01字串

问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

public class BASIC2 {
//    问题描述
//    对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
//            00000
//            00001
//            00010
//            00011
//            00100
//    请按从小到大的顺序输出这32种01串。
    public static void main(String[] args) {
        for (int i = 0; i < 2; i++)
        for (int j = 0; j < 2; j++)
        for (int k = 0; k < 2; k++)
        for (int m = 0; m < 2; m++)
        for (int n = 0; n < 2; n++) System.out.println(""+i+j+k+m+n);
    }
}

BASIC-1

闰年判断

问题描述

给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年:

1. 年份是4的倍数而不是100的倍数;

2. 年份是400的倍数。

其他的年份都不是闰年。

import java.util.Scanner;

public class BASIC1 {
//    问题描述
//    给定一个年份,判断这一年是不是闰年。
//    当以下情况之一满足时,这一年是闰年:
//    1. 年份是4的倍数而不是100的倍数;
//    2. 年份是400的倍数。
//    其他的年份都不是闰年。
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
        if (year % 4 == 0 && year % 100 != 0){
            System.out.println("yes");
        }else if (year % 400 == 0){
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
    }
}

BASIC-04

Fibonacci数列

问题描述

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

import java.util.Scanner;

public class BASIC04 {
//    问题描述
//    Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
//    当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        if (n == 0){
            System.out.println(0);
            return;
        }
        int sum = 1;
        int b = 1;
        int t = 0;
        for (int i = 3; i <= n; i++) {
            t=sum;
            sum = (sum + b)%10007;
            b = t;
        }
        System.out.println(sum%10007);
    }
}

BASIC-03

圆的面积

问题描述

给定圆的半径r,求圆的面积。

import java.util.Scanner;

public class BASIC03 {
//    问题描述
//    给定圆的半径r,求圆的面积。
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int r = scanner.nextInt();
//        Math.PI,就是Π
        System.out.printf("%.7f",(r*r)*Math.PI);
    }
}

BASIC-02

序列求和

问题描述

求1+2+3+...+n的值。

import java.util.Scanner;

public class BASIC02 {
//    问题描述
//    求1+2+3+...+n的值。
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        long sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值