「蓝桥杯跳跃题解Java」蓝桥杯训练题

博主:adminadmin 2022-12-01 02:50:05 49

本篇文章给大家谈谈蓝桥杯跳跃题解Java,以及蓝桥杯训练题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

蓝桥杯往年本科java试题。。。 非常感谢

一、单选题目(主要考擦java基础知识 好像25道)

1、String与StringBuffer区别 如:

2、final中的return switch中的break和return 执行的顺序和执行结果

3、for; do...while(); while()....do;循环的执行过程 涵盖 、 -- 的考核

4、循环中的break与continue

5、数组的定义:如:

有如下数组:

byte[] array1,array2[]

byte array3[][]

byte[][] array4

假设每个变量都已初始化,一下哪一条语句会导致编译错误?

A、array2 = array1; B、array2 = array3; C、array2 = array3;

D、A并且B ; E、A并且C ; F、B并且C ;

6、执行一下代码后,哪个结论是正确的?

A、s[10]为""; B、s[9]为null;

C、s[0]为未定义; D、s.length()为10;(详见《Java习题语言习题与解析》一书。P46)

7、构造函数定义的考核、继承、多态(文字描述的判断)

8、递归函数程序的考核,选择输出结果

9、静态成员,与非静态成员

10、函数重载(在多选里也出现、主要是选择哪个跟哪个构成重载,或否)

11、final static 的考核:如

A、static class TT{}

B、private class TT{}

C、abstract class TT{}

D、final public class TT{}

E、final abstract class TT{}

12、String对象分析一下程序:

public class X{

public static void main(String[] args){

String s = new String("Hello");

modify(s);

System.out.println(s);

}

public static void modify(String s){

s = " world!";

}

}

该程序执行结果为:

A、编译成功,执行后输出:“Hello”

B、编译失败

C、编译成功,执行后输出"Hello word!"

D、编译成功,执行后引起异常

答案:A

13、静态方法构造方法 重载函数 覆盖的定义

14、文件操作

15、线程???(记不清)

二、多选题(五道)

1、重载:指出下列哪些方法与方法public void add(int a){}重载()

A、public int add(int a)

B、public void add(long a)

C、public void add(int a,int b)

D、public void add(float)

2、内部类与static

下面哪几种陈述是成立的?

A、一个内部类可声明为静态的

B、一个匿名内部类可声明为私有的

C、一个匿名内部类可声明为公共的

D、一个匿名内部类可声明可以继承一个抽象类

E、一个匿名内部类可声明为保护型

答案:AB

3、内部类的声明:

下面哪两个内部类的声明是合适的?

1.public class OuterClass{

private double d1 = 1.0;

//插入内部类代码

}

A、static class InnerOne{

public double methoda(){return d1;}

}

B、static class InnerOne{

static double methoda(){return d1;}

}

C、private class InnerOne{

public double methoda(){return d1;}

}

D、protected class InnerOne{

static double methoda(){return d1;}

}

E、public abstract class InnerOne{

public abstract double methoda(){return d1;}

}

答案:CE

在静态方法中不能访问静态成员,D也是静态方法中反问非静态成员。

4、下列陈述对默认的构造方法是成立的?

A、默认的构造方法为方法变量进行初始化

B、编译程序会为每一个类创建默认的构造方法

C、默认的构造方法调用其超类的无参数构造方法

D、默认的构造方法初始化在类中声明的实例变量

E、当一个仅有带参数的构造方法时,编译程序不会给这个类创建默认的构造方法

F、当一个类没有其他构造方法时,编译程序才为其创建默认的构造方法

答案:DEF

5、一道关于多态的选择题

三、填空题 5道

填空题,主要学会察API,开始会有API提供,可以进行运行调试。

1、文件操作、IO流的操作

2、重写父类方法

3、从API找方法,实现功能。(具体题目忘了)

4、接口???

5、。。。。

四、代码完善题

这道题,要规范的按照题目要求来做,

题目大概是这样:要求对26个字母实现,这样的运算

1、对26个字母求补集

2、对两个集合(都是字母) 求交集

3、求并集、求并集分两种:第一、把两个相加,第二、把两个重复出现的删除,

4、求差集,两个集合,或者是,一个集合对全集26个字母求差集。

蓝桥杯算法训练 java算法 表达式求值

这两天看到的内容是关于栈和队列,在栈的模块发现了Dijkstra双栈算术表达式求值算法,可以用来实现计算器类型的app。

