复习题
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