蓝桥杯备赛

题型结构

  • 十道题:三道填空题,七道程序设计题。

填空出题点

  • 循环(for,while)
  • 字符串
    • String s=任意类型+"";
    • toCharArray()
    • charAt()
    • split()
    • str.endsWith(str2),判断字符串str的最后一位是否和指定str2相同 
    • substring()
  • 集合
    • List:有序,不重复
    • set:无序,重复
    • map:key-value
循环+字符串
例题1:2019年Java C组第一题

小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 2019 中,所有这样的数的和是多少?

思路:for循环+字符串

    public static void main(String[] args) {
//        记录求得的和
        int sum=0;
        for(int i=1;i<2020;i++){
            String s=i+"";
            char []c=s.toCharArray();

//           得到每一个数字中的每一个元素
            for(int j=0;j<c.length;j++){
                if(c[j]=='2' || c[j]=='0' || c[j]=='1' || c[j]=='9'){
                    sum+=i;
                    break;
                }
            }
        }
        System.out.println(sum);
    }
例题2:2015年Java C组第二题

有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,…

请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。

思路:for循环+字符串

 public static void main(String[] args) {
//      记录符合要求的个数
        int count=0;
//      遍历10000内的每个元素
        for(long i=1;i<=10000;i++){
            String str2=i*i*i+"";
            String str=i+"";
            boolean result=str2.endsWith(str);
            if(result==true){
                count++;
            }
        }
        System.out.println(count);
    }
while循环
例题3:2019年Java C 组第二题

小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。 例如,对于一块两边分别为 5 和 3 的材料(记为 5×3),小明会依次切出 3×3、2×2、1×1、1×1 共 4 个正方形。 现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会 切出多少个正方形?
思路:while循环

public static void main(String[] args) {
//     记录边长
     int length=2019,width=324;
//     记录次数
     int count=0;
     while(true){
         if(length>width){
             count++;
             length-=width;
         }else if(width>length){
             count++;
             width-=length;
         }else{
             count++;
             break;
         }
     }
     System.out.println(count);
    }
例题4:2018年Java C 组第一题

小明被不明势力劫持。后被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。他决定在x星战打工。好心的老板答应包食宿,第1天给他1元钱。并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。
请计算一下,小明在第几天就能凑够108元,返回地球。

思路:while循环

public static void main(String[] args) {
        int day=0;
        int money=1;
        int sum=0;
     while(sum<108){
         day++;
         sum+=money;   //1+3+5+7
         money+=2;     //3
     }
        System.out.println(day);
    }
}
例题5:2018年Java C 组第二题

5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。

第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!

请计算一开始最少有多少个香蕉。

思路:while循环

 public static void main(String[] args) {
//        分析:设最开始有n个香蕉,
//        n%5=1,剩余a=(n-1)/5*4;
//        a%5=2,剩余b=(a-2)/5*4;
//        b%5=3,剩余c=(b-3)/5*4;
//        c%5=4,剩余d=(c-4)/5*4;
//        d%5=0
        int n=1;
        while(true){
            if(n%5==1){
                int a=(n-1)/5*4;
                if(a%5==2){
                    int b=(a-2)/5*4;
                    if(b%5==3){
                        int c=(b-3)/5*4;
                        if(c%5==4){
                            int d=(c-4)/5*4;
                            if(d%5==0 && d>0){
                                break;
                            }}}}}
        n++;
        }
        System.out.println(n);
    }
双层for循环+set集合+字符串
例题6:2019年Java C 组第三题

一个字符串的非空子串是指字符串中长度至少为 1的连续的一段字符组成 的串。例如,字符串aaab有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算本质不同的串的个
数。

请问,字符串0100110001010001 有多少个不同的非空子串?

思路:双层for循环+set集合+字符串

  public static void main(String[] args) {
//        思路:双层循环+set集合去重
        String s="0100110001010001";
        HashSet<String> hs=new HashSet<>();
//        外层循环:i表示开始截取的初始位置
        for(int i=0;i < s.length();i++){
//            内层循环:j表示截取个数
            for(int j = i+1;j<=s.length();j++){
//                存入hashset集合,自动去重效果
                hs.add(s.substring(i,j));
            }
        }
        System.out.println(hs.size());
    }
while循环+list集合
例题7:2019年Java C 组第四题

我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……
请你计算 第 2019 个质数是多少?

思路:while循环+list集合

public static void main(String[] args) {
            //思路:求出每一个质数,存入List集合
            //方法:存储自动有序→while循环+list集合

            //创建有序的集合ArrayList
            ArrayList<Integer> list=new ArrayList<>();
            //先存入素数2
            list.add(2);
           //即素数查找从3开始
            int i=3,j;
            while (list.size()<2020) {
                for(j=2;j<i;j++){
                    //如果可以被除1和本身之外的其他数字整除,直接跳出for循环,进行下一个素数的判定
                    if(i%j==0){
                        break;
                    }
                    }
                //符合要求,存入集合,集合长度自动+1
                if(j>=i){
                    list.add(i);
                }i++;
//           取出集合中第2018个元素
         }
            System.out.println(list.get(2018));
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要熬夜的打工人!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值