1. 程式人生 > 遊戲資訊 >緋紅之拳戰團傳奇人物-傑弗羅斯 想要回去保衛母星,但被審判官拒絕 戰錘40k

緋紅之拳戰團傳奇人物-傑弗羅斯 想要回去保衛母星,但被審判官拒絕 戰錘40k

第1章 程式設計與C語言

1.1 計算機與程式、程式設計語言

  • 計算機的機器語言:一個型號機器語言的指令的集合。它緊密依賴於計算機硬體,稱為低階語言
  • 用機器語言寫程式難學、難記,難寫,難修改、難維護,而且在不同計算機之間互不通用,給計算機的推廣應用造成很大困難。
  • 高階語言:比較接近與人們習慣使用的自然語言(英文)和數學語言,直觀易學,易理解,易修改,易維護,通用性強(不同型號計算機之間通用)。從1954年出現第一個高階語言FORTRAN 以來,全世界先後出現了幾千種高階語言,每種高階語言都有其特定的使用領域。其中應用比較廣泛的有100多種,影響較大的有FORTRAN(適合數值計算)、BASIC(適合初學者的小型會話語言)、COBOL(適合商業管理)、Pascal(適合教學的結構程式設計語言)、LISP和PROLOG(人工智慧語言)、 Visual Basic(支援面向物件程式設計的語言)、C(系統描述語言)、C+(支援面向物件程式設計的大型語言)、Java(適於網路使用的語言)以及近幾年使用較多的C# 、Python,R語言等。
  • 編譯系統:用高階語言編寫的程式,計算機是不能直接識別和執行的(計算機只能直接識別二進位制的指令),必須事先把用高階語言編寫的程式翻譯成機器語言程式,這個“翻譯”工作是由稱為“編譯系統”的軟體來實現的。

1.2 C語言的出現和發展過程

  • C語言是國際上廣泛流行的計算機高階語言。最初的C語言只是為編寫UNIX作業系統提供一種工作語言而設計的。
  • 1973年,Ken Thompson和 Dennis M.Ritchie合作把UNIX的90%以上用C語言改寫(原來的UNIX作業系統是用匯編語言編寫的)。
  • 後來,C語言做了多次改進,但主要還是在貝爾實驗室內部使用。隨著UNIX的日益廣泛使用,C語言也迅速得到推廣。C語言和UNIX可以說是一對孿生兄弟,在發展過程中相輔相成。
  • 1978年以後,C語言先後移植到大、中、小,微型計算機上。C語言便很快風靡全世界,成為世界上應用最廣泛的程式設計高階語言。
  • 以1978年釋出的UNIX第7版中的C語言編譯程式為基礎, Brian W.Kernighan和Dennis M.Ritchie(合稱K&.R)合著了影響深遠的名著The C Programming Language ,這本書中介紹的C語言成為後來廣泛使用的C語言版本的基礎,它被稱為標準的C語言。
  • 1983年,美國國家標準化協會(ANSI)根據C語言問世以來各種版本對C語言的發展和擴充,制定了新的標準草案,即 83 ANSI C。ANSI C比原來的標準C有了很大的發展。
  • 1989年,ANSI 又公佈了一個新的C語言標準--—ANSI X3.159—1989(簡稱C89)。1990年,國際標準化組織(International Standard Organization,ISO)接受C89,作為國際標準ISO/IEC9899:1990,通常簡稱為C90。ISO 的C90和ANSI的C89基本上是相同的。
  • 1995年,ISO對C90做了一些修訂,稱為C95。1999 年,ISO 又對C語言標準進行修訂,在基本保留原來的C語言特徵的基礎上,增加了一些面向物件的特徵,命名為ISO/IEC9899;1999,簡稱為C99。但前一時期有的軟體公司提供的C語言編譯系統並未完全實現C99建議的功能,而是以C89為基礎進行開發的。不同的軟體公司提供的C編譯系統所實現的語言功能和語法規則又略有差別。
  • C語言功能強大、使用靈活,既可用於編寫應用軟體,又能用於編寫系統軟體。因此C語言問世以後得到迅速推廣。

1.3 簡單的C語言程式

