復習題
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