Java程序设计基础复习题

重庆工业职业技术学院
人工智能与大数据学院
计算机系大一上学期期末复习题

文档说明:蓝色字是我写的,红色字是后来对先前写的一个纠正(不加入计时)

一、填空题(用时12:35.76)

1、JDK中提供了java编译和运行的工具,我们可以使用 javac 命令编译java程序,使用java命令执行java程序。

2、java源代码文件的后缀名为 .java,编译后的字节码文件的后缀名为.class。

3、Java中标识符应由_数字_、_字母_、_下划线_、__美元符号_组成

4、java基本数据类型包括_整数型_、_浮点型_、_布尔型__、字符型_。(记清楚各个基本数据类型的所占字节)

5、java程序的控制流程有三种,分别是顺序、选择_和循环。

6、java中有三种循环控制,分别是while、do…while和for。

  1. Java中用于选择结构的两组关键字分别为_第一组:switch、break、continuecase;第二组:if、else__。

8、java中表示10≤a≤50的语句为10<=a&&a<=50。

9、java中的基本数据类型有整数型、实型(浮点型)、字符型、布尔类型。

  1. java程序都是在java虚拟机(JVM)_中运行,所以java程序具有平台无关性。

(jdk:开发包 jre:运行环境 jvm:虚拟机)

  1. for关键字后的三个表达式的作用分别为定义循环控制变量并赋初值、循环适用范围(循环条件)、改变循环控制变量的值。
  2. 如果一个循环无法终止则称之为_死循环__。

13、break语句用于_结束本层循环或选择、continue语句用于跳出本次循环,开始进行下一次循环_。

  1. 如果在计算机中只需要运行程序,可以只安装jre,如果在计算机中要开发java程序,则需安装_jdk。
  2. 访问数组元素时,如果下标超出了数组下标的合法范围则会抛出数组溢出越界异常。
  3. 数组在定义时必须指定数据类型。

17、 整型数组元素的默认值是int型0,布尔类型数组元素的默认值是____false_____.

  1. 方法声明包括修饰符、返回值类型、数据类型方法名、参数列表。
  2. 方法中的形参是局部变量。(时参传给形参是单向传递)
  3. 在方法进行调用时,实参与形参的数据类型,顺序,个数必须匹配。

21、方法中的return语句会结束该方法,并返回1个值给主调方法。

22、数组是具有顺序相同数据类型的多个元素的有序集合。

23、已有一个Random类的对象ran,想随机生成一个40至60之间的整数可以使用语句ran.nextInt(20)+40;ran.nextInt(21)+40;。

Random ran =new Random();
int a = ran.nextInt(21)+40;

24、java源代码文件的后缀名为.java,编译后的字节码文件的后缀名为.class_。

25、一个java程序由一个或多个类组成,一个可执行的java程序必须包含且值包含一个主函数main()主方法main()。

26、在控制台中输出“Hello Java”的语句为System.out.println(“Hello Java”);_。

System.out.println("Hello Java");

27、如有一下语句:int[][] nums=new int3{{1,2,3},{4,5,6,7},{8,9,10,11,12}},则元素nums2的值为11。

28、在java中定义一个符号常量时,需要使用Stringfinal关键字。

29、在控制台中进行输入时,需要使用Scanner类的相关方法。

Scanner inp = new Scanner(System.in);
int b = inp.nextInt();

30、数组是具有相同数据类型的多个元素的有序集合。

31、方法声明包括返回类型、方法名、形参形参列表。

32、如果在计算机中只需要运行程序,可以只安装_jre,如果在计算机中要开发java程序,则需安装jdk。

二、判断题 T:true F:false(用时02:22.71)

1、java程序是由一个或多个函数组成。(F )//一个或多个类组成

2、循环中continue语句的作用是退出循环。( F )//结束本次循环,直接进行下一次循环

3、java中我们可以使用Random类在控制台中进行数据输入。( F )//输入用Scanner类,随机数用Random类

4、在java中布尔型变量x的取值为0或者1。( F )//布尔型(boolean)取值为:真(true)假(flase)

5、switch结构中case语句后必须要有break关键字。( F )//不一定

6、Java语言属于机器语言。( F )//java属于高级语言

7、方法中的形参是局部变量。( T )

8、如有数组定义语句:int[] nums=new int[100]; 该语句执行后,数组元素nums[100]的值为0。( F )//索引是从0开始的,长度为100的数组最大索引值为99

9、访问数组元素时,如果下标超出了数组下标的合法范围则会抛出越界异常。( T )

10、分支结构中至多有一个分支中的语句会被执行。( T )//可以有多个分支都被执行(某分支无break的情况)这题主要是针对IF语句switch是专门实现多路分支的语句

11、变量在使用前必须被定义和赋值。( T )

12、当我们在java中判断变量x是否在区间(20,100)中时,可以使用如下语句:if(20<x&&x<100)。( T )

13、数组初始化时可以不指定其长度,其长度根据实际赋值情况决定。( T )//int[] nums ={1,2,3};