1 #include <stdio.h> //編譯預處理指令
2 
3 int main() {    //定義主函式
4     printf("This is a C program.\n");
5     return 0;   //函式執行完時返回0
6 }
例1.1 要求在螢幕上顯示出以下一行資訊:
 1 //求兩個整數之和
 2 #include <stdio.h> //編譯預處理指令
 3 
 4 int main() {    //定義主函式
 5     int a, b, sum;
 6     a = 123;
 7     b = 456;
 8     sum = a + b;
 9     printf("sum is %d\n", sum);
10     return 0;
11 }
例1.2 求兩個整數之和
 1 #include <stdio.h>
 2 
 3 int main() { //主函式
 4     int max(int x, int y); //對被呼叫的max函式進行宣告
 5     int a, b, c; //定義整型變數a,b、c
 6     scanf("%d,%d", &a, &b); //  從鍵盤輸入變數a和b的值
 7     c = max(a, b); //呼叫max函式,將得到的值賦給整型變數c
 8     printf("max= %d\n", c);//輸出c的值
 9     return 0;
10 }
11 
12 int max(int x, int y) //定義max函式,函式值為整型,形式引數x、y為整型
13 {
14     int z;  // max函式中的宣告部分, 定義本函式中用到的變數z為整型
15 
16     if (x > y) z = x; //如果x> y,則將x的值賦給變數z
17 
18     else z = y; //否則,將y的值賦給變數z
19 
20     return (z); //將z的值返回到主函式中呼叫函式的位置
21 
22 }
例1.3 求兩個整數中的大者。

 

 

 

1.4 C語言IDE

本章小結

  • (1)計算機是由程式控制的,要使計算機按照人們的意圖工.作,必須用計算機語言編寫程式。
  • (2)機器語言和組合語言依賴於具體計算機,屬於低階語言,難學難用,無通用性。高階語言接近人類自然語言和數學語言,容易學習和推廣,不依賴於具體計算機,通用性強。
  • (3)C語言是目前在世界上使用最廣泛的一種計算機語言,語言簡潔緊湊,使用方便靈活,功能很強,既有高階語言的優點,又具有低階語言的功能;既可用於編寫系統軟體,又可用於編寫應用軟體。掌握C語言程式設計是程式設計人員的一項基本功。
  • (4)一個C語言程式是由一個或多個函式構成的,必須有一個main函式。程式由main函式開始執行。在函式體內可以包括若干個語句,語句以分號結束。一行內可以寫多個語句,一個語句可以分寫為多行。
  • (5)上機執行一個C程式必須經過4個步驟:編輯、編譯、連線和執行。要熟練掌握上機技巧。
  • (6)用C語言寫好程式後,可以用不同的C編譯系統對它進行編譯。目前所用的編譯系統多采用整合環境:把編輯、編譯、連線和執行等步驟在一個整合環境中完成。
  • (7)目前所用的C++整合環境功能強,使用方便。由於C++和C相容,可以用C++整合環境對C程式進行編譯、連線和執行。

 

習題

 

 

 

1 #include <stdio.h>
2 int main(){
3     printf("********************************\n\n");
4     printf("          Very good!\n\n");
5     printf("********************************\n\n");
6     return 0;
7 }
1.1

 

 

 

 1 #include <stdio.h>
 2 
 3 int main() {
 4     int a, b, c, max;
 5     printf("please input a,b,c:\n");
 6     scanf("%d,%d,%d,", &a, &b, &c);
 7     max = a;
 8     if (max < b)max = b;
 9     if (max < c)max = c;
10     printf("The largest number is %d\n", max);
11     return 0;
12 }
1.2

 

 

 

 

 

 

第2章 資料的儲存與計算

2.1.1 資料在計算機中是以二進位制形式儲存的

眾所周知,計算機的工作是基於二進位制原理的,計算機內部的資訊都是用二進位制來表示的。計算機的儲存器是由半導體積體電路構成的,它包括幾億個小的脈衝電路單元(二極體元件)。每一個二極體元件如同一個開關,有兩種穩定的工作狀態:“導通”與“截止”,即電脈衝的“有”與“無”,用1和0表示。如果有相鄰的8個二極體元件中第1、3、5、7個元件處於“導通”狀態,第2、4、6、8個元件處於“截止”狀態(見圖2.1(a)),這種狀態用10101010表示(見圖2.1(b)或圖2.1(c))。當用戶向計算機輸入資料(例如輸入整數5)時,計算機先把資料轉換為二進位制形式(整數5的二進位制形式為101),根據其每一位是0或1,使相應的電子元件設定為“截止”或“導通”狀態。至於怎樣具體實現,使用者可不必過慮,是由計算機自動完成的。

 

 

 

