蓝桥杯练习第一天day1

    科技2022-07-14  130

    蓝桥杯练习第一天day1

    1、字母图形

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

    ABCDEFG

    BABCDEF

    CBABCDE

    DCBABCD

    EDCBABC

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

    package lanqiao; import java.util.Scanner; public class test_01_字母图形 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(), m = sc.nextInt(); char[][] array = new char[n][m]; for(int j=0;j<n;j++) { for (int i = 0; i < m; i++) { int k=j; int t=i; for(int y=0;y<26;y++){ if(k==(t+y)||t==(k+y)){ array[j][i]=(char)('A'+y); } } } } for (int j=0;j<n;j++){ for(int i=0;i<m;i++){ System.out.print(array[j][i]); } System.out.println(); } } }

    2、 整商问题

    要求:  提示用户输入被除数(dividend)和除数(divisor),若除数为0,则提示用户重新输入,直至除数非零为止。最后输出商。程序建议大家将被除数、除数和商都定义为整形。   输入被除数提示语句为:Please enter the dividend:   输入除数提示语句为:Please enter the divisor:   提示除数为0需要重新输入的语句为: Error: divisor can not be zero! Please enter a new divisor:   建议:大家直接复制上述语句,以免出现不必要的错误。

    package lanqiao; import java.util.Scanner; public class test_02_整商问题 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Please enter the dividend:"); int dividend = sc.nextInt(); System.out.println("Please enter the divisor:"); int divisor = sc.nextInt(); int ans = 0; //除數不為0 if (divisor != 0) { ans = dividend / divisor; } //除數為0 while (divisor == 0) { System.out.println("Error: divisor can not be zero! Please enter a new divisor:"); divisor = sc.nextInt(); if (divisor != 0) { ans = dividend / divisor; } } System.out.println(ans); } }

    3、小写转换为大写

    要求:输入一个小写字母,转换成大写字母。

    package lanqiao; import java.io.IOException; public class lowtoupper { public static void main(String[] args) { try { char c = (char) System.in.read(); int shu = (int) c; char ans = (char) (shu - 32); System.out.println(ans); } catch (IOException e) { e.printStackTrace(); } } }

    3、数字分组

    要求: 输入任意10个浮点数,根据它们的聚集程度划分为3组,输出每一组的平均值。   提供老师上课讲的一种思路:将10个数字进行在数轴上排序,然后计算每两个点间的距离,在所有的距离中选取两个最大距离处断开,这样就把10个数字分为了3组。   本题难度较大,如果深入讨论会比较复杂,大家可以只考虑如下面样例所示的分组情况非常简单的情况,只要简单情况能够成功计算,本题就能得分。   另外,本题内容有些超前,推荐大家自学一下数组那一章中第一节一维数组,然后使用一维数组来做。排序算法可以参考trustie平台上传的冒泡排序法参考资料。

    package lanqiao; import java.util.Scanner; public class test_06_數字分組 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); float[] a = new float[10]; for (int i = 0; i < 10; i++) { a[i] = sc.nextFloat(); } //将原来的数值进行冒泡排序 for (int i = 0; i < a.length - 1; i++) { // 外层循环 控制数组需要几次冒泡排序 for (int j = 0; j < a.length - i - 1; j++) {// -i:最后一位固定下次不用再参加排序。-1:防止if中j+1的脚标越界。 if (a[j] > a[j + 1]) { float temp = 0; temp = a[j + 1]; a[j + 1] = a[j]; a[j] = temp; } } } float[] len = new float[10];//定义一个数组存放两个数之间的距离 for (int i = 0; i < 9; i++) { len[i] = a[i + 1] - a[i]; } jueduizhi(len);//将距离全部变为正的 //对所有点之间的距离进行冒泡排序,方便观察最大值 for (int i = 0; i < len.length - 1; i++) { // 外层循环 控制数组需要几次冒泡排序 for (int j = 0; j < len.length - i - 1; j++) {// -i:最后一位固定下次不用再参加排序。-1:防止if中j+1的脚标越界。 if (len[j] > len[j + 1]) { float temp = 0; temp = len[j + 1]; len[j + 1] = len[j]; len[j] = temp; } } } //定义按个数组存放分开后的数值 float[] b1 = new float[10]; float[] b2 = new float[10]; float[] b3 = new float[10]; int[] count = new int[a.length];//用于存放所需的下标索引 for (int i = 0; i < a.length - 1; i++) { //如果两店之间的距离是最大的或者是第二大的 if ((a[i + 1] - a[i]) == len[len.length - 1] || (a[i + 1] - a[i]) == len[len.length - 2]) { count[i] = i; } } //用于统计数组的数值个数 int count1 = 0; int count2 = 0; int count3 = 0; for (int i = 0; i <= count[2]; i++) { b1[i] = a[i]; count1 ++; } for (int i = count[2]+1; i <= count[5]; i++) { b2[i] = a[i]; count2 ++; } for (int i = count[5]+1; i < a.length; i++) { b3[i] = a[i]; count3 ++; } System.out.println(pinjun(b1,count1)); System.out.println(pinjun(b2,count2)); System.out.println(pinjun(b3,count3)); } public static void jueduizhi(float[] a) { for (int i = 0; i < a.length; i++) { if (a[i] < 0) { a[i] = -a[i]; } } } public static float pinjun(float[] a, int count) { float sum = 0; float avg = 0; for (int i = 0; i < a.length; i++) { sum = sum + a[i]; } avg = sum / count; return avg; } }
    Processed: 0.013, SQL: 8