14、如有数组定义语句:int[] nums=new int[10]; 该语句执行后,数组元素nums[5]的值为-1。( F )//默认值为0

15、当循环永远无法结束时,我们称之为死循环。( T )

三、单项选择题

1、衡量大学生全面发展的一个重要标准是( C )

A) 理想远大 B) 勇于创新 C) 德才兼备 D) 视野开阔

2、在新时期,邓小平提出的“四有”新人指的是 ( B ) 

A) 有知识、有能力、有文化、有纪律  

B) 有理想、有道德、有文化、有纪律  

C) 有素质、有本领、有道德、有理想  

D) 有理想、有信念、有才华、有纪律

四、简答(用时12:13.77)

  1. 简述java中的运算符的种类和作用,分别列举每类运算符包含哪些具体符号?

答:

一:算数运算符。作用:进行数值运算 举例:+、-、*、/、%、--、++

二:比较运算符。作用:进行数值比较 举例:>、<、>=、<=、==、!=

三:赋值运算符。作用:给变量赋值 举例:=、+=、-=、*=、/=、%=

四:逻辑运算符。作用:判断多个条件是否成立 举例:!、&、&&、|、||

五:位运算符。作用:进行位运算 举例:&、|、~、^、<<、>>、>>>

  1. 简述java中的基本数据类型。

答:

  1. 数值型:
  2. 整型:byte(占1个字节)、short(短整型,占两个字节)、int(占四个字节)、long(长整型,占8个字节)
  3. 浮点型:double(双精度浮点型,占8个字节)、float(单精度浮点型,占4个字节)

二、字符型:char(字符型,占两个字节)

三、布尔型:boolean(表示逻辑值,有true和false两个值,分别占一个字节)

  1. 简述什么是方法的重载?

答:在同一个类中,方法名相同,但参数个数或参数类型不同

答:方法重载指的是在一个类中可以声明多个同名方法,而方法中的参数的个数或者数据类型不一样,调用这些同名方法时,JVM会根据实际参数的不同绑定到不同的方法。

  1. 简述java合法标识符的要求是什么?

答:(1)组成:大小写字母、数字、下划线、美元符号

(2)不能以数字开头,不能和java关键字相同

五、程序阅读(用时23.07.20)

  1. 阅读下列代码段,写出该段代码执行的结果并阐述该段代码的功能,
int a=10,b=5;
   a=a+b;    //10+5=15    a=15 b=5
   b=a-b;    //15-5=10    a=15 b=10
   a=a-b;    //15-10=5    a=5
   System.out.println(a+" "+b);    //5 10
答:该段代码的执行结果是:5 10。该代码段的功能是交换a,b的值。
  1. 有以下代码段,写出该段代码执行的结果并阐述该段代码的功能
public static void reversalLine(int[] line)//这是一个自定义方法,参数是一个数组
              {
                 int temp; //设置了一个变量temp
                 for(int i=0;i<=line.length/2;i++)//i从0开始,最大值不超过数组长度的一半
                  {
                    temp=line[i];//用temp记录下当前数组值
                        line[i]=line[line.length-1-i];
                        line[line.length-1-i]=temp;
                  }//该for实现了line[i]与line[line.length-1-i]数值的交换
              }

答:此代码段是一个方法,未被调用。故无执行结果。该段代码的功能是将一个数组中的数值顺序反过来

3、写出下面程序执行后的输出结果

public class Test {
public static void main(String[] args) {
                for (int i = 1; i < 5; i++) {
            int j = 0;
            while (j < i) {
                System.out.print(j + " ");
                j++;
            }
        }
    }
}

答:该段代码的执行结果是:0 0 1 0 1 2 0 1 2 3

4、以下代码段使用插入法排序,从小到大将一个整数序列进行排序,请在空白处填写代码:

