蓝桥杯JAVA组考前冲刺班题解记录(3.15)——成绩统计+排列字母+纸张尺寸

第一题、成绩统计

题目内容如下

 题目分析:

本题是一个十分基础的题目,我们需要做的是从键盘输入一个小于10000的整数,所以在定义这个整数的时候我们可以使用int来进行定义;我们需要输入整数,所以我们就需要使用到util包中的Scanner,在程序中的使用方法为:先使用

Scanner sc=new Scanner (System.in);

来定义一个使用了输入的类型,代码中的sc是可以被替换成任意字母的,我们在本题中输入的都是整数,所以我们先输入代表着成绩数量的整数

int n=sc.nextInt();

然后我们就可以开始循环,写入成绩(其中的的每个成绩都已经说了是整数,所以我们就直接将输入的成绩定义为整数就可以)

for(int i=1;i<=n;i++)
{
int gde=sc.nextInt();

}

然后再在这个for循环中,我们就可以用题目给出的条件进行判断,看题目中给出的要求:

所以在for循环前我们就还需要定义两个值来分别存放优秀的人数和几个的人数,但是我们需要注意的一个隐藏条件是:优秀的人一定是及格的。所以整体代码及解析如下

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);//调用Scanner
        int n=sc.nextInt();//输入的成绩个数一定是整数
        float jg=0,yx=0;//及格或是优秀的人数一定是整数,但是我们需要计算的及格率或是优秀率不一定
        for(int i=1;i<=n;i++)//输入的成绩个数是n个
        {
          int gde=sc.nextInt();//题目中说过输入的成绩是整数
          if(gde>=60)//判断及格的条件
          {
            jg++;//及格的人数+1
          if(gde>=85)判断优秀的条件
          {
            yx++;优秀的人数+1
          }
          } 
        }
        float jgl=jg*100/n;//用及格的人数除以总人数再乘以100%就得到及格率
        float yxl=yx*100/n;//用优秀的人数除以总人数再乘以100%就得到优秀率
        System.out.println(Math.round(jgl)+"%");/*输出及格率,但是及格题目中要求我们四舍五入,此处使用的方法是Math.round();还有很多的方法,比如加上0.5再用int强行转为整数*/
        System.out.println(Math.round(yxl)+"%");//输出四舍五入后的优秀率
       
    }
}

使用float进行定义保证了出现小数的时候的正确

 

 第二题、排列字母

这个题同样简单,在java中无法对String类直接排序,所以需要将String转换,再用Arrays.sort();来进行 排序,本题的解题代码如下

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S=sc.nextLine();
		    char[] s=S.toCharArray();
		    Arrays.sort(s);
		    System.out.print(s);
    }
}

然后输入:WHERETHEREISAWILLTHEREISAWAY

得到结果:

本题是填空题,所以我们只要在答题处输出结果即可

 本题结束

 第三题、纸张尺寸

本题的解法有两种,一种是直接根据输入的是A*得到A*对应的纸张尺寸,另一种方法是通过建立循环然后再得到输出。详细的解题步骤如下

解法一:直接输出利用switch

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
		String x=sc.nextLine();
		switch(x)
		{
		case"A0": 
			System.out.println("1189");
			System.out.println("841");
			break;
		case"A1": 
			System.out.println("841");
			System.out.println(1189/2);
			break;
		case"A2": 
			System.out.println(1189/2);
			System.out.println(841/2);
			break;
		case"A3": 
			System.out.println(841/2);
			System.out.println(1189/2/2);
			break;
		case"A4": 
			System.out.println(1189/2/2);
			System.out.println(841/2/2);
			break;
		case"A5": 
			System.out.println(841/2/2);
			System.out.println(1189/2/2/2);
			break;
		case"A6": 
			System.out.println(1189/2/2/2);
			System.out.println(841/2/2/2);
			break;
		case"A7": 
			System.out.println(841/2/2/2);
			System.out.println(1189/2/2/2/2);
			break;
		case"A8": 
			System.out.println(1189/2/2/2/2);
			System.out.println(841/2/2/2/2);
			break;
		case"A9": 
			System.out.println(841/2/2/2/2);
			System.out.println(1189/2/2/2/2/2);
			break;
		}
    }
}

直接分别通过得到的输入值直接输出对应纸张的大小,但是要注意的是我们要先输出长边,在输出短边。这样的方法较为直白,本题的种类不多,所以可以很轻松的写出来,但是当纸的尺寸还要小很多倍的话,就不是那么的方便了,所以我们就还有第二种方法,让人的输出变为电脑的输出,具体的代码实现如下:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
		int x2=sc.next().charAt(1)-'0';//将输入的字符转为数值注意后面的“ -‘0’ ”不可省略
		int a=1189,b=841;//定义初始值
		for(int i=0;i<x2;i++)//建立循环,从0开始一共有x2次;每进行一次运算其对应的长边的值和短边的值都会发生改变
		{
			a/=2;//每次循环都用长边除以2
			if(a<b)//要是长边除以2后小于短边,则需要进行长短边的交换
			{
				int c=a;//java中的两数交换不可以直接进行交换,需要定义第三个值,将原本的第一个放到第三个值中
				a=b;//将原本的第二个值放到已经空了的第一个值中
				b=c;//将第三个值放到原本的第二个值中
			}
		}
		System.out.println(a);//输出长边的值
		System.out.println(b);//输出短边的值
    }
}

 这就是3月15日考前突击班作业的内容,欢迎大家再评论区交流更好的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值