目录
作业一:基本数据类型与表达式
一、判断题
二、单选题
作业二:程序控制结构
一、单选题
二、程序填空题
三、编程题
7-3 sdut-循环-5-百钱买百鸡
作业三:类与对象
一、单选题
二、编程题
6-2 长方形长方体类
作业四:继承与多态
一、单选题
二、程序填空题
super使用--有如下父类和子类的定义,根据要求填写代码
设计一个ComparableCircle类继承自Circle类并实现Comparable接口
三、函数题
6-1 重写父类方法equals
6-2 设计一个Circle类
四、编程题
7-2 接口--四则计算器
作业五:数组与字符串
一、单选题
二、编程题
7-1 找出10个整数中的最大值、最小值、偶数的个数、偶数的平均值
7-2 字符串加密
1、(x > 0 || x < 10 && y < 0) 与 ((x > 0 || x < 10) && y < 0)等价。 F
&&优先级大于||
2、Java中的String类型是一种基本数据类型。 F
String不是基本的数据类型,是final修饰的java类,是引用类型
3、 Java语言对语法要求严格,局部变量只有在定义、赋初值后才能访问。 T
4、 (x % 2 == 0 && x % 3 ==0 )和 (x % 6 == 0)等价 T
5、如将一个int类型的数转为byte类型,不会造成数据精度的丢失。 F
如果将数据范围大的类型转化为数据范围小的类型 会造成数据精度丢失
6、运算符“&”和“&&”都表示“与”操作。 T
7、在Java中,小数会被默认是double类型的值。 T
8、语句 System.out.println(4+8+"Hello,world!"); 的输出结果是12Hello,world!。 T
1、若有定义:int x=3,y=2;float a=2.5,b=4.5;则下面表达式的值为()。
(x+y)%2+(int)a/(int)b。
A.1.0
B.1
C.1.5
D.2
(int)a=2 (int)b=4 int转化float类型只保留整数
5%2=1 + 2/4 = 1 + 0 = 1
2、下列代码的执行结果是( )
public class Main {public static void main(String[] args) {int a=2,b=8,c=6;String s = "abc";System.out.println(a+b+s+c);System.out.println();} }10abc6
3、JAVA中,下面哪个赋值表达式正确:( )
A.float f=1.3; java默认类型是double 应该是float f=1.3f
B.char c="a";
C.byte b=257;
257是int类型,直接赋值给byte类型报错,正确的写法应该是 byte b = (byte) 257
D.int i=10;
4、Java源代码文件的扩展名为( C )
A..txt
B..class
C..java
D..doc
5、下列关于变量作用域的说法中,正确的是()
A.在main()方法中任何位置定义的变量,其作用域为整个main()方法。
B.代码块中定义的变量,在代码块外也是可以使用的。
C.变量的作用域为:从定义处开始,到变量所在代码块结束的位置。
D.变量的作用域不受代码块的限制。
6、以下( )不是Java中正确的整数表示。
A.22
B.0x22
C.022
D.22H
选项A中表示的是十进制的整数
选项B中表示的是十六进制的整数
选项C中表示的是八进制的整数
选项D它表示的也是十六进制整数,只不过它的表示方法在Java中不能使用,它是在汇编或接口中使用的十六进制表示整数的方法
1、对于break语句和continue语句,说法正确的是( )。
A.break语句只应用于循环体中 switch也可以用break
B.continue语句只应用于循环体中
C.break是无条件跳转语句,continue不是
D.break和continue的跳转范围不够明确,容易产生问题
1、功能:计算正整数num的各位上的数字之积。
例如:输入252,则输出应该是20。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);//int n=sc.next();//此行语句有错误,改正后填到下侧空格内int n=sc.nextInt();//System.out.println(fun(int n));//此行语句有错误,改正后填到下侧空格内System.out.println(fun(n));}//public int fun(int num)//此行语句有错误,改正后填到下侧空格内public static int fun(int num){//int k;//此行语句有错误,改正后填到下侧空格内int k=1;do{k=k*(num%10);//num\=10;//此行语句有错误,改正后填到下侧空格内num/=10;}while(num>0);return k;} }注意:public class Main主函数里所有方法必须是静态的static!!!
一只公鸡五块钱,一只母鸡三块钱,三只小鸡一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
输入格式:
无输入。
输出格式:
输出所有的解决方案。
每种解题方案各在一行内输出,一行按顺序输入公鸡、母鸡、小鸡的数量,其中每个数值占2个字符的位置,不足2位的数值右对齐放置。
多种解题方案,按公鸡数量从小到大的顺序排列。
输入样例:
输出样例:
公鸡 0只,母鸡25只,小鸡75只 公鸡 4只,母鸡18只,小鸡78只 公鸡 8只,母鸡11只,小鸡81只 公鸡12只,母鸡 4只,小鸡84只
import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);for(int i=0;i<20;i++)for(int j=0;j<33;j++)for(int k=0;k<300;k+=3)if(i*5+j*3+k/3==100&&i+j+k==100){System.out.printf("公鸡%2d只,母鸡%2d只,小鸡%2d只\n",i,j,k);}}
}
1、在Java中,负责对不再使用的对象自动回收的是( )
A.垃圾回收器
B.虚拟机
C.编译器
D.多线程机制
2、下面哪句说法是正确的? A
A.在类中若无显式定义构造函数,会自动产生一个缺省构造器。
B.必须显式定义一个构造函数。
C.每个类都有一个缺省构造函数。 可以没有
D.缺省构造函数可以有参数也可以没有参数。 缺省构造函数没有参数
类可以有多个构造函数,但最多只能有一个缺省的构造函数,当然类也可能没有缺省的构造函数
3、已如类A的定义如下,程序代码执行结果是:( )。
class A {int v = 10;public void print() {int v = 100;System.out.println(v);} }public class Main {public static void main(String[] args) {A a=new A();a.print();} }100
4、关于类和对象的关系,下列说法哪种说法是错误的?
A.类和对象都是具体的。
B.类是抽象的,对象是具体的。
C.一般情况下,在定义类之后,能创建无数个对象,可以说,类能化身千万。
D.类是引用型数据类型。
5、 下列关于修饰符使用的说法,错误的是( )。
A.abstract不能与final并列修饰同一个类
B.abstract类中可以有private的成员
C.abstract方法必须在abstract类中
D.static方法中能访问非static的属性
定义一个长方形类Rectangle,拥有长、宽属性,提供构造方法,能够计算周长getPerimeter()和面积getArea() 。
定义一个子类长方体类,拥有长、宽、高属性,提供构造方法,getPerimeter()方法计算所有边的周长,getArea()方法计算表面积,新增getVolume()方法,计算体积。
在main()方法中,分别构造长方形类和长方体类的对象,并输出他们的周长、面积、体积,保留两位小数。
class Rectangle
{double length,wide;public Rectangle(double length,double wide){this.length=length;this.wide=wide;}public double getPerimeter() //计算周长{return (length+wide)*2;}public double getArea() //计算面积{return length*wide;}
}class Cuboid extends Rectangle
{double height;public Cuboid(double length,double wide,double height){super(length,wide);this.height=height;}//@Overridepublic double getPerimeter() //计算周长{return (length+wide+height)*4;}//@Overridepublic double getArea() //计算面积{return (length*wide+height*length+height*wide)*2;}public double getVolume(){return length*wide*height;}
}
1、以下对重载描述错误的是
A.方法重载只能发生在一个类的内部
B.构造方法不能重载
C.重载要求方法名相同,参数列表不同
D.方法的返回值类型不是区分方法重载的条件
2、下列哪个叙述是正确的?
A.一个类最多可以实现两个接口
B.允许接口中只有一个抽象方法
C.如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法
D.如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法
- 如果子类是抽象类,则可以写接口中的部分方法,因为抽象类允许抽象方法的存在
- 如果子类是非抽象类,则它必须重写接口中所有方法
3、Java关于方法的重写,哪个说法是错误的?( )
A.对一个方法的重写必须发生在具有继承关系的两个类中,即子类对父类方法的重写。
B.方法的重写在一般意义上要求:两个方法的参数个数和类型以及返回值类型都一致。
C.方法的重写是一个类的两个方法,方法的名称相同,但参数不同。
D.子类对象调用子类重写了父类的方法时,优先调用子类的方法。
4、输出结果是
class A {int a = 11;int b = 12;public void print() {System.out.println(a + " " + b);} }class B extends A {int a = 20;public void print() {System.out.println(a + " " + b);} }public class Main {public static void main(String[] args) {A aObj = new A();aObj.print();B bObj = new B();bObj.print();} }11 12
20 12
5、
class A {double f(double x, double y) {return x * y;} }class B extends A {double f(double x, double y) {return x + y;} }public class Test {public static void main(String args[]) {A obj = new B();System.out.println(obj.f(4, 6));} }10.0
6、以下关于继承的叙述正确的是( )。
A.在Java中类只允许单一继承
B.在Java中,一个类只能实现一个接口
C.在Java中,一个类不能同时继承一个类和实现一个接口
D.在Java中,接口也具有单继承性
7、接口是一种特殊的类,由()和公共的抽象方法组成,不能包含普通方法和构造方法。
A.全局常量
B.成员变量
C.成员方法
D.构造方法
super使用--有如下父类和子类的定义,根据要求填写代码
class Father {int a;public Father(int a) {this.a=a;}public void print() {System.out.println(a);} }class Child extends Father {int a;public Child(int a) {super(a); // 将形参a的数值赋给父类成员变量a this.a=a*10; // 将父类成员变量a的值*10赋给本类的成员变量a}public void print(){System.out.println(super.a); // 输出父类成员变量a的值System.out.println(this.a); // 输出子类成员变量a的值} }public class Main {public static void main(String[] args) {Child child=new Child(10);child.print();} }
设计一个ComparableCircle类继承自Circle类并实现Comparable接口
class Circle {private double radius;public Circle(){radius = 1;}public Circle(double radius) {this.radius = radius;}public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}public double getArea() {return Math.PI*radius*radius;}public String toString() {return "Cirlce: radius = "+radius;} }class ComparableCircle extends Circle implements Comparable{public ComparableCircle() {}public ComparableCircle(double radius) {super(radius);}@Override // Implement the compareTo method defined in Comparablepublic int compareTo(ComparableCircle o) {if (getArea() > o.getArea())return 1;else if (getArea() < o.getArea())return -1;elsereturn 0;}@Overridepublic String toString() {return super.toString()+ "\nArea: " + getArea();} } public class Main {public static void main(String[] args) {ComparableCircle c1 = new ComparableCircle(7);ComparableCircle c2 = new ComparableCircle(5);System.out.println(c1);System.out.println(c2);System.out.println((c1.compareTo(c2)>=0)?"c1较大":"c2较大"); } }
在类Student中重写Object类的equals方法。使Student对象学号(id)相同时判定为同一对象。
裁判样例:
import java.util.Scanner; class Student {int id;String name;int age;public Student(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}/* 请在这里填写答案 */} public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Student s1 = new Student(sc.nextInt(),sc.next(),sc.nextInt());Student s2 = new Student(sc.nextInt(),sc.next(),sc.nextInt());System.out.println(s1.equals(s2));sc.close();} }
public boolean equals(Student stu)
{if(this.id==stu.id) return true;return false;
}
构造一个Circle类,该类有一个double变量radius存放半径,该类具有getArea和getLength两个方法,能够利用半径和Math.PI计算高精度的面积和周长。
该段程序会自动提交import java.util.Scanner; public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner scanner=new Scanner(System.in);while(scanner.hasNextFloat()){double r=scanner.nextDouble();Circle c = new Circle(r);System.out.printf("%.2f %.2f\n",c.getArea(),c.getLength());c.radius = 2*r;System.out.printf("%.2f %.2f\n",c.getArea(),c.getLength());}} }输入样例:
在这里给出一组输入。例如:
5输出样例:
在这里给出相应的输出。例如:
78.54 31.42 314.16 62.83
class Circle
{double radius;public Circle(double r){radius=r;}public double getArea(){return Math.PI*radius*radius;}public double getLength(){return Math.PI*radius*2;}
}
利用接口做参数,写个计算器,能完成加减乘除运算。
- 定义一个接口ICompute含有一个方法int computer(int n, int m)。
- 定义Add类实现接口ICompute,实现computer方法,求m,n之和
- 定义Sub类实现接口ICompute,实现computer方法,求n-m之差
- 定义Main类,在里面输入两个整数a, b,利用Add类和Sub类的computer方法,求第一个数a和第二个数b之和,输出和,第一个数a和第二个数b之差,输出差。
输入格式:
输入在一行中给出2个整数
输出格式:
输出两个数的和、差
输入样例:
在这里给出一组输入。例如:
6 7输出样例:
在这里给出相应的输出。例如:
13 -1
import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);int a=sc.nextInt(),b=sc.nextInt();Add add=new Add(a,b);Sub sub=new Sub(a,b);System.out.println(add.computer(a,b));System.out.println(sub.computer(a,b));}
}interface ICompute
{abstract int computer(int n,int m);
}class Add implements ICompute
{int m,n;Add(int n,int m){this.n=n;this.m=m;}public int computer(int n,int m){return m+n;}
}class Sub implements ICompute
{int m,n;Sub(int n,int m){this.n=n;this.m=m;}public int computer(int n,int m){return n-m;}
}
1、关于字符串的构造方法,如下代码执行结果是( BCD )。
String str="ABCDEFG"; char[] chars=str.toCharArray(); System.out.println(new String(chars,1,3));String(chars,idx,len) 从idx下标开始 len长度的字符串
import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);int[] a=new int[10];for(int i=0;i<10;i++) a[i]=sc.nextInt();int maxx=a[0],minx=a[0];int sum=0,cnt=0;for(int i=0;i<10;i++){if(a[i]>maxx) maxx=a[i];if(a[i]
输入一个原始字符串(长度小于80),然后输入一个5位的数字字符串作为加密密钥,对原始字符串中的每个字符根据其位置(对5取模)变换为加上数字字符串中的数字的字符。如输入原始字符串student,然后输入5位的加密数字12345,因此:
原始字符 加密数字 变换后的字符s 1 tt 2 vu 3 xd 4 he 5 jn 1 ot 2 v加密后的字符串位:tvxhjov
输入格式:
第一个输入一个原始字符串
第二行输入一个5位用来加密的数字字符串输出格式:
加密后的字符串
输入样例1:
在这里给出一组输入。例如:
student 12345输出样例1:
在这里给出相应的输出。例如:
tvxhjov输入样例2:
在这里给出一组输入。例如:
Welcome to Java! 10932输出样例2:
在这里给出相应的输出。例如:
Xeufqne)wq!Jjyc"
import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);String s=sc.nextLine();String n=sc.next();StringBuffer res=new StringBuffer();int[] num=new int[5];for(int i=0;i<5;i++) num[i]=n.charAt(i)-'0';for(int i=0;i