《Java语言程序设计(基础篇)》第一章复习题和编程练习题

复习题

1.1 什么是硬件和软件?

硬件包括计算机中可以看得见的物理部分,软件是看不见的指令,这些指令可以控制硬件并且使得硬件完成特定的任务。

1.2 列举计算机的5个主要硬件组件。

cpu,内存,硬盘,显示器,键盘,鼠标等等。

1.3 缩写“CPU”代表什么含义?

中央处理器,计算机的大脑。

1.4 衡量CPU速度的单位是什么?

赫兹。

1.5 什么是比特?什么是字节?

  • 比特(bit)是二进制数,0和1。
  • 字节(byte)是计算机中最小的存储单元,每个字节由8个比特构成。

1.6 内存是用来做什么的?RAM代表什么?为什么内存称为RAM?

  • 内存由一个有序的字节序列组成,用于存储程序及程序需要的数据。
  • RAM是随机访问存储器的缩写(Random-Access Memory)。
  • 因为内存可以按任意顺序存取字节,所以被称为RAM。

1.7 用于衡量内存大小的单位是什么?

千字节。

1.8 用户衡量磁盘大小的单位是什么?

兆字节。

1.9 内存和永久存储设备的主要不同是什么?

断电后是否能继续保存数据。内存不能,永久存储设备能。

1.10 CPU能理解什么语言。

机器语言。

1.11 什么是汇编语言?

汇编语言能用短的描述性单词来表示每一条机器语言指令,是一种低级语言。

1.12 什么是汇编器?

汇编器可以将汇编语言转换成机器语言。

1.13 什么是高级编程语言?

很像英语,易于学习和使用的编程语言称为高级编程语言。

1.14 什么是源程序?

使用高级编程语言编写的程序称为源程序。

1.15 什么是解释器?

解释器会逐条读取源代码中的语言,并立刻翻译成机器代码或者虚拟机器代码,然后立刻运行。

1.16 什么是编译器?

编译器是先将整个源代码翻译为机器代码文件,然后再执行该机器代码文件。

1.17 解释语言和编译语言之间的区别是什么?

  • 解释语言是在运行的时候将程序翻译成机器语言,效率比较低,但是夸平台性好,比如java和python。
  • 编译语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不再进行翻译了,效率高,比如C和C++。

1.18 什么是操作系统?列出一些流行的操作系统。

  • 操作系统(Operating System, OS)是运行在计算机上最重要的程序,它可以管理和控制计算机的活动。
  • 比较流行的有windows,linux,macos

1.19 操作系统的主要任务是什么?

  • 控制和监控系统的活动
  • 分配和调配系统资源
  • 调度操作

1.20 什么是多道程序设计、多线程以及多处理。

  • 多道程序设计允许多个程序通过共享CPU同时运行
  • 多线程运行单个程序同时执行多个任务
  • 多处理(多进程)也成为并行处理(parallel processing),是指使用两个或多个处理器共同并行执行子任务,然后将子任务的结果合并以得到整个任务的结果。

1.21 Java是由谁发明的?哪个公司现在拥有Java?

  • Java是由James Grosling在Sun公司领导的小组开发的。
  • Oracle拥有Java。

1.22 什么是Java applet?

能在Web浏览器中运行的Java程序称为Java applet。

1.23 安卓使用的是什么编程语言?

java,kotlin

1.24 什么是Java语言规范?

Java语言规范(Java language specification)是对语言的技术定义,包括Java程序设计语言的语法和语义。

1.25 JDK代表什么?

Java开发工具包(Java Development Toolkit),是由一套独立程序构成的集合,每个程序都是从命令行调用的,用于开发和测试java程序。

1.26 IDE代表什么?

集成开发环境(Integrated Development Environment)。

1.27 类似NetBeans和Eclipse的工具是和Java是不同的语言吗?或者它们是Java的方言或者扩充?

  • 不是
  • 这些是方便进行java开发的开发工具,IDE。

1.28 什么是关键字?列举一些java关键字。

  • java本身有特殊含义的单词,不能再程序中用于其他目的。
  • class, static, void

1.29 java是大小写敏感的吗?java关键字是大写还是小写?

  • 大小写敏感
  • 小写

1.30 什么是注释? 编译器会忽略注释吗?如何标识一行注释以及一段注释?

  • 主要用于说明程序是干什么的
  • 会忽略
  • // 以及 /* */

1.31 在控制台显示一个字符串的语句是什么?

System.out.println()

1.32 给出以下代码的输出

public class Test {
    public static void main(String[] args) {
        System.out.println("3.5 * 4 / 2 - 2.5 is ");
        System.out.println(3.5 * 4 / 2 - 2.5);
    }
}

输出:
3.5 * 4 / 2 - 2.5 is
4.5

1.33 什么是java源程序的文件后缀名,什么是java字节码文件后缀?

  • .java
  • .class

