版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C程序設(shè)計實例教程 山東科技大學機電學院,1,第一章 C語言概述,本章的主要內(nèi)容: C語言的發(fā)展 C語言的組成及特點 C 語言的調(diào)試方法 程序設(shè)計入門,C程序設(shè)計實例教程 山東科技大學機電學院,2,本章的學習要求 : 了解:C語言的發(fā)展 掌握:C語言的特點、簡單C程序的組成 掌握:C程序的上機調(diào)試步驟 重點:簡單C程序的組成、上機調(diào)試步驟 難點:集成開發(fā)環(huán)境的學習、程序調(diào)試方法,C程序設(shè)計實例教程 山東科技大學機電學院,3,1.1 C語言的發(fā)展,一、程序設(shè)計語言的發(fā)展:,CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成 如:10000000 加 10010000 減,用助記符號描述的指令系統(tǒng) 如
2、ADD A, B,客觀世界可以分類,對象是類的實例 對象是數(shù)據(jù)和方法的封裝 對象間通過發(fā)送和接受消息發(fā)生聯(lián)系,程序設(shè)計是數(shù)據(jù)被加工的過程,C程序設(shè)計實例教程 山東科技大學機電學院,4,二、C語言發(fā)展過程 產(chǎn)生過程 時間:19721973 地點:美國貝爾實驗室 目的:UNIX操作系統(tǒng) 設(shè)計人: Ken.Thompson和Dennis.M.Ritchie C標準 標準C: K /*格式輸出函數(shù)*/ ,C程序設(shè)計實例教程 山東科技大學機電學院,8,例題 2,#include /*函數(shù)功能:計算兩個整數(shù)相加之和 入口參數(shù):整型數(shù)據(jù)a和b 返回值: 整型數(shù)a和b之和 */ int Add(int a,
3、int b) return (a + b); /*主函數(shù)*/ main() int x, y, sum = 0; printf(Input two integers:); scanf(%d%d, /*輸出x和y相加之和*/ ,C程序設(shè)計實例教程 山東科技大學機電學院,9,例題 3,判斷一個數(shù)是否為素數(shù)。 #include stdio.h void main() int i,n; scanf(%d, ,C程序設(shè)計實例教程 山東科技大學機電學院,10,例4 正弦函數(shù),#include stdio.h #include math.h #define PI 3.1415926 /*宏定義*/ void
4、 main() double x; scanf(%lf, /*調(diào)用系統(tǒng)函數(shù)*/ ,C程序設(shè)計實例教程 山東科技大學機電學院,11,例4 正弦函數(shù),#include stdio.h #include math.h #define PI 3.1415926 /*宏定義*/ double sinx(double x); /*函數(shù)聲明語句*/ void main() double x; scanf(%lf, ,C程序設(shè)計實例教程 山東科技大學機電學院,12,例5 漢諾塔,C程序設(shè)計實例教程 山東科技大學機電學院,13,例5 漢諾塔,#include stdio.h void move(char s,c
5、har t) printf(%c-%c ,s,t); void Hanoi(int n,char one,char two,char three) if(n=1) move(one,three); else Hanoi(n-1,one,three,two); move(one,three); Hanoi(n-1,two,one,three); ,C程序設(shè)計實例教程 山東科技大學機電學院,14,例5 漢諾塔,void main() int h; printf(input number:n); scanf(%d, ,C程序設(shè)計實例教程 山東科技大學機電學院,15,1.3 C程序的調(diào)試方法,C程序上
6、機操作過程主要包括以下幾個步驟: (1)編輯。選擇合適的編輯程序,將C語言源程序通過鍵盤輸入到計算機中,并保存為擴展名為“.c”的源文件。 (2)編譯。該過程對編輯好的源文件經(jīng)過C編譯程序進行編譯,生產(chǎn)擴展名為.obj的目標文件。 (3)連接。經(jīng)過編譯后生成的目標文件還是不能執(zhí)行的,還需要通過連接程序?qū)⒃次募傻哪繕宋募推浒膸旌瘮?shù)及其他目標文件連接后才能生成擴展名為.exe的可執(zhí)行程序。 (4)執(zhí)行。執(zhí)行過程是將連接生成的可執(zhí)行文件在操作系統(tǒng)下運行,檢查程序運行結(jié)果。,C程序設(shè)計實例教程 山東科技大學機電學院,16,C程序上機操作流程,C程序設(shè)計實例教程 山東科技大學機電學院,17,1
7、.4 程序設(shè)計入門,程序設(shè)計的過程,簡單地說就是數(shù)據(jù)被加工的過程。人們可以通過程序在計算機中的執(zhí)行來完成對計算機的各種控制。學習程序設(shè)計的目的就是學會控制計算機的能力。 一個程序應(yīng)包括: (1)對數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure)。 (2)對操作的描述。即操作步驟,也就是算法(algorithm)。,C程序設(shè)計實例教程 山東科技大學機電學院,18,使用C語言進行程序設(shè)計的主要步驟包括: (1)分析所要處理的具體問題,確定需要的數(shù)據(jù)結(jié)構(gòu)及解決問題的方法。 (2)通過一定方式將數(shù)據(jù)結(jié)構(gòu)和算法進行描述。 (3)用C語言將解決問題需要的數(shù)據(jù)
8、結(jié)構(gòu)、算法進行描述,即編制C程序。 (4)將編制好的C程序通過編譯、連接、執(zhí)行后得出解決問題的結(jié)果。,C程序設(shè)計實例教程 山東科技大學機電學院,19,1.5 Turbo C 2.0集成開發(fā)環(huán)境,一、TurboC 2.0集成開發(fā)環(huán)境 主菜單內(nèi)容有: File Edit Run Compile Project Options Debug Break/watch 除Edit外,其他各項均有子菜單,只要用Alt加上某項中第一個字母,就可進入該項的子菜單中,由于篇幅限制,這里只介紹常用的部分功能菜單。,C程序設(shè)計實例教程 山東科技大學機電學院,20,1.6 Visual C+ 6.0 集成環(huán)境調(diào)試,啟動
9、Visual C+ 6.0 創(chuàng)建新工程 創(chuàng)建源文件 源程序的調(diào)試與運行 源程序書寫 源程序編譯 運行程序,C程序設(shè)計實例教程 山東科技大學機電學院,21,第二章 數(shù)據(jù)類型,內(nèi)容提要: 標識符命名; 基本數(shù)據(jù)類型; 常量和變量; 常用運算符和表達式; 運算符的優(yōu)先級與結(jié)合性,C程序設(shè)計實例教程 山東科技大學機電學院,22,關(guān)鍵字(Keyword) 又稱為保留字,C語言中預先規(guī)定的具有固定含義的一些單詞 int,return等 標識符(Identifier) 系統(tǒng)預定義標識符,main,printf 等 用戶自定義標識符,Add, x, y 等 運算符(Operator) 34種,詳見附錄2,C程
10、序常見符號分類,2.1 標識符和字符集,C程序設(shè)計實例教程 山東科技大學機電學院,23,分隔符(Separator) 空格、回車/換行、逗號等 其它符號 大花括號“”和“”通常用于標識函數(shù)體或者一個語句塊 “/*”和“*/”是程序注釋所需的定界符 數(shù)據(jù)(Data) 變量(Variable) 常量(Constant),C程序設(shè)計實例教程 山東科技大學機電學院,24,標識符: 定義:用來標識變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線 大小寫敏感 不能使用關(guān)鍵字 長度:最長32個字符,C程序設(shè)計實例教程 山東科技大學機電學院,25,命名原則:
11、見名知意 不宜混淆 如l與1, o與0,例:判斷下列標識符號合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,C程序設(shè)計實例教程 山東科技大學機電學院,26,C語言的標識符可分為以下3類。 1. 關(guān)鍵字:關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。 (1)類型說明符。用于定義、說明變量、函數(shù)或其他數(shù)據(jù)結(jié)構(gòu)的類型。如前面例題中用到的int,double等。 (2)語句定義符。用于表示一個語句的功能。如例1.3中用到的if else就是條件語句的語句定義符。 (
12、3)預處理命令字。用于表示一個預處理命令,如前面各例中用到的include。,C程序設(shè)計實例教程 山東科技大學機電學院,27,C語言共有32個關(guān)鍵字: (由系統(tǒng)定義,不能重作其它定義) auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while,C程序設(shè)計實例教程
13、 山東科技大學機電學院,28,2. 特定字 特定字是具有特殊含義的標識符。它們雖然不是關(guān)鍵字,但是在習慣上把它們看成關(guān)鍵字。所以一般用戶定義的標識符也不要使用它們。 特定字包括: define undef include ifdef ifndef endif line,C程序設(shè)計實例教程 山東科技大學機電學院,29,3. 用戶定義字 用戶定義字指用戶按照語法規(guī)則定義的標識符。用戶定義字可以用來標識用戶自己使用的變量,符號常量、數(shù)據(jù)類型以及函數(shù)等。 注意: (1)不能使用關(guān)鍵字和特定字。 (2)用戶定義字為了標識不同的對象,標識符的前8個字符要有區(qū)別。 (3)標識符最好有含義。 (4)避免使用容
14、易混淆的字符。如l與1,0與o,z與2等。 (5)大、小寫代表不同的意義。 (6)盡量不要與某個庫函數(shù)同名,C程序設(shè)計實例教程 山東科技大學機電學院,30,字 符 集 字符集是高級語言的編譯系統(tǒng)所能識別的字母、數(shù)字和特殊符號。每種高級語言都有自己特定的字符集。 C語言的字符集包括: (1)大、小寫英文字母: A ,B, ,Z,a,b,z。 (2)數(shù)字: 0,1,2,9。 (3)運算符: + * / % = 。 (6)特殊符號: _ $ #。 (7)空白符:空格符、換行符和制表符。,C程序設(shè)計實例教程 山東科技大學機電學院,31,2.2 數(shù)據(jù)類型,數(shù)據(jù)為什么要區(qū)分類型? 不同類型的數(shù)據(jù)代表不同的
15、 數(shù)據(jù)表示形式 合法的取值范圍 占用內(nèi)存空間大小 可參與的運算種類,C程序設(shè)計實例教程 山東科技大學機電學院,32,2.2 數(shù)據(jù)類型,C程序設(shè)計實例教程 山東科技大學機電學院,33,基本數(shù)據(jù)類型,整型,字符型,實型,有,無,說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBM PC機為例:,C程序設(shè)計實例教程 山東科技大學機電學院,34,數(shù)值常量和符號常量 定義:在程序運行過程中,其值不能被改變的量稱為常量。如12、0、3為整型常量,4.6、1.23為實型常量,a、d為字符常量。 也可以用一個標識符代表一個常量,稱為符號常量。習慣上,符號常量名用大寫,變量名用小寫,以示區(qū)別。 使用符號常
16、量的好處 : 含義清楚,符號常量名在定義時應(yīng)考慮“見名知意”。 在需要改變一個常量時能做到“一改全改”。,2.3 常量和變量,C程序設(shè)計實例教程 山東科技大學機電學院,35,舉例:符號常量的使用 #define PRICE 30 #include void main ( ) int num,total; num=10; total=num * PRICE; printf(total=%d,total); 程序中用#define命令行定義PRICE代表常量30。 該程序的運行結(jié)果:total=300,C程序設(shè)計實例教程 山東科技大學機電學院,36,變量 定義:變量是由程序命名的一塊計算機內(nèi)存區(qū)域
17、,是用來存儲一個可以變化的數(shù)值。 定義變量的格式為:類型說明符 變量名表 ; 請注意區(qū)分變量名和變量值這兩個不同的概念 : 變量名實際上是以一個名字對應(yīng),代表一個地址。,2.3 常量和變量,C程序設(shè)計實例教程 山東科技大學機電學院,37,整型常量 定義:整型常量就是整常數(shù)。 分類:在C語言中,使用的整常數(shù)有八進制、十六進制和十進制三種。 八進制整常數(shù)。八進制整常數(shù)必須以0開頭,即以0作為八進制數(shù)的前綴,數(shù)碼取值為07。如:015(十進制為13),0101(十進制為65),0177777(十進制為65535)。,2.4 整型數(shù)據(jù)類型,C程序設(shè)計實例教程 山東科技大學機電學院,38,十六進制整常數(shù)
18、。十六進制整常數(shù)的前綴為0X或0 x,其數(shù)碼取值為09,AF或af。 如:0X2A(十進制為42),0XA0(十進制為160),0XFFFF(十進制為65535) 十進制整常數(shù)。十進制整常數(shù)沒有前綴,其數(shù)碼為09,2.4 整型數(shù)據(jù)類型,C程序設(shè)計實例教程 山東科技大學機電學院,39,十進制:4956= 410+910 +510+610,二進制:1011=12+02 +12+12,十六進制:81AE=816+116 +1016+1416,八進制:4275=48+28 +78+58,常見數(shù)制表示方法:,C程序設(shè)計實例教程 山東科技大學機電學院,40,整型變量 內(nèi)存中的存放形式 :整型常量就是整常數(shù)
19、。,2.4 整型數(shù)據(jù)類型,內(nèi)存以字節(jié)為單元組成 每個字節(jié)有一個地址 一個字節(jié)一般由8個二進制位組成 每個二進位的值是0或1,1、字節(jié)和位,C程序設(shè)計實例教程 山東科技大學機電學院,41,2、數(shù)值的表示方法原碼、反碼和補碼 原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值 反碼: 正數(shù):反碼與原碼相同 負數(shù):符號位為1,其余位對原碼取反 補碼: 正數(shù):原碼、反碼、補碼相同 負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加1,C程序設(shè)計實例教程 山東科技大學機電學院,42,整型變量 分類: 基本型。類型說明符為int,在內(nèi)存中占2個字節(jié),其取值為基本整常數(shù)。 短整量。類型說明符為short int
20、或short。所占字節(jié)和取值范圍均與基本型相同。 長整型。類型說明符為long int或long ,在內(nèi)存中占4個字節(jié),其取值為長整常數(shù)。 無符號型。類型說明符為unsigned。,2.4 整型數(shù)據(jù)類型,C程序設(shè)計實例教程 山東科技大學機電學院,43,整型變量 說明: 一般形式為:類型說明符 變量名標識符,變量名標識符。 例如: int a,b,c; (a,b,c為整型變量) long x,y; (x,y為長整型變量) unsigned p,q; (p,q為無符號整型變量),2.4 整型數(shù)據(jù)類型,C程序設(shè)計實例教程 山東科技大學機電學院,44,在書寫變量說明時,應(yīng)注意 : 允許在一個類型說明符
21、后,說明多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。 最后一個變量名之后必須以“;”號結(jié)尾。 變量說明必須放在變量使用之前,一般放在函數(shù)體的開頭部分。,2.4 整型數(shù)據(jù)類型,C程序設(shè)計實例教程 山東科技大學機電學院,45,實例,整型變量的定義和使用。 #include void main() int a,b,c,d; /*指定a、b、c、d為整型變量*/ unsigned u; /*指定u為無符號整型變量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn”,c,d); 運行結(jié)果為: a+u=2
22、2,b+u=-14 可以看到不同種類的整型數(shù)據(jù)可以進行算術(shù)運算。在本例中是int型數(shù)據(jù)與unsigned int型數(shù)據(jù)進行相加相減運算。,C程序設(shè)計實例教程 山東科技大學機電學院,46,【例2.3】 整型數(shù)據(jù)的溢出 #include void main() int a,b; a=32767; b=a+1; printf(%d,%d,a,b); 在TurboC 2.0環(huán)境下運行結(jié)果為:32767,-32768 而在Visual C+ 6.0環(huán)境下,由于是32位應(yīng)用程序,int類型占4個字節(jié),所以輸出結(jié)果為:32768,32768,C程序設(shè)計實例教程 山東科技大學機電學院,47,變量a的最高位為0
23、,后15位全為1。加1后變成第1位為1,后面15位全為0。而它是32768的補碼形式,所以輸出變量b的值為32768。請注意:一個整型變量只能容納一3276832767范圍內(nèi)的數(shù),無法表示大于32767的數(shù)。,C程序設(shè)計實例教程 山東科技大學機電學院,48,在Visual C+下查看整型在內(nèi)存的表示 #include stdio.h void main() int n,i=31,a32=0; scanf(%d, ,C程序設(shè)計實例教程 山東科技大學機電學院,49,在Visual C+下查看整型在內(nèi)存的表示 #include stdio.h void main() int n=65536,i,j=
24、3; char *p; p=(char *) ,C程序設(shè)計實例教程 山東科技大學機電學院,50,浮點常量 定義:浮點數(shù)就是平常所說的實數(shù) 。 分類:有兩種形式:十進制數(shù)形式和指數(shù)形式 。 十進制數(shù)形式。由數(shù)碼0 9和小數(shù)點組成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均為合法的浮點數(shù)。 指數(shù)形式。由十進制數(shù)、加階碼標志“e”或“E”以及階碼(只能為整數(shù),可以帶符號)組成。其一般形式為a E n(a為十進制數(shù),n為十進制整數(shù))其值為 a*10n,如:2.1E5(等于2.1*105),3.7E-2(等于3.7*10-2)。,2.5 浮點型數(shù)據(jù)類型,C程序設(shè)
25、計實例教程 山東科技大學機電學院,51,浮點變量 分類:浮點型變量分為單精度(float)型、雙精度(double)型和長雙精度(long double)型三類 。 定義形式: 單精度(float)型。float a,b; 雙精度(double)型。double c,d; 長雙精度(long double)型。 long double t;,2.5 浮點型數(shù)據(jù)類型,C程序設(shè)計實例教程 山東科技大學機電學院,52,實例,【例2.4】把一個浮點實型常數(shù)9876543219分別賦給一個float型變量和double型變量,以驗證單精度變量和雙精度變量的區(qū)別。 #include void main(
26、) float a; double b; a=987654.3219; b=987654.3219; printf(a=%fnb=%fn,a,b); 由于float型變量a只能接受7位有效數(shù)字,因此,從第八位(即小數(shù)點后第二位)起數(shù)字已不準確,而double型變量b能全部接受上述l0位數(shù)字。,運行結(jié)果如下: a=987654.312500 b=987654.321900,C程序設(shè)計實例教程 山東科技大學機電學院,53,字符常量 定義:字符常量是用單引號括起來的一個字符。例如a,b,=,+,?都是合法字符常量。 定義形式: 字符常量只能用單引號括起來,不能用雙引號或其他括號。 字符常量只能是單個
27、字符,不能是字符串。 字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。 轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線開頭,后跟一個或幾個字符。,2.6 字符類型,C程序設(shè)計實例教程 山東科技大學機電學院,54,表2-2 轉(zhuǎn)義字符及其含義,C程序設(shè)計實例教程 山東科技大學機電學院,55,廣義地講,語言字符集中的任何一個字符均可用轉(zhuǎn)義字符來表示。表2-2中的ddd和xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如101表示字母A ,102表示字母B,134表示反斜線,XOA表示換行等。,C程序設(shè)計實例教程 山東科技大學機電學院,56,【例2.
28、5】轉(zhuǎn)義字符的使用 #include void main() int a,b,c; a=5; b=6; c=7; printf(%dnt%d %dn %d %dtb%dn,a,b,c,a,b,c); a、b、c為整數(shù)5-a,6-b,7-c 調(diào)用printf顯示程序運行結(jié)果 printf(%dnt%d %dn %d %dtb%dn,a,b,c,a,b,c);,C程序設(shè)計實例教程 山東科技大學機電學院,57,以下程序輸出結(jié)果 #include stdio.h void main() printf(1234567890123456789012345n); printf(thellotabcn); ,
29、C程序設(shè)計實例教程 山東科技大學機電學院,58,以下程序輸出結(jié)果 #include stdio.h void main() printf(1234567890123456789012345n); printf(thellotbabcn); t之后的b刪除了制表符號,所以abc緊接著前面進行輸出,C程序設(shè)計實例教程 山東科技大學機電學院,59,字符變量 類型說明符:char 取值:字符常量,即單個字符 舉例: 【例2.6】向字符變量賦以整數(shù)。 #include void main( ) char a,b; a=120; b=121; printf(%c,%cn%d,%dn,a,b,a,b); ,
30、顯示結(jié)果: a,b 120,121,C程序設(shè)計實例教程 山東科技大學機電學院,60,例2.7 大小寫字母的轉(zhuǎn)換。 #include void main() char a,b; a=x; b=y; a=a-32; b=b-32; printf(%c,%cn%d,%dn,a,b,a,b); ,C程序設(shè)計實例教程 山東科技大學機電學院,61,字符串常量 定義:是由一對雙引號括起的字符序列 ,如:“CHINA” 。 與字符常量區(qū)別 : (1)字符常量由單引號括起來,字符串常量由雙引號括起來。 (2)字符常量只能是單個字符,字符串常量則可以含一個或多個字符。 (3)可以把一個字符常量賦予一個字符變量,但
31、不能把一個字符串常量賦予一個字符變量。 (4)字符常量占一個字節(jié)的內(nèi)存空間。,C程序設(shè)計實例教程 山東科技大學機電學院,62,字符和字符串的區(qū)別,占用空間不同 #include stdio.h void main() printf(%d,%dn,sizeof(a),sizeof(a); ,C程序設(shè)計實例教程 山東科技大學機電學院,63,2.7 不同數(shù)據(jù)類型之間的轉(zhuǎn)換,一、自動轉(zhuǎn)換 環(huán)境:自動轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運算時,由編譯系統(tǒng)自動完成。 3+A+5/2=? 3+A+5.0/2=? 遵循以下規(guī)則: (1)若參與運算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算。 (2)轉(zhuǎn)換按數(shù)據(jù)長度
32、增加的方向進行,以保證精度不降低。,C程序設(shè)計實例教程 山東科技大學機電學院,64,(3)所有的浮點運算都是以雙精度進行的。 (4)char型和short型參與運算時,必須先轉(zhuǎn)換成int型。 (5)在賦值運算中,賦值號兩邊量的數(shù)據(jù)類型不同時, 賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。,不同類型自動轉(zhuǎn)換規(guī)則,C程序設(shè)計實例教程 山東科技大學機電學院,65,#include stdio.h void main() int a=10; char b=A; float x=3.14; printf(%lfn, a+b*2+x*3); ,C程序設(shè)計實例教程 山東科技大學機電學院,66,二、強制類型轉(zhuǎn)換
33、實現(xiàn):通過類型轉(zhuǎn)換運算來實現(xiàn)的 。 形式為: (類型說明符)(表達式) 注意問題: (1)類型說明符和表達式都必須加括號。 (2)無論是強制轉(zhuǎn)換或是自動轉(zhuǎn)換,都是臨時性轉(zhuǎn)換,不改變數(shù)據(jù)說明時對該變量定義的類型。,C程序設(shè)計實例教程 山東科技大學機電學院,67,【例2.9】強制類型轉(zhuǎn)換。 #include void main( ) float f=5.75; printf(int)f=%d,f=%fn,(int)f,f); 運行結(jié)果: (int)f=5,f=5.750000,C程序設(shè)計實例教程 山東科技大學機電學院,68,第三章 運算符和表達式,掌握:算術(shù)、關(guān)系、邏輯等常見運算符 掌握:各種運算
34、符的優(yōu)先級 掌握:各種表達式的組成及運算過程 重點:運算符的優(yōu)先級及表達式分析計算 難點:自增、自減運算符,C程序設(shè)計實例教程 山東科技大學機電學院,69,3.1 算術(shù)運算符和算術(shù)表達式,算術(shù)運算符 int a=5,b=20,x,y; x=a+; y=+b; a=? b=? x=? y=?,C程序設(shè)計實例教程 山東科技大學機電學院,70,算術(shù)表達式 定義:算術(shù)表達式是由算術(shù)運算符和括號將運算對象連接起來的式子,其中運算對象可以是常量、變量、函數(shù)、數(shù)組元素等內(nèi)容。 形式: 表達式1 算術(shù)運算符 表達式2 【例3.1】若a=5,b=3,c=2,x=1.5,則算術(shù)表達式a*x*x+b*x+c的結(jié)果是
35、多少?,C程序設(shè)計實例教程 山東科技大學機電學院,71,注意: (1)當運算符“/”兩側(cè)的操作數(shù)為整型時,計算結(jié)果為整型,如19/2=9。 (2)運算符“%”兩側(cè)的操作數(shù)必須是基本整型、短整型或長整型數(shù),而不能是浮點型數(shù)字。 (3)運算符“+”、“-”只能用于變量,而不能用于常量或表達式,如:i+、-j均是正確的,而+10、(a+b)+則是錯誤的。,C程序設(shè)計實例教程 山東科技大學機電學院,72,3.2 賦值運算符和賦值表達式,賦值運算符,C程序設(shè)計實例教程 山東科技大學機電學院,73,賦值表達式 定義: 賦值表達式是由賦值運算符和括號將運算對象連接起來的式子,其中運算對象可以是常量、變量、函
36、數(shù)、數(shù)組元素等內(nèi)容。 形式: 變量名稱 賦值運算符 表達式,C程序設(shè)計實例教程 山東科技大學機電學院,74,舉例,【例3.4】已知int a=5,b=3,x=10,計算如下表達式的值。 a=a*8 表達式值為40,a=40 b%=2 表達式值為1,b=1 x*=(a+b) 表達式值為410,x=410 a=b=c=5 表達式值為5,a,b,c值為5 a=(b=5) b=5,a=5 a=5+(c=6) 表達式值為11,c=6,a=11 a=(b=4)+(c=6) 表達式值為10,a=10,b=4,c=6 a=(b=10)/(c=2) 表達式值為5,a=5,b=10,c=2,C程序設(shè)計實例教程 山
37、東科技大學機電學院,75,注意: (1)對于簡單賦值運算符和復合賦值運算符,等號左側(cè)的操作數(shù)只能為變量,而不能是常量或表達式,如a=5是正確的,而10=3+2以及a+b=8都是錯誤的。 (2)賦值運算符具有右結(jié)合性,因此a=b=c=10是正確的,等價于a=(b=(c=10)。 (3)當?shù)忍枴?”兩側(cè)的類型不同時,將要進行數(shù)值類型的轉(zhuǎn)換,C程序設(shè)計實例教程 山東科技大學機電學院,76,賦值語句 在賦值表達式的基礎(chǔ)上添加“;”就構(gòu)成了賦值語句。如x=(a=4)+8;計算時先計算右側(cè)括號中的內(nèi)容,然后與8相加,并將結(jié)果賦給變量x。 【例3.5】已知華氏溫度與攝氏溫度之間的轉(zhuǎn)換公式為C=5/9*(F-
38、32),編寫程序?qū)⑤斎氲娜A氏溫度轉(zhuǎn)換為攝氏溫度輸出,C程序設(shè)計實例教程 山東科技大學機電學院,77,#include stdio.h void main() int f; float c; scanf(%d, /*輸出結(jié)果*/ ,C程序設(shè)計實例教程 山東科技大學機電學院,78,3.3 關(guān)系運算符和關(guān)系表達式,關(guān)系運算符 C語言提供了6種關(guān)系運算符,C程序設(shè)計實例教程 山東科技大學機電學院,79,關(guān)系表達式 定義:關(guān)系表達式是由關(guān)系運算符和括號將運算對象連接起來的式子,其中運算對象可以是常量、變量、函數(shù)、數(shù)組元素等內(nèi)容。 一般組成形式: 表達式1 關(guān)系運算符 表達式2 注意: 關(guān)系表達式的結(jié)果是
39、1或0,前者對應(yīng)于關(guān)系成立,后者對應(yīng)于關(guān)系不成立。如: 531 關(guān)系不成立,表達式的值為0 (3+7)!=(2+8) 關(guān)系不成立,表達式的值為0,C程序設(shè)計實例教程 山東科技大學機電學院,80,【例3.6】若有int a=3,b=2,c=1,d,f; 則 ab /表達式值1 (ab)=c /表達式值1 b+cb /d=1 f=abc /f=0 注意: (1)表達式1和表達式2還可以是常量、變量的形式,也可以是賦值表達式、邏輯表達式、關(guān)系表達式等表達式嵌套的形式。 (2)關(guān)系表達式的值為0或1。,C程序設(shè)計實例教程 山東科技大學機電學院,81,3.4 邏輯運算符和邏輯表達式,邏輯運算符,其中邏輯
40、與運算符 scanf(%d, ,C程序設(shè)計實例教程 山東科技大學機電學院,86,注意: (1)在邏輯運算值時,以“1”代表“真”,“0”代表“假”;但在判斷一個量是為“真”還是為“假”時,以“0”代表“假”,以非“0”的數(shù)值作為“真”。如3 float x=200,y=0.85; printf(%d,%dn,i=5 ,C程序設(shè)計實例教程 山東科技大學機電學院,88,3.5 條件運算符和條件表達式,條件運算符 :C語言提供了1種條件運算符,其中該運算符是三目運算符,具有右結(jié)合性。,C程序設(shè)計實例教程 山東科技大學機電學院,89,條件表達式 定義:條件表達式是由條件運算符和有關(guān)表達式、變量或常量等
41、組成的式子。 條件表達式的一般形式為: 表達式1? 表達式2: 表達式3 其求值規(guī)則為:如果表達式1的值為真,則以表達式2 的值作為條件表達式的值,否則以表達式3的值作為整個條件表達式的值。如存在兩個整型變量a=5,b=10,求二者之間的較大值,可以用條件表達式表示為:ab?a:b。,C程序設(shè)計實例教程 山東科技大學機電學院,90,注意: (1)條件運算符中“?”和“”是一對運算符,不能分開單獨使用; (2)條件運算符的結(jié)合方向是自右至左。因此ab?a:cd?c:d應(yīng)理解為ab?a:(cd?c:d)。,【例】 if(ab) max=a; else max=b; 改寫成用條件表達式表示的形式為:
42、max=ab?a:b。,C程序設(shè)計實例教程 山東科技大學機電學院,91,3.6 逗號運算符和逗號表達式,逗號運算符 :C語言提供了1種逗號運算符,C程序設(shè)計實例教程 山東科技大學機電學院,92,逗號表達式 定義:逗號表達式是由逗號運算符和有關(guān)變量、常量、表達式等組成的式子。 逗號表達式的一般形式為: 表達式1,表達式2, 表達式3 求解的順序: 是自左向右進行,先求解表達式1的值,然后求解表達式2的值,依次類推,整個逗號表達式的值是最后一個表達式的值。,C程序設(shè)計實例教程 山東科技大學機電學院,93,【例3.9】 計算如下逗號表達式的值。 a=3*5,a*4 /a=15,表達式值60 a=3*
43、5,a*4,a+5 /a=15,表達式值20 x=(a=3,6*3) /賦值表達式,表達式值18,x=18 x=a=3,6*a /逗號表達式,表達式值18,x=3,C程序設(shè)計實例教程 山東科技大學機電學院,94,注意: (1)并不是所有出現(xiàn)逗號的地方都是逗號表達式,如在變量說明中,函數(shù)參數(shù)表中逗號只是用作各變量之間的間隔符。 (2)逗號表達式中各個表達式也可以是逗號表達式的形式,即(表達式1,表達式2),表達式3,構(gòu)成表達式嵌套的形式。 (3)通常是要分別求逗號表達式內(nèi)各表達式的值,并不一定要求整個逗號表達式的值。,C程序設(shè)計實例教程 山東科技大學機電學院,95,設(shè)有定義:int x=2;以下
44、表達式中,值不為6的是_D_。 A)x*=x+1 B)x+,2*x C)x*=(1+x) D)2*x, x+=2 為表示關(guān)系xy z,應(yīng)使用的C語言表達式是_A_。 A) (x=y) A) 30 B) 24 C) 60 D) 48,C程序設(shè)計實例教程 山東科技大學機電學院,96,表達式y(tǒng)=(1312?15:67?8:9)的值為_ 。 A) 9B) 8 C) 15 D) 1 若x=5,y=3 則y*=x+5; y的值為_。 A) 10B) 20 C) 15D) 30 以下程序的運行結(jié)果是_。 main ( ) int x=10,y=10; printf(“%d %dn”, x-, -y); ,C
45、程序設(shè)計實例教程 山東科技大學機電學院,97,已有定義 int x=3, y=4, z=5;則表達式 “!(x+y)+z-1 while(i=100) s=s+i; i=i+1; printf(s=%dn,s); ,C程序設(shè)計實例教程 山東科技大學機電學院,113,三、N-S結(jié)構(gòu)圖描述法,定義:1973年美國學者I.Nassi和B.Shneiderman提出了一種新的程序控制流程圖的表示方法,即N-S結(jié)構(gòu)圖。 用 N-S結(jié)構(gòu)圖表示三種基本結(jié)構(gòu) 順序結(jié)構(gòu),選擇結(jié)構(gòu),C程序設(shè)計實例教程 山東科技大學機電學院,114,三、N-S結(jié)構(gòu)圖描述法,循環(huán)結(jié)構(gòu),(a)當型循環(huán),(b)直到型循環(huán),C程序設(shè)計實例
46、教程 山東科技大學機電學院,115,舉例,【例4.4】輸出兩個整數(shù)中的較大值,用N-S結(jié)構(gòu)的流程圖表示算法,C程序設(shè)計實例教程 山東科技大學機電學院,116,算法的特點 一個算法應(yīng)該具有以下5個重要的特征,在表示一個算法時需要從這些特征出發(fā),以使得設(shè)計的算法切實可行。 有窮性:一個算法必須保證執(zhí)行有限步之后結(jié)束; 確切性:算法的每一步驟必須有確切的定義; 輸入:一個算法有0個或多個輸入,以刻劃運算對象的初始情況,所謂0個輸入是指算法本身給定了初始條件;,C程序設(shè)計實例教程 山東科技大學機電學院,117,輸出:一個算法有一個或多個輸出,以反映對輸入數(shù)據(jù)加工后的結(jié)果。沒有輸出的算法是毫無意義的;
47、可行性:算法原則上能夠精確地運行,且人們用筆和紙做有限次運算后即可完成。,C程序設(shè)計實例教程 山東科技大學機電學院,118,4.2 C程序語句,C語句分為5種類型,分別是表達式語句、函數(shù)調(diào)用語句、控制語句、復合語句和空語句。 表達式語句 定義:由運算符和操作數(shù)組合起來的符合C語言格式的式子。 分類:可分為算術(shù)表達式、邏輯表達式、關(guān)系表達式等多種形式。 格式為:;表達式語句是由一個完整的表達式及分號“;”構(gòu)成一個語句 注意:表達式和表達式語句的區(qū)別就在于后者帶有分號,是一個可以運行的語句。,C程序設(shè)計實例教程 山東科技大學機電學院,119,函數(shù)調(diào)用語句 定義:函數(shù)調(diào)用語句是在函數(shù)調(diào)用的基礎(chǔ)上加分
48、號“;”組成的 。 調(diào)用格式: 函數(shù)名稱(實參表列); 舉例: c=getchar(); /*用于從鍵盤讀入一個字符*/ printf(c=%c,c); /*用于將c進行格式輸出*/ m=max(a,b,c); /*用于求取a、b、c三者之間的最大值并將結(jié)果賦值給m*/,C程序設(shè)計實例教程 山東科技大學機電學院,120,控制語句 定義:用于控制程序執(zhí)行的語句。 分類:C語言中共有9種控制語句,包括選擇分支結(jié)構(gòu)(if、ifelse、ifelse ifelse)、循環(huán)結(jié)構(gòu)(ifgoto、while、dowhile、for)以及循環(huán)控制語句break和continue語句。 調(diào)用格式:if(expr
49、ession) statements;,C程序設(shè)計實例教程 山東科技大學機電學院,121,實例分析:輸入兩個數(shù)字,求兩個數(shù)的較大值。 分析:對于兩個數(shù)字求較大值的方法,主要是對其數(shù)值進行比較,在C語言中用關(guān)系運算符(、=、!=和=)來表示,兩個數(shù)的大小關(guān)系有前者大于后者以及前者小于或等于后者兩種形式,是一種典型的雙分支選擇結(jié)構(gòu),用ifelse來實現(xiàn)。,C程序設(shè)計實例教程 山東科技大學機電學院,122,復合語句,復合語句 定義:是用一對大括號 將多條語句括起來的一組特殊語句,有時候也稱之為“程序段”,整體上作為一條語句 。 調(diào)用格式: 語句1; 語句2; 語句n; 或 語句1; 語句2; 語句n
50、; ,C程序設(shè)計實例教程 山東科技大學機電學院,123,舉例:求1+2+3+4+5。 #include stdio.h void main() int i=1,sum=0; while(i=5) /*復合語句作為循環(huán)體語句*/ sum+=i; i+; printf(sum=%dn,sum); 注意:復合語句可以嵌套,并且在復合語句內(nèi)部可以進行變量的定義和初始化,這些變量在復合語句外部無效。,C程序設(shè)計實例教程 山東科技大學機電學院,124,空語句,空語句 定義:空語句是沒有任何符號的語句,僅僅以分號“;”作為標識。 格式: ; 作用:空語句本身沒有實際功能,只是表示什么操作都不做 目的:一是定
51、義程序結(jié)構(gòu)并在以后增加語句;二是實現(xiàn)空循環(huán)等待;三是實現(xiàn)跳轉(zhuǎn)目標點等。,C程序設(shè)計實例教程 山東科技大學機電學院,125,4.3 順序結(jié)構(gòu)程序設(shè)計,字符的輸入和輸出 (1)getchar() 格式:char getchar(void); 功能:從鍵盤讀入一個字符,返回該字符的ASCII,可以將該結(jié)果賦值給字符變量或整型變量 ?;剀嚱Y(jié)束輸入 ( 2)getch() 格式:int getch(void); 功能:從鍵盤讀入一個字符,返回該字符的ASCII,但屏幕上不會顯該字符。,C程序設(shè)計實例教程 山東科技大學機電學院,126,(3)getche() 格式:int getche(void); 功能
52、:從鍵盤讀入一個字符,返回該字符的ASCII,屏幕上會顯該字符。讀一字符后結(jié)束輸入。 (4)putchar(ch) 格式:void putchar(char ch); 功能:向屏幕的當前光標位置輸出一個字符。,C程序設(shè)計實例教程 山東科技大學機電學院,127,舉例,【例4.7】利用上述函數(shù)從鍵盤讀入一個字符并輸出結(jié)果。 #include stdio.h #include conio.h /*getche函數(shù)所在的頭文件*/ void main() char c; c=getche(); /*調(diào)用getche函數(shù)讀取字符*/ putchar(c); /*輸出讀取的字符內(nèi)容*/ ,C程序設(shè)計實例教
53、程 山東科技大學機電學院,128,字符串的輸入與輸出 C語言中從鍵盤讀入和輸出一個字符串常用的函數(shù)有以下兩個: 1.gets函數(shù) 格式: char *gets(char *s); 功能:從標準輸入設(shè)備讀入一個字符串并寫入s所指向的內(nèi)存單元。讀入過程中遇回車則結(jié)束。 2. puts函數(shù) 格式: int puts(const char *s); 功能:輸出一個以空字符結(jié)尾的字符串到標準輸出設(shè)備。如輸出上面s的內(nèi)容時:puts(s);,C程序設(shè)計實例教程 山東科技大學機電學院,129,舉例:從鍵盤輸入一個字符串,計算字符串長度并輸出結(jié)果。 分析:本題意圖是求取一個字符串的長度,實際是統(tǒng)計一個字符串中
54、有效字符的個數(shù),從前面講述內(nèi)容可以知道字符串是由空字符(0)結(jié)尾的字符序列,統(tǒng)計時需要從字符串的第一個字符開始,依次判斷當前字符的內(nèi)容是否為空字符,遇到首個空字符時統(tǒng)計結(jié)束。,C程序設(shè)計實例教程 山東科技大學機電學院,130,格式化輸入與輸出 數(shù)字、字符由控制臺輸入和向控制臺輸出的常用函數(shù)一般有scanf和printf兩個函數(shù) 。 (1)printf()函數(shù) 格式:int printf(char *format,arg1,arg2,); 功能:用于按照格式format的規(guī)則轉(zhuǎn)換、格式化輸出參數(shù)arg1、arg2等的數(shù)據(jù)到標準輸出設(shè)備。,C程序設(shè)計實例教程 山東科技大學機電學院,131,prin
55、tf函數(shù)中可以使用的控制字符如表1,C程序設(shè)計實例教程 山東科技大學機電學院,132,printf函數(shù)的修飾字符如表2,C程序設(shè)計實例教程 山東科技大學機電學院,133,【例4.10】寫出下列程序的輸出結(jié)果。 #include stdio.h void main() int a=314; float f=218.456; char ch=a; char s=CLanguage; printf(%7d,%-4dn,a,a); printf(%f,%8f,%8.1f,%.2f,%.2en,f,f,f,f,f); printf(%3cn,ch); printf(%sn%12sn%8.5sn%2.5s
56、n%.3sn,s,s,s,s,s); ,C程序設(shè)計實例教程 山東科技大學機電學院,134,scanf函數(shù)用轉(zhuǎn)換字符,(2)scanf()函數(shù) 格式:int scanf(char *format,); 功能:用于從標準輸入設(shè)備讀取字符并按照format的控制格式將讀取的字符存儲到對應(yīng)參數(shù)中,每個輸入?yún)?shù)必須是指針的形式 。 格式控制format中可能包含下列部分的內(nèi)容: (1)空格或制表符,在處理過程中將被忽略; (2)普通字符(不包括%),用于匹配輸入流中下一個非空白符字符; (3)轉(zhuǎn)換說明,依次由一個%、一個可選的賦值禁止字符*、一個可選的數(shù)字(指定最大字段寬度)、一個可選的h、l或L字符以
57、及一個轉(zhuǎn)換字符組成。,C程序設(shè)計實例教程 山東科技大學機電學院,135,scanf函數(shù)用轉(zhuǎn)換字符 如下表,C程序設(shè)計實例教程 山東科技大學機電學院,136,scanf函數(shù)使用的修飾字符如下表,C程序設(shè)計實例教程 山東科技大學機電學院,137,【例4.11】格式輸入、輸出有關(guān)數(shù)據(jù)。 #include stdio.h void main() int a,b; float s; char m10; scanf(%d,%d,%f,%s, ,C程序設(shè)計實例教程 山東科技大學機電學院,138,4.4 選擇結(jié)構(gòu)的基本形式,選擇分支結(jié)構(gòu)通常有單分支、雙分支和多分支等多種情況。 簡單分支結(jié)構(gòu) 形式:if(exp
58、ression) statements 執(zhí)行過程: 系統(tǒng)首先對expression表達式進行判斷,當表達式結(jié)果為真(不為0)時執(zhí)行statements語句;否則,跳過statements語句,繼續(xù)執(zhí)行其后的其他語句 。,C程序設(shè)計實例教程 山東科技大學機電學院,139,C程序設(shè)計實例教程 山東科技大學機電學院,140,雙分支結(jié)構(gòu) 形式:if(expression) statements1 else statements2 執(zhí)行過程: 系統(tǒng)首先對expression表達式進行判斷,當表達式結(jié)果為真(不為0)時執(zhí)行statements1語句;否則,執(zhí)行statements2語句。選擇結(jié)構(gòu)執(zhí)行完成后繼續(xù)執(zhí)行其后的其他語句。,C程序設(shè)計實例教程 山東科技大學機電學院,141,C程序設(shè)計實例教程 山東科技大學機電學院,142,【例4.15】判斷一年的天數(shù)。 分析: 該題的意圖是輸出某年的總天數(shù),實際是判斷該年是閏年還是平年。閏年的判斷條件是能被4整除但不能被100整除,或者能被400整除。 具體步驟是: (1)從鍵盤讀入要判斷的年份; (2)判斷該年是否為閏年
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財稅績效制度
- 象山村民說事制度
- 論按日計罰制度
- 落實企業(yè)(職業(yè))年金制度
- 2026云南中國郵政儲蓄銀行股份有限公司普洱市分行招聘10人參考考試題庫附答案解析
- 桂林銀行考試試題及答案
- 2026廣東清遠市陽山縣城市管理和綜合執(zhí)法局第一次招聘城市管理監(jiān)察協(xié)管員和政府購買服務(wù)人員3人參考考試題庫附答案解析
- 2026上海黃浦區(qū)中意工程創(chuàng)新學院教務(wù)崗位招聘1人參考考試題庫附答案解析
- 2026四川成都城建投資管理集團有限責任公司所屬數(shù)智集團招聘3人備考考試試題附答案解析
- 2026上半年黑龍江省體育局事業(yè)單位招聘13人備考考試試題附答案解析
- 如何做好一名護理帶教老師
- 房地產(chǎn)項目回款策略與現(xiàn)金流管理
- 非連續(xù)性文本閱讀(中考試題20篇)-2024年中考語文重難點復習攻略(解析版)
- 畜禽糞污資源化利用培訓
- 《搶救藥物知識》課件
- 建筑工程咨詢服務(wù)合同(標準版)
- 2024年4月自考05424現(xiàn)代設(shè)計史試題
- 綜合能源管理系統(tǒng)平臺方案設(shè)計及實施合集
- 甲苯磺酸奧馬環(huán)素片-藥品臨床應(yīng)用解讀
- 共享單車對城市交通的影響研究
- 監(jiān)理大綱(暗標)
評論
0/150
提交評論