public static boolean less(int num1,int num2)
    {
        if(_____________)
            return true;
        else {
            return false;
        }//根据less判断,该方法应该是想做个数值大小的比较
    }
    
    public static void sort(int[] arr)
    {
        int temp;
        for(int i=1;i<=_______________;i++)
        {
            for(int j=0;j<i;j++)
            {
                if(less(arr[i], arr[j]))//此处调用了上方方法,如果为真,则执行下面的代码块
                {
                    temp=arr[i];
                    for(int k=i;k>j;k--)
                        __________________;
                    arr[j]=temp;
                }
                
            }
        }
public static boolean less(int num1,int num2)
{
if(num1<num2)
return true;
else {
return false;
}

}
public static void sort(int[] arr)
{
int temp;
for(int i=1;i<=arr.length-1;i++)
{
for(int j=0;j<i;j++)
{
if(less(arr[i], arr[j]))
{
temp=arr[i];
for(int k=i;k>j;k--)
arr[k]=arr[k-1];
arr[j]=temp;
}
}
}
}

六、编程题(书写:1h 调试:1h )

  1. 求20到100的数累加。
package importantFiles.test20201226;

public class Demo1 {
// 求20到100的数累加 打码用时2min
    public static void main(String[] args) {
        int num=0,result=0;
        for(num=20;num<=100;num++) {
            result+=num;
        }
        System.out.print("结果是:"+result);//最后输出结果            结果是:4860
    }
}
  1. 求n!。
package importantFiles.test20201226;
import java.util.Scanner;
public class Demo2 {
//求n!
//本题用时:7:18.61
    public static void main(String[] args) {
        Scanner inp = new Scanner(System.in);
        int n=inp.nextInt();
        int result=1;
        for(int i=1;i<=n;i++) {
            result*=i;
        }
        System.out.println("结果为:"+result);
    }
}

3、编写程序,要求用户任意输入三个数,按照从大到小的顺序输出在控制台中。

package importantFiles.test20201226;
import java.util.Scanner;
public class Demo3 {
//    写程序,要求用户任意输入三个数,按照从大到小的顺序输出在控制台中。
//本题用时:08:33.41
    public static void main(String[] args) {
        Scanner inp =new Scanner(System.in);
        int a = inp.nextInt();
        int b = inp.nextInt();
        int c = inp.nextInt();
        int temp=0;
        if(a<b) {
            temp=a;
            a=b;
            b=temp;
        }
        if(a<c) {            temp=a;
            a=c;
            c=temp;
        }
        if(b<c) {
            temp=b;
            b=c;
            c=temp;
        }
        System.out.println(a+"\t"+b+"\t"+c);


        }


}

4、编写一个方法,计算一个整数各位数之和。

package importantFiles.test20201226;
import java.util.*;
public class Demo4 {
//    编写一个方法,计算一个整数各位数之和
//本题用时:09:00.89
    public static int getAll(int num) {
    int result=0,n=1;
    for(int i=1;i<=9;i++) {
        result+=num/n%10;
        n*=10;
    }
        return result;
    }

    public static void main(String[] args) {
        Random seed = new Random();
        int number = seed.nextInt(999999999);
        int re=getAll(number);
        System.out.println(number+"的各位数之和为:"+re);
    }
}

5、编写两个方法,分别求两个数的最大公约数和最小公倍数。

package importantFiles.test20201226;
import java.util.Random;
public class Demo5 {
//    编写两个方法,分别求两个数的最大公约数和最小公倍数
//本题用时:15:55.26
    public static int getMax(int a,int b) {
//        求最大公约数
603
        int result=0;
        for(int i = 1;i<=a;i++) {
            if(a%i==0&&b%i==0) result=i;
        }
        return result;
    }
    public static int getMin(int a,int b) {
//        求最小公倍数
        int n=a;
        for(int i=1;n<=a*b;i++) {
            if(n%b==0&&n%a==0) return n;
            n=i*a;
        }
        return -1;
    }

    public static void main(String[] args) {
        Random seed = new Random();
        int a = seed.nextInt(30)+1;
        int b = seed.nextInt(30)+1;
        int re1 = getMax(a,b);
        int re2 = getMin(a,b);
        System.out.println("随机数"+a+"\t"+b+"的最大公约数为:"+re1+"\t最小公倍数为:"+re2);

    }
}

6、编写一个程序,让用户输入一个整数,判断该数是否是一个素数。(素数是只只能被1和它本身整除的数)。

package importantFiles.test20201226;
import java.util.Scanner;
public class Demo6 {
//    编写一个程序,让用户输入一个整数,判断该数是否是一个素数。(素数是只只能被1和它本身整除的数)。
//本题用时:06:09.49
    public static void main(String[] args) {
     Scanner inp = new Scanner(System.in);
     int number=inp.nextInt();
     int re=0;
     for(int i = 2;i<number;i++) {
         if(number%i==0) re++;
     }
     if(re==0) System.out.println(number+"是素数");
     else System.out.println(number+"不是素数");
    }
}

7、请编写程序,用冒泡法实现对数组{125,204,12,76,11,96,128} 的排序。

提示:冒泡法排序的基本思想是通过对相邻元素的两两比较,顺序相反则进行交换,从而每一趟会将最大或最小数“浮动”到顶端,从而达到完全有序的目标。

package importantFiles.test20201226;

public class Demo7 {
//    请编写程序,用冒泡法实现对数组{125,204,12,76,11,96,128} 的排序。
//本题用时:12:36.29
    public static void main(String[] args) {
        int[] nums= {125,204,12,76,11,96,128};
        int temp=0;
//        System.out.println(nums.length);//长度为7 但是下标索引最大值是6,因为索引是从0开始的
        for(int i = 0 ;i<nums.length-1;i++) {
            for(int n=i+1;n<nums.length;n++) {
                if(nums[i]<nums[n]) {
                    temp = nums[i];
                    nums[i]=nums[n];
                    nums[n]=temp;
                }
            }
        }

        for(int i=0;i<nums.length;i++) {
            System.out.print(nums[i]+"\t");
        }
    }
}

关注微信公众号:mllt9920

领取更多学习资料,软件资源

哔哩哔哩:萌狼蓝天

博客:mllt.cc

最后修改:2021 年 04 月 13 日 11 : 14 PM
如果觉得我的文章对你有用,请随意赞赏