1.34 java编译器的输入和输出是什么?

  • 源代码
  • 字节码

1.35 编译java程序的命令是什么?

javac ****.java

1.36 运行java程序的命令是什么?

java ****

1.37 什么是JVM?

java虚拟机,可以解释java字节码的程序

1.38 java可以运行在任何机器上吗?在一台计算机上运行java需要什么?

  • 可以,只要装有java虚拟机
  • 需要java虚拟机

1.39 如果运行程序的时候出现NoClassDefFoundError错误,是什么原因导致了这个错误?

需要执行的类名不存在

1.40 如果运行程序的时候出现NoSuchMethodError错误,是什么原因导致了这个错误?

没有main方法或者敲错了main方法

1.41 使用行尾括号风格,将下面的程序根据程序设计风格和文档指南进行重新格式化。

public class Test
{
    // Main method
    public static void main(String[] args) {
    /** Display output */
    System.out.println("Welcome to Java");
    }
}
/** Display output */
public class Test {
    // Main method
    public static void main(String[] args) {
        System.out.println("Welcome to Java");
    }
}

1.42 什么是语法错误(编译错误)、运行时错误以及逻辑错误?

  • 在编译过程中出现的错误称为语法错误(syntax error)或编译错误(compile error)。
  • 引起程序非正常中断的错误叫运行时错误(runtime error)。
  • 当程序没有按预期的方式执行时就会产生逻辑错误(logic error)。

1.43 给出语法错误、运行时错误以及逻辑错误的示例。

  • 少关键字
  • 1除以0的场景
  • 小数点计算中给的都是整形数字导致计算结果不正确

1.44 如果忘记为字符串加引号了,将产生哪类错误?

语法错误

1.45 如果程序需要读取整数,而用户输入了字符串,运行该程序的时候将产生什么错误?这是哪类错误?

  • 类型不符错误。
  • 运行时错误。

1.46 假设编写一个计算矩形周长的程序,但是错误地携程了计算矩形面积的程序。这属于哪类错误?

逻辑错误。

1.47 指出和修改下面代码中的错误:

