版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第第3章章 最簡單的最簡單的C程序設計程序設計順序結構程序設計順序結構程序設計C程序設計必須具備的知識和能力:程序設計必須具備的知識和能力:1.要有正確的解題思路,即學會設計算法。要有正確的解題思路,即學會設計算法。2.掌握掌握C語言的語法規(guī)則,使用語言的語法規(guī)則,使用C語言提供的各種功能編寫出一個完語言提供的各種功能編寫出一個完 整的、正確的程序。整的、正確的程序。3.要采用結構化程序設計方法,編寫出結構化的程序,程序的通用要采用結構化程序設計方法,編寫出結構化的程序,程序的通用 性和可讀性要強。性和可讀性要強。3.1 順序結構程序設計舉例順序結構程序設計舉例例例3.1 編寫一程序?qū)⑷A氏溫度
2、轉(zhuǎn)換為攝氏溫度。編寫一程序?qū)⑷A氏溫度轉(zhuǎn)換為攝氏溫度。轉(zhuǎn)換公式:轉(zhuǎn)換公式: 程序如下:程序如下:#includeint main( ) float f,c; printf(“請輸入華氏溫度請輸入華氏溫度:”); scanf(“%f”,&f); c=(5.0/9)*(f-32); printf(“華氏溫度:華氏溫度:%f n攝氏溫度:攝氏溫度:%fn”,f,c); return 0;)32(95 fC運行結果:運行結果:請輸入華氏溫度:請輸入華氏溫度:64.0 華氏溫度:華氏溫度:64.000000 攝氏溫度:攝氏溫度:17.777778 3.2 數(shù)據(jù)的表現(xiàn)形式及其運算數(shù)據(jù)的表現(xiàn)形式及其運
3、算3.2.1 常量和變量常量和變量1.常量常量在程序運行過程中,其值不能被改變的量稱為常量。在程序運行過程中,其值不能被改變的量稱為常量。(1) 整型常量。如:整型常量。如:1000,12345,0,-345(2) 實型常量。如:實型常量。如:123.456,0.345,-56.78,0.0(十進制小數(shù)形式)(十進制小數(shù)形式) 12.34e3,-345.67e-25,0.18E25(指數(shù)形式)(指數(shù)形式) 注:指數(shù)部分必須為整數(shù)。注:指數(shù)部分必須為整數(shù)。(3) 字符常量。字符常量。 普通字符。如:普通字符。如:a,Z,?,#,8 注:注:a 和和 A 不同,不能寫成不同,不能寫成 ab , 1
4、2 或或 中中。 轉(zhuǎn)義字符。轉(zhuǎn)義字符。C語言中允許使用一種以語言中允許使用一種以 開頭的特殊形式字符常量。開頭的特殊形式字符常量。(4) 字符串常量。如:字符串常量。如:”boy”,”123”,不能寫為:,不能寫為:boy,123。轉(zhuǎn)義字符及其作用轉(zhuǎn)義字符及其作用字符形式字符形式含義含義ASCII碼碼n換行,將當前位置移到下一行開頭換行,將當前位置移到下一行開頭10t水平制表水平制表(跳到下一個跳到下一個Tab位置位置)9h退格,將當前位置移到前一列退格,將當前位置移到前一列8r回車,將當前位置移到本行開頭回車,將當前位置移到本行開頭13f換頁,將當前位置移到下頁開頭換頁,將當前位置移到下頁開
5、頭12代表一個反斜杠字符代表一個反斜杠字符“”92ooo1到到3位八進制數(shù)所代表的字符位八進制數(shù)所代表的字符xhh1到到2位十六進制數(shù)所代表的字符位十六進制數(shù)所代表的字符(5) 符號常量符號常量用一個標識符代表一個常量的,稱為符號常量。用一個標識符代表一個常量的,稱為符號常量。如:如:#define PRICE 30 #includeint main( ) int num,total; num=10; total=num*PRICE; printf(“total=%d”,total); return 0;說明說明: (1) 含義清楚。含義清楚。 (2) 在需要改變一個常量時能做到在需要改變一個
6、常量時能做到“一改全改一改全改”。 (3) 在程序中不能對符號常量重新賦值。在程序中不能對符號常量重新賦值。 (4) 符號常量一般用大寫字母表示。符號常量一般用大寫字母表示。2. 變量變量在程序運行過程中,其值可以改變的量稱為變量。在程序運行過程中,其值可以改變的量稱為變量。說明:說明:(1) C語言規(guī)定每個變量必須有一個名字,它表示一個具有特定語言規(guī)定每個變量必須有一個名字,它表示一個具有特定 屬性的存儲單元,用來存放數(shù)據(jù),即變量的值。屬性的存儲單元,用來存放數(shù)據(jù),即變量的值。 (2) 定義變量名時應注意定義變量名時應注意“見名知意見名知意”。 (3) 每個變量必須確定一個數(shù)據(jù)類型,以便系統(tǒng)
7、分配存儲單元。每個變量必須確定一個數(shù)據(jù)類型,以便系統(tǒng)分配存儲單元。 (4) 凡未被事先定義的的變量程序中不能使用。凡未被事先定義的的變量程序中不能使用。3a變量值變量值存儲單元存儲單元變量名變量名3.2.1 常量和變量常量和變量3. 常變量常變量 C99允許使用常變量。如:允許使用常變量。如:const int a=3; (1) 常變量不同于變量,程序運行期間不能改變其值。常變量不同于變量,程序運行期間不能改變其值。 (2) 常變量不同于常量,系統(tǒng)會依據(jù)定義類型分配存儲空間,常量常變量不同于常量,系統(tǒng)會依據(jù)定義類型分配存儲空間,常量 無名而常變量有名。無名而常變量有名。 (3) 常變量不同于符
8、號常量,符號常量在編譯時已用具體數(shù)值取代。常變量不同于符號常量,符號常量在編譯時已用具體數(shù)值取代。4. 標識符標識符 C語言規(guī)定用來對變量、函數(shù)、數(shù)組、類型等命名的有效字符串稱語言規(guī)定用來對變量、函數(shù)、數(shù)組、類型等命名的有效字符串稱 為標識符。為標識符。 標識符只能由字母或下劃線開頭,字母、數(shù)字和下劃線組成。標識符只能由字母或下劃線開頭,字母、數(shù)字和下劃線組成。 大寫字母和小寫字母被認為是兩個不同的字符。大寫字母和小寫字母被認為是兩個不同的字符。 如:如:sum,averge,_total,Studen_name等。等。 M.D.john,¥,¥123,#33,ab 是不合法的標識符。是不合法
9、的標識符。3.2.2 數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型基本類型基本類型浮點型浮點型單精度單精度(float)雙精度雙精度(double)枚舉類型枚舉類型數(shù)組類型數(shù)組類型( )結構體類型結構體類型(struct)共同體類型共同體類型(union)指針類型指針類型(*)整型整型基本整型基本整型(int)短整型短整型(short int)長整型長整型(long int)*雙長整型雙長整型(long long int)字符型字符型(char)*布爾型布爾型(bool)*復數(shù)型復數(shù)型(float_complex等等)空類型空類型派生類型派生類型函數(shù)類型函數(shù)類型注:圖中有注:圖中有 * 的是的是C99所增
10、加的。所增加的。3.2.3 整型數(shù)據(jù)整型數(shù)據(jù)1. 整型數(shù)據(jù)的分類整型數(shù)據(jù)的分類(1) 基本整型基本整型(int型型) 編譯系統(tǒng)分配給編譯系統(tǒng)分配給int型數(shù)據(jù)型數(shù)據(jù)2個或個或4個字節(jié)個字節(jié)(具體有編譯系統(tǒng)自行決定具體有編譯系統(tǒng)自行決定) 整型數(shù)據(jù)在內(nèi)存中的存放形式:整型數(shù)據(jù)在內(nèi)存中的存放形式: 數(shù)據(jù)在內(nèi)存中是以二進制形式存放的,如果定義了一個整形變量并數(shù)據(jù)在內(nèi)存中是以二進制形式存放的,如果定義了一個整形變量并 賦值為賦值為10,則:,則:數(shù)值是以補碼表示的,正整數(shù)的補碼和該數(shù)的原碼相同,負數(shù)的數(shù)值是以補碼表示的,正整數(shù)的補碼和該數(shù)的原碼相同,負數(shù)的補碼是將該數(shù)的絕對值取反加補碼是將該數(shù)的絕對值
11、取反加1.000000000000101011111111111101011111111111110110i10的原碼的原碼取反取反加加1得得-10的補碼的補碼最左面的一位是最左面的一位是符號位,符號位,0表示表示正數(shù);正數(shù);1表示負表示負數(shù)。數(shù)。2個字節(jié):個字節(jié):-32768327674個字節(jié):個字節(jié):-214748364821474836473.2.3 整型數(shù)據(jù)整型數(shù)據(jù)(2) 短整型短整型(short int或或short) TC中短整型和整型系統(tǒng)分配字節(jié)數(shù)相同,中短整型和整型系統(tǒng)分配字節(jié)數(shù)相同,C+6.0編譯系統(tǒng)分配編譯系統(tǒng)分配給短整型給短整型2個字節(jié),整型個字節(jié),整型4個字節(jié),存儲方式
12、相同。個字節(jié),存儲方式相同。數(shù)值范圍:數(shù)值范圍:(-3276832767)(3) 長整型長整型(long int或或long) TC和和C+6.0系統(tǒng)都分配系統(tǒng)都分配4個字節(jié)個字節(jié)(C+6.0和整型相同和整型相同)。數(shù)值范圍:數(shù)值范圍:(-231(231-1), -214748364821474837 )(4) 雙長整型雙長整型(long long int或或long long) 雙長整型是雙長整型是C99新增的類型,一般分配新增的類型,一般分配8個字節(jié),但許多個字節(jié),但許多C編譯編譯系統(tǒng)還未實現(xiàn)。系統(tǒng)還未實現(xiàn)。3.2.3 整型數(shù)據(jù)整型數(shù)據(jù)2. 整型變量的符號屬性整型變量的符號屬性變量值在存儲
13、單元中都是以補碼形式存儲的,存儲單元中的最高位變量值在存儲單元中都是以補碼形式存儲的,存儲單元中的最高位表示符號,數(shù)值范圍包括負數(shù)和正數(shù)。表示符號,數(shù)值范圍包括負數(shù)和正數(shù)。C語言中還提供一種語言中還提供一種“無符號整數(shù)無符號整數(shù)”類型類型(unsigned),用于存放無,用于存放無符號整數(shù)。符號整數(shù)。無符號基本整型無符號基本整型 (2個字節(jié)個字節(jié)) (065535) 0 (216 -1) (4個字節(jié)個字節(jié)) (04294967295) 0 (232-1)無符號短整型無符號短整型 (2個字節(jié)個字節(jié)) (0 65535) 0 (216-1) 無符號長整型常量無符號長整型常量 (4個字節(jié)個字節(jié)) (
14、0 4294967395) 0 (232-1)無符號長整型常量無符號長整型常量 (8個字節(jié)個字節(jié)) 0 (364-1)3.2.3 整型數(shù)據(jù)整型數(shù)據(jù)3. 整型變量的定義整型變量的定義凡是在凡是在C程序中用到的變量都必須事先定義,變量的定義可使用程序中用到的變量都必須事先定義,變量的定義可使用(int,short int,long int,unsigned int等等)例:例:int a,b; short c,d; unsigned int e,f; unsigned short g,h; long i,j; unsigned long k,l; long long m,n; unsigned l
15、ong long o,p;4. 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出 數(shù)據(jù)溢出時將自動進位到符號位。數(shù)據(jù)溢出時將自動進位到符號位。例例3.3 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出(TC中中int變量最大允許值為變量最大允許值為32767)#includeint main() int a,b; a=32767;b=a+1; printf(“%d,%dn”,a,b); return 0運行結果為:運行結果為:32767,-327680 1 1 1 1 1 1 1 1 1 1 1 1 1 111 0 0 0 0 0 0 0 0 0 0 0 0 0 00a:b:32767-327683.2.4 字符型數(shù)據(jù)字符型數(shù)據(jù)字
16、符是按代碼字符是按代碼(整數(shù)整數(shù))形式存儲的,因此形式存儲的,因此C99將字符型數(shù)據(jù)作為整數(shù)將字符型數(shù)據(jù)作為整數(shù)的一種。的一種。1. 字符與字符代碼字符與字符代碼C語言編譯系統(tǒng)將字母、數(shù)字、專用符號、空格符、控制字符共語言編譯系統(tǒng)將字母、數(shù)字、專用符號、空格符、控制字符共127個字符以個字符以ASCII形式存儲。形式存儲。如:如:A6501000001B6601000010a9701100001b98011000100480011000014900110001空格空格32 00100000 %3700100101 n1000001010a 響鈴響鈴700000111一個一個ASCII碼存儲一個
17、字節(jié),最高位為碼存儲一個字節(jié),最高位為0,一個中文字母存儲二個字,一個中文字母存儲二個字節(jié),最高位為節(jié),最高位為1。 2. 字符變量字符變量字符型變量用來存放字符常量,在字符型變量用來存放字符常量,在C的所有編譯系統(tǒng)中都規(guī)定一的所有編譯系統(tǒng)中都規(guī)定一個字節(jié)它只能存放一個個字節(jié)它只能存放一個ASCII字符。字符。字符變量的定義用類型說明符字符變量的定義用類型說明符char或或character定義。定義。例:例:char c1,c2;它表示它表示c1和和c2為字符型變量,各可以存放一個字符,因此在賦為字符型變量,各可以存放一個字符,因此在賦值時應該表示為:值時應該表示為: c1=a;c2=b;字
18、符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法字符型變量中存儲的不是該字符的本身,而是該字符對應的字符型變量中存儲的不是該字符的本身,而是該字符對應的ASCII碼。碼。0110000197ac1例例1. #include int main() char c1,c2; c1=97;c2=98; prntf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); return 0 輸出結果:輸出結果:a b 97 98例例2.#include int main() char c1,c2; c1=a;c2=b; c1=c1-32;c2=c2-32;
19、printf(“%c %cn”,c1,c2); return 0 輸出結果:輸出結果:A B3.2.5 浮點型數(shù)據(jù)浮點型數(shù)據(jù)1. 浮點型常量的表示方法浮點型常量的表示方法十進制小數(shù)形式十進制小數(shù)形式(123.0)、指數(shù)形式、指數(shù)形式(1.23e2)一個浮點數(shù)可以有多種指數(shù)表示形式:一個浮點數(shù)可以有多種指數(shù)表示形式:如:如:123e0,12.3e1,1.23e2,0.123e3規(guī)范的指數(shù)輸出形式表示為:規(guī)范的指數(shù)輸出形式表示為:0.123e+0032. 浮點型變量浮點型變量(1) 浮點型型數(shù)據(jù)在內(nèi)存中的存放形式浮點型型數(shù)據(jù)在內(nèi)存中的存放形式(4個字節(jié)共個字節(jié)共32位位)例如:例如:3.14159
20、+0.3141591數(shù)符數(shù)符 小數(shù)部分小數(shù)部分 指數(shù)指數(shù)+ .314159 x101小數(shù)部分和指數(shù)部分在小數(shù)部分和指數(shù)部分在32位中如何位中如何分配分配C標準沒有明確規(guī)定,一般標準沒有明確規(guī)定,一般C編編譯系統(tǒng)以譯系統(tǒng)以24位表示小數(shù)部分位表示小數(shù)部分(包括符包括符號位號位),以,以8位表示指數(shù)部分位表示指數(shù)部分(包括指包括指數(shù)符號位數(shù)符號位)。3.2.5 浮點型數(shù)據(jù)浮點型數(shù)據(jù)(2) 浮點型變量的分類浮點型變量的分類(單精度單精度-32、雙精度、雙精度-64、長雙精度、長雙精度-128)(3) 浮點型變量的定義浮點型變量的定義 例:例:float x,y; double z; long dou
21、ble t;類型類型位數(shù)位數(shù)有效數(shù)字有效數(shù)字數(shù)值范圍數(shù)值范圍float326-1.2x10-383.4x1038double6415-2.3x10-3081.7x10308long double64*1281519-2.3x10-3081.7x10308-3.4x10-49321.1x1049323.2.5 浮點型數(shù)據(jù)浮點型數(shù)據(jù)(4) 浮點型數(shù)據(jù)的舍入誤差浮點型數(shù)據(jù)的舍入誤差浮點型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字浮點型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的??偸怯邢薜?。例:例: #includeint main() float a,b; a=123456
22、.789e5; b=a+20; printf(“%fn”,b); return 0理論值:理論值:12345678920實際值:實際值:12345678848.000000浮點型變量只能保證的有效數(shù)浮點型變量只能保證的有效數(shù)字是字是7位位3.2.6 變量類型的確定變量類型的確定變量類型的確定應依據(jù)常量的數(shù)據(jù)類型以及數(shù)據(jù)范圍來確定。變量類型的確定應依據(jù)常量的數(shù)據(jù)類型以及數(shù)據(jù)范圍來確定。整型常量:整型常量:(1) 一個整數(shù),如果其值在一個整數(shù),如果其值在-3276832767范圍內(nèi),認為它是范圍內(nèi),認為它是int,它,它可以賦值給可以賦值給int型和型和long int 型。型。(2) 一個整數(shù),
23、如果超過上述范圍,而在一個整數(shù),如果超過上述范圍,而在-21474836482147483647范圍內(nèi),則認為它是長整形。它可以范圍內(nèi),則認為它是長整形。它可以賦給賦給long int 型。型。(3) 由于由于C版本中版本中short int 和和int長度相同,系統(tǒng)認為是長度相同,系統(tǒng)認為是int型,可以型,可以賦給賦給 int 型或型或 short int 型。型。(4) 一個常量后面加一個字母一個常量后面加一個字母u或或U(如:如:12345u,12345U),系統(tǒng)認,系統(tǒng)認為是為是 unsigned int 型。型。(5) 在一個整常量后面加一個字母在一個整常量后面加一個字母 l 或或
24、 L ,則認為是,則認為是 long int 型常型常量量(如:如:123l,4567L)。3.2.6 變量類型的確定變量類型的確定浮點型常量浮點型常量:(1)C編譯系統(tǒng)將浮點型常量作為雙精度來處理。編譯系統(tǒng)將浮點型常量作為雙精度來處理。例:例:f=2.45678*4523.65先將兩個常量作為雙精度數(shù),然后進行相乘運算,如果先將兩個常量作為雙精度數(shù),然后進行相乘運算,如果f為浮點型,為浮點型,則結果截取則結果截取7位有效數(shù)字賦給位有效數(shù)字賦給f。(2)一個浮點型常量可以賦給一個一個浮點型常量可以賦給一個float型、型、double型或型或long double型。根據(jù)變量的類型截取相應的有
25、效數(shù)字。型。根據(jù)變量的類型截取相應的有效數(shù)字。(3)例:例:f=2.45678f*4523.65f(4)如果一個常量要作為長雙精度處理應在數(shù)字后加如果一個常量要作為長雙精度處理應在數(shù)字后加l或或L。例:例:long double a=1.23L3.2.7 運算符和表達式運算符和表達式C語言的運算符范圍廣,把除了控制語句和輸入輸出語句外的幾語言的運算符范圍廣,把除了控制語句和輸入輸出語句外的幾乎所有的基本操作運算都作為運算符處理。乎所有的基本操作運算都作為運算符處理。1. 基本的算術運算符基本的算術運算符+ (正正)、 (負負)、 + (加加)、-(減減)、*(乘乘)、/(除除)、%(求余求余)
26、例:例:8%322. 自增、自減運算符自增、自減運算符自增、自減運算符作用是使變量的值增自增、自減運算符作用是使變量的值增1或減或減1,如:,如:+ + i,- - i (在使用在使用i前,先使前,先使i的值加的值加(減減)1)i + +,i - - (在使用(在使用i后,使后,使i的值加的值加(減減)1)注意:注意: 自增和自減運算符只能用于變量,而不能用于常量或自增和自減運算符只能用于變量,而不能用于常量或 表達式。表達式。(例如:例如:8+,(a+b)+是不允許的是不允許的) 自增和自減運算符的結合方向是自增和自減運算符的結合方向是“自右至左自右至左”。 例如:例如:-i+ 不能表示為不
27、能表示為 (-i)+ ,相當于,相當于 -(i+)相當于執(zhí)行相當于執(zhí)行i=i+1或或i=i-13. 算術表達式和運算符的優(yōu)先級與結合性算術表達式和運算符的優(yōu)先級與結合性(1) 用算術運算符和括號將運算對象連接起來的、符合用算術運算符和括號將運算對象連接起來的、符合C語言語言規(guī)則式子,稱規(guī)則式子,稱C算術表達式。算術表達式。 如:如:a*b/c-1.5+a(2) 根據(jù)運算符的優(yōu)先級,決定了表達式的運算次序。根據(jù)運算符的優(yōu)先級,決定了表達式的運算次序。(3) 根據(jù)運算符的結合方向,一般采用根據(jù)運算符的結合方向,一般采用“左結合性左結合性”,有些運,有些運算符采用算符采用“右結合性右結合性”。4.
28、各類數(shù)值型數(shù)據(jù)間的混合運算各類數(shù)值型數(shù)據(jù)間的混合運算整型、實型和字符型數(shù)據(jù)間可以進行混合運算,如:整型、實型和字符型數(shù)據(jù)間可以進行混合運算,如:10+a+1.5-8765.1234*b進行運算時,不同類型的數(shù)據(jù)先轉(zhuǎn)換成同一類型,然后進行運算,進行運算時,不同類型的數(shù)據(jù)先轉(zhuǎn)換成同一類型,然后進行運算,轉(zhuǎn)換規(guī)則如下:轉(zhuǎn)換規(guī)則如下:doublefloatlongunsignedintChar,short低低高高5. 強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符根據(jù)需要利用強制類型轉(zhuǎn)換運算符可以將一個表達式轉(zhuǎn)換成所需根據(jù)需要利用強制類型轉(zhuǎn)換運算符可以將一個表達式轉(zhuǎn)換成所需類型。如:類型。如:(double)a
29、、(int)(x+y)、(float)(5%3)例例: #include int main() float x=3.6; int i; i=(int)x%2; printf(“x=%f,i=%dn”,x,i); return 0; 運行結果:運行結果:x=3.600000,i=16. 運算符的分類運算符的分類(1) 算術運算符算術運算符 ( +、-、 *、 /、 %、 +、 - )(2) 關系運算符關系運算符( 、=、=、!= )(3) 邏輯運算符邏輯運算符( !、&、| )(4) 位運算符位運算符( 、|、& )(5) 賦值運算符賦值運算符( =及其擴展賦值運算符及其擴展賦值
30、運算符 )(6) 條件運算符條件運算符( ?: )(7) 逗號運算符逗號運算符( , )(8) 指針運算符指針運算符( *和和& )(9) 求字節(jié)數(shù)運算符求字節(jié)數(shù)運算符( sizeof )(10) 強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符( (類型類型) )(11) 成員運算符成員運算符( . 、- )(12) 下標運算符下標運算符( )(13) 其他運算符其他運算符( 如函數(shù)調(diào)用運算符如函數(shù)調(diào)用運算符() )3.3 C語言語言3.3.1 C語句的作用和分類語句的作用和分類lC語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一個語句經(jīng)編譯語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一個語句經(jīng)編譯后產(chǎn)生
31、若干條機器指令。一個實際的程序應當包含若干語句。后產(chǎn)生若干條機器指令。一個實際的程序應當包含若干語句。lC語句都是用來完成一定操作任務的。聲明部分的內(nèi)容不應稱為語句都是用來完成一定操作任務的。聲明部分的內(nèi)容不應稱為語句。如:語句。如:int a;不是一個不是一個C執(zhí)行語句,它不產(chǎn)生機器操作,而執(zhí)行語句,它不產(chǎn)生機器操作,而只是對變量的定義。只是對變量的定義。l一個函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句一個函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句(分別進分別進行編譯的文件模塊行編譯的文件模塊)組成。組成。l一個一個C程序可以由若干個源程序文件組成,一個源文件可以由若程序可以由若干個源程
32、序文件組成,一個源文件可以由若干個函數(shù)和預處理命令以及全局變量聲明部分組成。干個函數(shù)和預處理命令以及全局變量聲明部分組成。(1)一個函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句組成。一個函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句組成。C程序結構程序結構:C程序程序源程序文件源程序文件1全局變量聲明全局變量聲明函數(shù)函數(shù)1預處理命令預處理命令源程序文件源程序文件2源程序文件源程序文件n函數(shù)函數(shù)n函數(shù)首部函數(shù)首部函數(shù)體函數(shù)體局部變量聲明局部變量聲明執(zhí)行語句執(zhí)行語句C語句的分類語句的分類:1. 控制語句控制語句if() else ;(條件語句條件語句) for() ;(循環(huán)語句循環(huán)語句) while() ; (循環(huán)語句循環(huán)語句)
33、do while(); (循環(huán)語句循環(huán)語句) continue;(結束本次循環(huán)語句結束本次循環(huán)語句) switch;(多分支選擇語句多分支選擇語句)break;(終止執(zhí)行終止執(zhí)行swith或循環(huán)語句或循環(huán)語句) goto;(轉(zhuǎn)向語句轉(zhuǎn)向語句) return (從函數(shù)返回語句從函數(shù)返回語句)例:例:if (xy) z=x; else z=y;2. 函數(shù)調(diào)用語句函數(shù)調(diào)用語句 (由一個函數(shù)調(diào)用加一個分號構成由一個函數(shù)調(diào)用加一個分號構成)printf(“This is C statement.”);3. 表達式語句表達式語句 (由一個表達式加一個分號構成由一個表達式加一個分號構成)a=3 賦值表達式賦
34、值表達式 a=3; 賦值語句賦值語句 C語句的分類:語句的分類:4. 空語句空語句;可作為流程的轉(zhuǎn)向點或循環(huán)語句的循環(huán)體??勺鳛榱鞒痰霓D(zhuǎn)向點或循環(huán)語句的循環(huán)體。5. 復合語句復合語句 (用用 把一些語句括起來成為復合語句把一些語句括起來成為復合語句) z=z+y; t=z/100; printf(%f”,t);3.3.2最基本的語句最基本的語句賦值語句賦值語句例例3.4 輸入三角形的三邊長,求三角形面積輸入三角形的三邊長,求三角形面積#include #include int main()float a,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&am
35、p;c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s);printf(“area=%7.2fn”,area);return 0運行情況如下:運行情況如下:3,4,6輸出:輸出:a=3.00,b=4.00,c=6.00,s=6.50 area=5.332/ )()()(acbascsbsassrea 其中其中:求三角形面積的公式為求三角形面積的公式為3.3.2最基本的語句最基本的語句賦值語句賦值語句1. 賦值運算符賦值運算符賦值運算符賦值運算符“=”
36、的作用是將一個數(shù)據(jù)賦給一個變量。的作用是將一個數(shù)據(jù)賦給一個變量。如:如:a=3,c=a*b。2. 復合的賦值運算符復合的賦值運算符 在賦值符在賦值符“=”之前加上其他運算符,可以構成復合的運算符,如:之前加上其他運算符,可以構成復合的運算符,如:a+=3等價與等價與 a=a+3x*=y+8等價與等價與 x=x*(y+8)x%=3等價與等價與 x=x%3C語言采用復合運算符,一是為了簡化程序,使程序精練,二是為語言采用復合運算符,一是為了簡化程序,使程序精練,二是為了提高編譯效率,能產(chǎn)生質(zhì)量較高的目標代碼。但對于初學者來了提高編譯效率,能產(chǎn)生質(zhì)量較高的目標代碼。但對于初學者來說,不必都用,首要的
37、是保持程序清晰易懂。說,不必都用,首要的是保持程序清晰易懂。3.3.2最基本的語句最基本的語句賦值語句賦值語句3. 賦值表達式賦值表達式一般形式:一般形式:功能:計算右邊表達式的值,并賦給左邊的變量。功能:計算右邊表達式的值,并賦給左邊的變量。例:例:a=123(將將123賦給變量賦給變量a) b=a (將將a的值賦給變量的值賦給變量b)表達式中也允許使用賦值運算符。表達式中也允許使用賦值運算符。例:例: a=(b=5)(表達式值為表達式值為5,a,b值均為值均為5) a=b=c=5 (表達式值為表達式值為5,a,b,c值均為值均為5) a=(b=4)+(c=6)(表達式值為表達式值為10,a
38、值為值為11,b等于等于4,c等于等于6) a=(b=10)/(c=2)(表達式值為表達式值為5,a等于等于5,b等于等于10,c等于等于2) a+=a-=a*a (如果如果a初值為初值為12,a=a-a*a,a=12-144=-132 a=a+a=(-132)+(-132)=-264)3.3.2最基本的語句最基本的語句賦值語句賦值語句4. 賦值過程中的類型轉(zhuǎn)換賦值過程中的類型轉(zhuǎn)換如果賦值運算符兩側的類型不一致,賦值時要進行類型轉(zhuǎn)換。如果賦值運算符兩側的類型不一致,賦值時要進行類型轉(zhuǎn)換。(1) 將浮點型數(shù)據(jù)賦給整型變量時,將浮點型數(shù)據(jù)賦給整型變量時,舍棄浮點數(shù)的小數(shù)部分舍棄浮點數(shù)的小數(shù)部分。例
39、如:例如:i為為int變量變量 i=3.56 i=3 (2) 將整型數(shù)據(jù)賦給浮點型變量時,數(shù)值不變,但以浮點數(shù)存儲。將整型數(shù)據(jù)賦給浮點型變量時,數(shù)值不變,但以浮點數(shù)存儲。例如:例如:f為為float變量變量 f=23 f=23.00000(3) 將將double型賦給型賦給float變量時,截取其前面變量時,截取其前面7位有效數(shù)字。但應位有效數(shù)字。但應注意數(shù)據(jù)的溢出。注意數(shù)據(jù)的溢出。(4) 將字符型數(shù)據(jù)賦給整型變量時,存入整型變量將字符型數(shù)據(jù)賦給整型變量時,存入整型變量低低8位位中。在中。在C+中高中高8位補位補0。4. 賦值過程中的類型轉(zhuǎn)換賦值過程中的類型轉(zhuǎn)換(5) 將整型數(shù)據(jù)賦給字符型變量
40、時,將整型數(shù)據(jù)賦給字符型變量時,只取低只取低8位位數(shù)據(jù)送入字符數(shù)據(jù)送入字符型變量。型變量。例如:例如:i為為int,c為為char,i=321;c=i; c=A(6) 將帶符號的將帶符號的int賦給賦給long時,要進行符號擴展,正補時,要進行符號擴展,正補0,負,負補補1。(7) 將非符號的將非符號的int賦給賦給long時,不存在符號擴展問題,只需高時,不存在符號擴展問題,只需高位補位補0。0 0 0 0 0 0 0 1 0 1 0 0 0 0 015. 賦值表達式和賦值語句賦值表達式和賦值語句賦值語句是由賦值表達式加上一個分號構成。賦值語句是由賦值表達式加上一個分號構成。a=b;賦值語句
41、賦值語句C語言的賦值語句具有其他高級語言的賦值語句的一切特點和功語言的賦值語句具有其他高級語言的賦值語句的一切特點和功能。但也應當注意到它們的不同:能。但也應當注意到它們的不同:(1) C語言中的賦值號語言中的賦值號“=”是一個運算符,在其他大多數(shù)語言中是一個運算符,在其他大多數(shù)語言中賦賦 值號不是運算符。值號不是運算符。(2) 其他多數(shù)高級語言沒有其他多數(shù)高級語言沒有“賦值表達式賦值表達式”一概念。作為賦值表一概念。作為賦值表達達 式可以包括在其他表達式之中,例如:式可以包括在其他表達式之中,例如:if (a=b)0) t=a;其中其中a=b是賦值表達式是賦值表達式等價于等價于a=b;if(
42、a0) t=a;在在if語句中的語句中的“a=b”不是賦值語句更不是條件表達式,而是賦值不是賦值語句更不是條件表達式,而是賦值表達式,但不能表示為:表達式,但不能表示為:if (a=b;)0) t=a;6. 變量賦初值變量賦初值1. C語言允許在定義變量的同時使變量初始化,如:語言允許在定義變量的同時使變量初始化,如:int a=3;float f=3.56;char c=a;2. 也可以對部分變量賦初值,如:也可以對部分變量賦初值,如:int a,b,c=5;3. 如果要對多個變量賦同一個值,應寫成:如果要對多個變量賦同一個值,應寫成:int a=3;b=3;c=3; /* 不能表示為不能表
43、示為a=b=c=3 */相當于:相當于:int a,b,c;a=3;b=3;c=3;3.4 數(shù)據(jù)的輸入輸出數(shù)據(jù)的輸入輸出3.4.1 輸入輸出舉例輸入輸出舉例例例12 求一元二次方程的根。求一元二次方程的根。a、b、c由鍵盤輸入,設由鍵盤輸入,設b2-4ac0。#include#includeint man() float a,b,c,disc,x1,x2,p,q; scanf(“a=%f,b=%f,c=%f”,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf(
44、“x1=%5.2fnx2=%5.2fn”,x1,x2); return 0;運行情況如下:運行情況如下:a=1,b=3,c=2x1=-1.00 x2=-2.003.4.2 數(shù)據(jù)輸入輸出的概念數(shù)據(jù)輸入輸出的概念1. 輸入輸出是以計算機主機為主體而言的。即通過輸入設備向計算機輸入輸出是以計算機主機為主體而言的。即通過輸入設備向計算機提供數(shù)據(jù)稱為數(shù)據(jù)輸入,計算機向外部設備輸出數(shù)據(jù)稱為數(shù)據(jù)輸出。提供數(shù)據(jù)稱為數(shù)據(jù)輸入,計算機向外部設備輸出數(shù)據(jù)稱為數(shù)據(jù)輸出。2. C語言本身不提供輸入輸出語句,輸入輸出是由函數(shù)實現(xiàn)。語言本身不提供輸入輸出語句,輸入輸出是由函數(shù)實現(xiàn)。 如:如:printf(),scanf()
45、,putchar(),getchar(),puts(), gets()等。等。系統(tǒng)不提供輸入輸出語句就可以避免在編譯階段處理與硬件有關的系統(tǒng)不提供輸入輸出語句就可以避免在編譯階段處理與硬件有關的問題,使編譯系統(tǒng)簡化,而且通用性強,可移植性好,對各種型號問題,使編譯系統(tǒng)簡化,而且通用性強,可移植性好,對各種型號的計算機都適用,便于在各種計算機上實現(xiàn)。的計算機都適用,便于在各種計算機上實現(xiàn)。3. C語言函數(shù)庫中提供了語言函數(shù)庫中提供了“標準輸入輸出函數(shù)標準輸入輸出函數(shù)”,但使用,但使用C語言函數(shù)語言函數(shù)庫時,要用預編譯命令庫時,要用預編譯命令“include”將有關將有關”頭文件頭文件”包含到用戶
46、源包含到用戶源文件中。文件中。例如:例如:# include 或或 # include “stdio.h”3.4.3 用用printf函數(shù)輸出數(shù)據(jù)函數(shù)輸出數(shù)據(jù)C語言提供了一組完整的輸入和輸出格式,可以滿足各種不同的輸語言提供了一組完整的輸入和輸出格式,可以滿足各種不同的輸入輸出的需求,實際使用中重點掌握一些常用的規(guī)則即可。入輸出的需求,實際使用中重點掌握一些常用的規(guī)則即可。1. printf函數(shù)的一般格式:函數(shù)的一般格式:printf(格式控制格式控制,輸出表列輸出表列)例如:例如:printf(“i=%d c=%cn”,i,c); “格式控制格式控制”由由“格式說明格式說明”和和“普通字符普
47、通字符”兩部分組成。兩部分組成。 格式說明:由格式說明:由“%”和格式字符組成和格式字符組成 普通字符:需要原樣輸出的字符普通字符:需要原樣輸出的字符 “輸出表列輸出表列”是需要輸出的一些數(shù)據(jù)。是需要輸出的一些數(shù)據(jù)。由于由于printf是函數(shù),因此是函數(shù),因此“格式控制格式控制”字符串和字符串和“輸出表列輸出表列”實際實際上都是函數(shù)的參數(shù),上都是函數(shù)的參數(shù),printf函數(shù)的一般形式表示為:函數(shù)的一般形式表示為:printf (參數(shù)參數(shù)1,參數(shù),參數(shù)2,參數(shù),參數(shù)3,參數(shù)參數(shù)n)3.4.3 用用printf函數(shù)輸出數(shù)據(jù)函數(shù)輸出數(shù)據(jù)2. 格式字符格式字符 對不同類型的數(shù)據(jù)應使用不同的格式字符對不
48、同類型的數(shù)據(jù)應使用不同的格式字符 d格式符,用來輸出十進制整數(shù)格式符,用來輸出十進制整數(shù) %d,按整型數(shù)據(jù)實際長度輸出按整型數(shù)據(jù)實際長度輸出 %md,m為指定輸出寬度,如果數(shù)據(jù)位數(shù)小于為指定輸出寬度,如果數(shù)據(jù)位數(shù)小于m,左端補空格,左端補空格 %ld,輸出長整型數(shù)據(jù),輸出長整型數(shù)據(jù) 例:例:printf(“%d,%4d,%ld,%8ld”,a,b,c,d); 若若a=12,b=123,c=123456,d=56789 則輸出結果為:則輸出結果為: 12,123,123456,56789 o格式符,以八進制數(shù)形式輸出整數(shù)(包含格式符,以八進制數(shù)形式輸出整數(shù)(包含%o,%mo,%lo等)等) 例:
49、例:printf(“%d,%o”,a,a); 輸出結果:輸出結果:12,14 x格式符,以十六進制數(shù)形式輸出整數(shù)(包含格式符,以十六進制數(shù)形式輸出整數(shù)(包含%x,%mx,%lx等)等) 例:例:printf(“%d,%x”,b,b); 輸出結果:輸出結果:123,7B3.4.3 用用printf函數(shù)輸出數(shù)據(jù)函數(shù)輸出數(shù)據(jù) u格式符,以十進制形式輸出無符號整數(shù)格式符,以十進制形式輸出無符號整數(shù)(包含包含%u,%mu,%lu等等) unsigned型數(shù)據(jù)也可以用型數(shù)據(jù)也可以用%d,%o,%x格式輸出。格式輸出。 例例: #include int main() unsigned int a=65535
50、; int b=-2; printf(a=%d,%o,%x,%un,a,a,a,a); printf(b=%d,%o,%x,%un,b,b,b,b); return 0; 運行結果為運行結果為 (65535表示表示16位全部為位全部為“1”) a=-1,177777,ffff,65535 b=-2,177776,fffe,65534 3.4.3 用用printf函數(shù)輸出數(shù)據(jù)函數(shù)輸出數(shù)據(jù) c格式符,用來輸出一個字符格式符,用來輸出一個字符(包含包含%c,%mc) 例例: char c=a; printf(“%c,%dn”,c,c); 運行結果:運行結果:a,97 一個整數(shù),只要它的值在一個整數(shù),
51、只要它的值在0255范圍內(nèi),也可以用范圍內(nèi),也可以用“%c”輸出,但輸出,但輸出的是該整數(shù)作為輸出的是該整數(shù)作為ASCII碼對應的字符。碼對應的字符。 s格式符,用來輸出一個字符串格式符,用來輸出一個字符串(包含包含%s,%ms,%-ms,%m.ns,%-m.ns) 例例: printf(“%3s,%7.2s,%.4s,%-5.3sn”,”CHINA”,”CHINA”,”CHINA”,”CHINA”); 輸出結果:輸出結果:CHINA,CH,CHIN,CHI3.4.3 用用printf函數(shù)輸出數(shù)據(jù)函數(shù)輸出數(shù)據(jù) f格式符,用來以小數(shù)形式輸出實數(shù)(包含格式符,用來以小數(shù)形式輸出實數(shù)(包含%f,%m
52、.nf,%-m.nf等)等)例:例:printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);若若f=123.456 則則輸出結果:輸出結果: 123.456001123.456001123.46123.46123.46 e格式符,用來以指數(shù)形式輸出實數(shù)(包含格式符,用來以指數(shù)形式輸出實數(shù)(包含%e,%m.ne,%-m.ne等)等)例:例:printf(“%e%10e%10.2e%.2e%-10.2en”,f,f,f,f,f);若若f=123.456 則則輸出結果:輸出結果: 1.234560e+0021.234560e+0021.23e+0021.23e+00
53、21.23e+002 13列列 13列列 10列列 9列列 10列列 g格式符,根據(jù)數(shù)值大小,自動選格式符,根據(jù)數(shù)值大小,自動選f格式或格式或e格式輸出實數(shù)格式輸出實數(shù)例:例: printf(“%f%e%g”,f,f,f);( f=123.468 )輸出結果:輸出結果:123.4680001.234680e+002123.468f格式輸出格式輸出10列,列,e格式輸出格式輸出13列,列,g格式自動選擇兩種格式中的短格式。格式自動選擇兩種格式中的短格式。3.4.3 用用printf函數(shù)輸出數(shù)據(jù)函數(shù)輸出數(shù)據(jù)printf函數(shù)的函數(shù)的9種格式符見種格式符見(p74表表3.6)和附加說明符和附加說明符(
54、表表3.7)。使用使用printf函數(shù)的有關說明:函數(shù)的有關說明:(1) 除了除了X、E、G外,其他格式字符必須用小寫。外,其他格式字符必須用小寫。(2) 可以在可以在printf函數(shù)中的函數(shù)中的“格式控制格式控制”字符串內(nèi)包含字符串內(nèi)包含“轉(zhuǎn)義字符轉(zhuǎn)義字符”, 如如“n”、“t”、“377”等。等。(3) 格式控制符必須使用格式控制符必須使用“%”開頭,以格式字符之一為結束,中間開頭,以格式字符之一為結束,中間 可以插入附加格式字符。例如:可以插入附加格式字符。例如:printf (“c=%c f=%f s=%s”,c,f,s);(4) 如果想輸出字符如果想輸出字符“%”,則應該在,則應該在“格式控制格式控制”字符串中用連續(xù)字符串中用連續(xù)兩兩 個個%表示。表示。 例如:例如:printf(“%5.2f%”,1.0/3); 輸出:輸出:0.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年智慧社區(qū)安防系統(tǒng)安裝與維護合同3篇
- 2025年人教版PEP一年級數(shù)學下冊階段測試試卷
- 2024年雞西市人民醫(yī)院醫(yī)療集團梨樹醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024新版樣機合同標準版
- 2024年石河子工程職業(yè)技術學院高職單招語文歷年參考題庫含答案解析
- 2025年華東師大版五年級數(shù)學下冊月考試卷
- 2025年浙教版七年級數(shù)學上冊階段測試試卷
- 項目管理方案的課程設計
- 2025年上外版拓展型課程生物下冊階段測試試卷含答案
- 2025年外研銜接版選擇性必修1地理下冊階段測試試卷含答案
- 《護士條例》課件
- 工業(yè)組態(tài)控制技術說課
- 高校數(shù)據(jù)中心災備系統(tǒng)建設方案
- 深圳某項目空調(diào)蓄冷水池施工技術方案
- 全套教學課件《工程倫理學》
- 婦科術后病人飲食護理
- 腦梗塞后遺癥護理查房
- 2024至2030年中國豬肉脯行業(yè)市場發(fā)展現(xiàn)狀及潛力分析研究報告
- 安裝空調(diào)勞務合同協(xié)議書
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- 自動化生產(chǎn)線設計報告
評論
0/150
提交評論