一個十進位制怎樣表示為二進位制形式呢?二進位制數的特點是“逢二進一”。每一位的值只有0和1兩種可能。

表2.1表示最簡單的十進位制數與二進位制數的對應關係。

 

 

 

十進位制數10,用二進位制表示是1010。它的含義是:

每一個二進位代表不同的冪,最右邊一位代表2的0次方,最右邊第二位代表2的1次方,以此類推。顯然一個很大的整數可能需要幾十個“二進位制位”來代表。

2.1.2 位、位元組和地址

在談論資料儲存時常用到以下一些名詞:

  • ,又稱為“位元”(bit)每一個二極體元件稱為一個“二進位制位”,是儲存資訊的最小單位。它的值是1或0。
  • 位元組,又稱為“拜特”(byte)。一個儲存器包含許許多多個“二進位制位”,如果直接用“位”來表示和管理,很不方便。一般將8個“二進位制位”組織成一組,稱為“位元組”。這是人們最常用的儲存單位,例如平常說的“佔記憶體125K”,就是指125KB,即約12.5萬字節。“記憶體為256M”,就是指256兆位元組,一兆是10°,即 100萬。“硬碟容量為40G”,就是指40吉位元組,一吉是10”,40GB就是400億位元組。
  • 地址。計算機的儲存器包含許多儲存單元,怎樣才能找到所需的儲存單元呢?作業系統把所有儲存單元以位元組為單位編號,如圖2.2所示。

 

圖2.2表示:在編號為2001的位元組中存放資料3,在編號為2002的位元組中存放資料4……,以此類推。2001、2002就是儲存單元的地址。也就是說,在地址為2001的儲存單元中存放資料3,在地址為2002的儲存單元中存放資料4……。請注意,這只是示意性的說明,實際上在計算機中一般不是用一位元組存放一個整數﹐而是用2或4位元組存放一個整數。這是因為一位元組只有8個二進位制位,能存放的資料範圍比較小,因此為了擴大儲存資料的範圍,需要用幾字節來存放一個數據。

2.1.3 不同型別資料的儲存方式

 由於在計算機中的儲存形式不同,C語言中的資料是分為不同型別的。

1.整數的儲存方式


一個十進位制整數﹐先轉換為二進位制形式,如整數10,以二進位制形式表示是1010,直接把它存放在儲存單元中。如果用一位元組來儲存,儲存單元中的情況如下。

 

 

 

  • 一位元組共有8個二進位制位,左面第1位(即最高位)用來表示符號,當最高位為0時表示是正數。其他7位都用來存放數值,則它的最大值是01111111,即27_1,它相當於十進位制的127。如果數值大於127,一位元組就放不下了。這顯然是不滿足要求的。有的C語言編譯系統(如Turbo C 2.0)以兩位元組表示一個整數。這時,它的最大值是0111111111111111,即215一1,它相當於十進位制的32767。實際上使用的整數往往超過32767,顯然兩位元組放不下,因此現在的C語言編譯系統(如Visual C+)以4位元組表示一個整數﹐這時,它的最大值是31位都是1,即231—1,約為21億。一般情況下能滿足使用要求了。
  • 數值並不總是正值,往往有負數。那麼怎樣表示負數呢?是用“補碼”表示的。在計算機的儲存器中,整數是以補碼形式存放的一個正數的補碼和該數的原碼(即該數的二進位制形式)相同,如整數10的原碼和補碼都是00001010。對負數,先求出它的補碼,再存放到儲存單元中。

2.實數的儲存形式

  • 前面介紹的是整數的儲存形式,一個整數可以準確地表示為二進位制形式。如果輸入的是一個實數,如123.456,就不能採取上面的辦法。
  • 對於實數,一律採用指數形式儲存,例如123.456可以寫成標準化指數形式0.123456×103,它包括前後兩個部分:前面部分是數值部分,後面部分是指數部分,如下所示。

 

 

第3章 最簡單的C程式設計——順序程式設計
第4章 選擇結構程式設計
第5章 迴圈結構程式設計
第6章 利用陣列處理批量資料
第7章 用函式實現模組化設計
第8章 指標
第9章 結構體型別處理組合資料——使用者自定義資料型別
第10章 利用檔案儲存資料