public class Welcome {
    public void Main(String[] args) {
        System.out.println("Welcome to Java!);
    }
}

错误有缺少关键字static,main首字母不应该大写,缺少双引号。
修改后:

public class Welcome {
    public static void main(String[] args) {
        System.out.println("Welcome to Java!");
    }
}

编程练习题

分为容易(没有星号)、适中(一颗星)、难(两颗星)以及具有挑战性(三颗星)

1.1 (显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science 和 Programming is fun。

package com.levelksk.chapter_1.training;
public class Training1_1 {
    public static void main(String[] args) {
        System.out.println("Welcome to Java");
        System.out.println("Welcome to Computer Science");
        System.out.println("Programming is fun");
    }
}

1.2 (显示五条信息)编写程序,显示Welcome to Java 五次。

package com.levelksk.chapter_1.training;
public class Training1_2 {
    public static void main(String[] args) {
        System.out.println("Welcome to Java");
        System.out.println("Welcome to Java");
        System.out.println("Welcome to Java");
        System.out.println("Welcome to Java");
        System.out.println("Welcome to Java");
    }
}

*1.3 (显示图案)编写一个程序,显示下面的图案:

     J     A     V     V     A
     J    A A     V   V     A A
J    J   AAAAA     V V     AAAAA
 J  J   A     A     V     A     A
package com.levelksk.chapter_1.training;
public class Training1_3 {
    public static void main(String[] args) {
        System.out.println("    J    A    V     V    A");
        System.out.println("    J   A A    V   V    A A");
        System.out.println("J   J  AAAAA    V V    AAAAA");
        System.out.println(" J J  A     A    V    A     A");
    }
}

1.4 (打印表格)编写程序,显示以下表格:

a     a^2    a^3
1     1      1
2     4      4
3     9      27
4     16     64
package com.levelksk.chapter_1.training;
public class Training1_4 {
    public static void main(String[] args) {
        System.out.println("a     a^2   a^3");
        System.out.println(1 + "     " + (1 * 1) + "     " + (1 * 1 * 1));
        System.out.println(2 + "     " + (2 * 2) + "     " + (2 * 2 * 2));
        System.out.println(3 + "     " + (3 * 3) + "     " + (3 * 3 * 3));
        System.out.println(4 + "     " + (4 * 4) + "     " + (4 * 4 * 4));
    }
}

1.5 (计算表达式)编写程序,显示以下公式的结果。

(9.5 x 4.5 - 2.5 x 3)÷(45.5 - 3.5)

package com.levelksk.chapter_1.training;

public class Training1_5 {
    public static void main(String[] args) {
        System.out.println((9.5 * 4.5 - 2.5 * 3) / (45.5 - 3.5));
    }
}

0.8392857142857143

1.6 (数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果。

package com.levelksk.chapter_1.training;

public class Training1_6 {
    public static void main(String[] args) {
        System.out.println(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9);
    }
}

45

1.7 (近似求p)可以使用以下公式计算p:π=4(1-1/3+1/5-1/7+1/9-1/11+...),编写程序,显示4(1-1/3+1/5-1/7+1/9-1/11)和4x(1-1/3+1/5-1/7+1/9-1/11+1/13)的结果。在程序中用1.0代替1。

package com.levelksk.chapter_1.training;

public class Training1_7 {
    public static void main(String[] args) {
        System.out.println(4 * (1.0 - 1.0 / 3 + 1.0 / 5 - 1.0 / 7 + 1.0 / 9 - 1.0 / 11));
        System.out.println(4 * (1.0 - 1.0 / 3 + 1.0 / 5 - 1.0 / 7 + 1.0 / 9 - 1.0 / 11 + 1.0 / 13));
    }
}

2.9760461760461765
3.2837384837384844

1.8 (圆的面积和周长)编写程序,使用以下公式计算并显示半径为5.5的圆的面积和周长。

  • 周长 = 2 x 半径 x π
  • 面积 = 半径 x 半径 x π
package com.levelksk.chapter_1.training;

public class Training1_8 {
    public static void main(String[] args) {
        System.out.println("周长 = " + (2 * 5.5 * 3.14));
        System.out.println("面积 = " + (5.5 * 5.5 * 3.14));
    }
}

周长 = 34.54
面积 = 94.985

1.9 (矩形的面积和周长)编写程序,使用以下公式计算并显示宽度为4.5,高度为7.9的矩形的面积和周长。

  • 面积 = 宽 x 高
package com.levelksk.chapter_1.training;

public class Training1_9 {
    public static void main(String[] args) {
        System.out.println("面积 = " + (4.5 * 7.9));
        System.out.println("周长 = " + (4.5 * 2 + 7.9 * 2));
    }
}

面积 = 35.550000000000004
周长 = 24.8

1.10 (以英里计的平均速度)假设一个跑步者45分钟30秒内跑了14公里。便携仪个程序显示以每小时多少英里为单位的平均速度值。(注意,1英里等于1.6公里)。

package com.levelksk.chapter_1.training;

public class Training1_10 {
    public static void main(String[] args) {
        System.out.println("平均速度值为" + (14.0 / 1.6) / ((45.0 * 60 + 30) / (60 * 60)) + "英里每小时");
    }
}

平均速度值为11.538461538461538英里每小时

*1.11 (人口估算)美国人口调查局基于以下假设进行人口估算:

  • 每7秒有一个人诞生
  • 每13秒有一个人死亡
  • 每45秒有一个移民迁入

编写一个程序,显示未来5年的每年的人口数。假设当前的人口是312032486,每年有365天。提示:java中,两个证书相除,结果还是整数,小树部分被去掉。例如,5/4等于1(而不是1.25),10/4等于2(而不是2.5)。如果想得到有小树部分的精确结果,进行处罚运算的两个值之一必须是一个具有小数点的数值。例如,5.0/4等于1.25,10/4.0等于2.5。

package com.levelksk.chapter_1.training;

public class Training1_11 {
    public static void main(String[] args) {
        System.out.println(312032486 + (5 * 365 * 24 * 60 * 60 / 7) - (5 * 365 * 24 * 60 * 60 / 13) + (5 * 365 * 24 * 60 * 60 / 45));
    }
}

325932970

1.12 (以公里计的平均速度)假设一个跑步者1小时40分钟35秒内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值。(注意,1英里等于1.6公里)。

package com.levelksk.chapter_1.training;

public class Training1_12 {
    public static void main(String[] args) {
        System.out.println("平均速度值为" + (24 * 1.6) * (60 * 60) / (60 * 60 + 40 * 60 + 35) + "公里每小时");
    }
}

平均速度值为22.906379453189732公里每小时

*1.13 (代数:求解2 x 2线性方程)可以使用Cramer规则解下面的2 x 2线性方程组:

  • ax + by =e
  • cx + dy = f
  • x = (ed-bf)/(ad-bc)
  • y = (af-ef)/(ad-bc)

编写程序,求解以下方程组并显示x和y的值。

  • 3.4x + 50.2y = 44.5
  • 21.x + 0.55y = 5.9
package com.levelksk.chapter_1.training;

public class Training1_13 {
    public static void main(String[] args) {
        double a = 3.4;
        double b = 50.2;
        double e = 44.5;
        double c = 2.1;
        double d = 0.55;
        double f = 5.9;
        System.out.println("x = " + (e * d - b * f) / (a * d - b * c));
        System.out.println("y = " + (a * f - e * c) / (a * d - b * c));
    }
}

x = 2.623901496861419
y = 0.7087397392563978

推荐阅读更多精彩内容