编程语言系统一般都内置了对算术表达式的处理,但是他们是如何在内部实现的呢?为了了解这个过程,我们可以自行搭建一套简易的算术表达式处理机制,这里就用到栈特性和本篇提到的Dijkstra算法。

概述:

算术表达式可能是一个数、或者是由一个左括号、一个算术表达式、一个运算符、另一个算术表达式和一个右括号组成的表达式。为了简化问题,这里定义的是未省略括号的算术表达式,它明确地说明了所有运算符的操作数,形式如下:

(1+((2+3)*(4*5)))

思路:

表达式由括号、运算符和操作数构成,我们根据以下4中情况从左至右逐个将这些实体送入栈处理:

1.将操作数压入操作数栈;

2.将运算符压入运算符栈;

3.忽略左括号;

4.在遇到右括号时,弹出一个运算符,弹出所需数量的操作数,并将运算后的结果压入操作数栈;

在处理完最后一个右括号时,操作数栈上只会剩下一个值,它就是表达式的计算结果。这种方法咋一看难理解,但要证明它能计算得到正确的值很简单:

每当算法遇到一个括号包围,并由一个运算符和两个操作数组成的子式时,他都将运算符和操作数运算结果压入操作数栈。这样的结果就像是在输入中用这个值代替了该子表达式,因此用这个值代替子表达式得到的结果和原表达式相同。我们可以反复应用这个规律并得到一个最终值。

例如:

(1+((2+3)*(4*5)))

(1+(5*(4*5)))

(1+(5*20))

(1+100)

101

代码实现:

这里我采用C#来实现,最终运行效果完全符合预期,证明了此算法的正确性,代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

namespace Evaluate

{

class Program

{

static void Main(string[] args)

{

string testExpress = "(1+((2+3)*(4*5)))";

Console.WriteLine(Evaluate(testExpress));

}

//DijkStra

static double Evaluate(string express)

{

var expressChars = express.ToArray();

Stack ops = new Stack();

Stack vals = new Stack();

if (express.Length 0)

{

foreach (var opt in expressChars)

{

switch (opt)

{

case '+':

case '-':

case '*':

case '/':

ops.Push(opt);

break;

case ')':

var op = ops.Pop();

var v = vals.Pop();

switch (op)

{

case '+':

v += vals.Pop();

break;

case '-':

v = vals.Pop() - v;

break;

case '*':

v *= vals.Pop();

break;

case '/':

v = vals.Pop() / v;

break;

}

vals.Push(v);

break;

case ' ':

case '(':

break;

default:

vals.Push(double.Parse(opt.ToString()));

break;

}

}

return vals.Pop();

}

return double.MaxValue;

}

}

}

总结:

Dijkstra算法充分利用了栈的特性,具备较高的执行效率,经过进一步的扩充修改,就完全可以实现具备科学计算功能的复杂计算类app。如果大家还有更好的,更适用的算法,欢迎在评论中给出地址,谢谢。

转载

对于这个蓝桥杯立方尾不变题我用java程序做的,正确结果应该是36,为什么我这样写结果就是12,如

public static void main(String[] args) {

        int sum = 0;

        for (int i = 1; i = 10000; i++) {

            String n = "" + (long) i * i * i;// 转为字符串

            if (n.endsWith("" + i)) {// 判断字符串结尾是否是i本身

                sum++;

            }

        }

        System.out.println(sum);

    }

你的循环是1-10-100-1000-1001-1002-...-10000,建议打个断点,debug一下看看流程

因该改为

public static void main(String[] args) {

        int i, sum = 0;

        for (i = 1; i = 9; i++) {

            if (Math.pow(i, 3) % 10 == i) {

                System.out.println(i);

                sum++;

            }

        }

        for (i = 10; i = 99; i++) {

            if (Math.pow(i, 3) % 100 == i) {

                System.out.println(i);

                sum++;

            }

        }

        for (i = 100; i = 999; i++) {

            if (Math.pow(i, 3) % 1000 == i) {

                System.out.println(i);

                sum++;

            }

        }

        for (i = 1000; i = 9999; i++) {

            if (Math.pow(i, 3) % 10000 == i) {

                System.out.println(i);

                sum++;

            }

        }

        System.out.println();

        System.out.println(sum);

    }

如果不用Math.pow(i,3),改用i*i*i

默认结果是int型,int范围是±21亿,1000^3就是10亿了,早就超出范围了,所以只有3个

关于蓝桥杯跳跃题解Java和蓝桥杯训练题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。