C語言的基本構成
知識點:C語言的注釋;關鍵字;書寫風格;常量和變量
重要程度:★★★★
1、C語言的良好風格
用C語言編寫的程序,稱為C語言源程序,簡稱C程序。
本節將通過一個簡單的C程序例子,向大家介紹C語言的一些基本構成和如何寫出風格良好的程序,使讀者對C語言有一個初步的認識。
例1:計算兩個整數之和的C程序
#include "stdio.h"
main( ) /*求兩數之和*/
{
int a,b,sum; /*變量說明*/
a=10; /*把整數10賦值給變量a */
b=20; /*把整數20賦值給變量b */
sum=a+b; /*把兩數之和賦值給變量sum */
printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把計算結果輸出到用戶屏幕上*/
}
好的風格: 1. 花括號獨占一行,有對應關系的花括號在同一列;
2. 有層次關系的代碼有必要的縮進;
3. 一條語句獨占一行
4. 有適當的注釋
2、關於注釋的說明(考點一)
² 程序中以“/*”開頭並且以“*/”結尾的部分表示程序的注釋部分。
² 注釋可以加在程序的任何位置。
² 注釋是為了提高程序的可讀性而增加的,不屬於C語言。
² /*/*ddddddd*/*/ 這樣的注釋不是合法的。注釋是從“/*“開始到”*/“結束的。以該例為准,屬於注釋的就是/* */兩個之間的/*ddddddd,所以最后剩下的*/就是多余了。
例1: 閱讀以下程序,想一想結果是多少?
main( )
{ int a=0,b=0;
a =10; /*給a賦值
b=20; 給b賦值 */
printf("a+b=%d\n",a+b); /*輸出計算結果*/
}
這是2006年9月全國計算機等級考試二級考試的第19題。需要特別注意的是,程序第三行“/*”開始的注釋部分,直到第四行末尾才結束。因此上面的程序等價於以下的程序:
main( )
{ int a=0,b=0;
a =10;
printf("a+b=%d\n",a+b);
}
3、標識符(考試重點)
在C語言中用於標識名字的有效字符序列稱為標識符。標識符可以用作常量名、變量名、符號名、函數名和后面要學到的指針名、數組名等。C語言中標識符的命名規則如下:
1)標識符只能由字母、數字和下划線組成;
2)標識符的第一個字符必須是字母或下划線。
3)標識符區分大小寫字母。如int與Int是兩個完全不同的標識符。
合法的標識符:
a x sum spels program ab1 _to file_5 a1b2c3 _2 B3
非法的標識符:
ab12# (含有不合法的字符“#”)
a1-c (含有不合法的字符“-”)
ab c (空格不是合法標識符)
pr (“p”不是字母,為不合法標識符字符)
23ab (第一個字符不能為數字)
C語言的標識符分為如下三類:
1)關鍵字
關鍵字是具有特定含義的、專門用來說明C語言特定成分的一類標識符。關鍵字均由小寫字母構成。Int 就不是關鍵字。
2)預定義標識符
預定義標識符(如printf,scanf,sin,isalum等)和編譯預處理命令名(如define,include等)。注意,預定義標識符可以作為“用戶標識符”使用。
3)用戶標識符(考試重點)
不能是關鍵字;只能由字母、數字和下划線組成;第一個字符必須是字母或下划線。
Int可以作為用戶標識符,int就不可以作為用戶標識符。
考點:1. 識別哪些是(或不是)標識符
2. 識別哪些是(或不是)用戶標識符
例2: 以下不能定義為用戶標識符的是
A) scanf B) Void C) _3com_ D) int
分析:本題答案選D。因為int是關鍵字,關鍵字不能作為用戶標識符。答案(A)的scanf雖然是預定義標識符,但是預定義標識符可以作為用戶標識符使用。(B)中Void的第一個字符V大寫,它與關鍵字void是兩個不同的標識符,故它可以作為用戶標識符。(C)中的_3com_符合標識符的命名規則,且不是關鍵字,故可以定義為用戶標識符。
例3:以下不合法的用戶標識符是
A) j2_KEY B) Double C) 4d D)_8_
分析:本題答案選C。答案(A)是一個用戶標識符,符合標識符的命名規則。答案(B)也是用戶標識符,需要注意的是,它與關鍵字double是兩個不同的標識符。答案(D)是用戶標識符,由數字和下划線組成,且第一個字符為下划線。只有答案(C)是不合法的用戶標識符,因為它的第一個字符是數字,不符合標識符的命名規則。
- 標識符的常見錯誤:
1. 數字開頭
2. 包含減號“-”
3. 用戶標識符使用的是關鍵字
4、常量。
C語言中,還有另外一種常量是用標識符命名的,稱為符號常量。下面程序的PI就是符號常量。
例4: 計算圓面積的C語言程序
#define PI 3.14159
main( )
{ float r,area;
r=12.5;
area=PI*r*r;
printf("area=%f\n",area);
}
程序的第一行是宏定義,以后遇到PI就用其后的內容——3.14159來原樣替換。這里的PI就是一個符號常量。通常,符號常量用大寫字母表示,但這並不是語法上的要求,只不過用大寫字母書寫符號常量,便於辨認。當進行宏定義后,程序中只要用到相應的數值常量都可以用符號常量代替,這就給程序的修改提供了方便。例如,如果需要進一步提高圓周率的精度,可以直接修改宏定義中的數值常量:
#define PI 3.1415926
這樣,程序中只要用到PI的地方,其值都自動變為3.1415926。
5、變量
與常量對應的是變量。顧名思義,變量就是在程序的運行過程中其值可以改變的量。例1中的a,b都是變量,它們是由用戶定義的標識符,變量的命名必須遵循標識符的命名規則。
用盒子的理論來描述:
1) 變量就是盒子,里面裝的內容可以改變。
2) 通過賦值語句就可以改變盒子里的內容。
3) 每次使用盒子時,盒子里都應該有確切的內容而不能是不確定的值。
4) 每次使用盒子時,都是用的現在盒子里裝的內容。以前裝過什么內容沒有任何影響。