全套課件·C語言程序設(shè)計(jì)1_第1頁
全套課件·C語言程序設(shè)計(jì)1_第2頁
全套課件·C語言程序設(shè)計(jì)1_第3頁
全套課件·C語言程序設(shè)計(jì)1_第4頁
全套課件·C語言程序設(shè)計(jì)1_第5頁
已閱讀5頁,還剩270頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第1章 程序設(shè)計(jì)基礎(chǔ)大學(xué)計(jì)算機(jī)基礎(chǔ)2主要內(nèi)容1.1 程序設(shè)計(jì)語言的發(fā)展1.2 算法與程序設(shè)計(jì)1.3 C語言簡介1.4 C語言的結(jié)構(gòu)與執(zhí)行1.5 C語言的運(yùn)行與調(diào)試大學(xué)計(jì)算機(jī)基礎(chǔ)3教學(xué)目的和基本要求:要求學(xué)生了解程序語言及算法的概念,C語言特點(diǎn),C程序開發(fā)過程,簡單C程序結(jié)構(gòu)。 教學(xué)重點(diǎn):算法的概念、C程序開發(fā)過程、簡單C程序結(jié)構(gòu)。 大學(xué)計(jì)算機(jī)基礎(chǔ)41.1 程序設(shè)計(jì)語言的發(fā)展機(jī)器語言:計(jì)算機(jī)可以直接識別、執(zhí)行的二進(jìn)制代碼。其優(yōu)點(diǎn)是執(zhí)行速度快;但難寫、難讀、難理解和難修改。 匯編語言:使用助記符來代替機(jī)器語言中復(fù)雜、繁瑣的指令的語言。如Z-80機(jī)中加法指令為ADD。其特點(diǎn)是過分依賴于機(jī)器碼,即僅適

2、合某類相同或相似的計(jì)算機(jī),因此不易移植。大學(xué)計(jì)算機(jī)基礎(chǔ)51.1 程序設(shè)計(jì)語言的發(fā)展高級語言:獨(dú)立于計(jì)算機(jī)硬件結(jié)構(gòu),讓用戶使用面向問題的形式,更加方便編程人員的語言。高級語言分為如下兩類 (1) 編譯型:“先編譯后執(zhí)行”,過程為:源代碼-目標(biāo)代碼-機(jī)器代碼,其執(zhí)行與源程序相互獨(dú)立。比如PASCAL,C等。 (2) 解釋型:“邊解釋邊運(yùn)行”,程序執(zhí)行離不開源代碼的支持,不利于源程序的保護(hù)和保密。比如BASIC,F(xiàn)oxBASE+等。大學(xué)計(jì)算機(jī)基礎(chǔ)61.1 程序設(shè)計(jì)語言的發(fā)展面向結(jié)構(gòu)(面向過程)的設(shè)計(jì)語言有: BASIC,F(xiàn)ORTRAN,COBOL:面向事務(wù)處理的高級語言,適合于編寫管理信息系統(tǒng)方面的

3、程序有: PASCAL,C語言,PROLOG,F(xiàn)oxBASE+等面向?qū)ο蠛涂梢暬Z言: C+,Java,Visual BASIC,Visual C+,Visual Foxpro,Visual J+,Delphi,PowerBuilder等。網(wǎng)頁(Web)/網(wǎng)絡(luò)(Network)編程語言: HTML,DHTML,JavaScript/Jscript,VBScript,JavaApplet,Java等。 大學(xué)計(jì)算機(jī)基礎(chǔ)71.2 算法與程序設(shè)計(jì)1算法及其表示 2 結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)大學(xué)計(jì)算機(jī)基礎(chǔ)81.2.1、算法及其表示 算法是計(jì)算機(jī)科學(xué)中的重要概念之一,它指明了問題的計(jì)算過程,是對給

4、定問題解題方案的準(zhǔn)確而完整的描述。 計(jì)算機(jī)沒有軟件的支持將無法工作,軟件是計(jì)算機(jī)的靈魂,而軟件的核心是算法。用計(jì)算機(jī)解決問題的方法和步驟就是算法,計(jì)算機(jī)執(zhí)行算法,用計(jì)算機(jī)解決各種數(shù)據(jù)處理問題的主要方式就是尋找和設(shè)計(jì)各種算法,將算法變成代碼的過程即程序設(shè)計(jì)。 算法及其表示1大學(xué)計(jì)算機(jī)基礎(chǔ)91.2.1、算法及其表示 算法具備如下5個(gè)特征: 有窮性 確定性 輸入 輸出 可行性算法特征2大學(xué)計(jì)算機(jī)基礎(chǔ)101.2.1、算法及其表示 算法可以用多種方法描述,常見的表示方法有:自然語言描述法、偽代碼表示法、傳統(tǒng)流程圖表示法、N-S流程圖表示法等?!纠?-1】已經(jīng)杯A中盛放的是油,杯B中盛放的是水,另有一個(gè)空

5、杯C,三個(gè)杯容積相同,請用自然語言表示算法?!窘獯稹?第1步:將A中的油全部倒入C中,使A成為空杯; 第2步:將B中的水全部倒入A中,使B成為空杯; 第3步:將C中原在A中的油,倒入B中,完成A與B中液體 的交換。 算法的表示3大學(xué)計(jì)算機(jī)基礎(chǔ)111.2.1、算法及其表示符號符號名稱含義起止框開始和結(jié)束 輸入/輸出框輸入/輸出操作 處理框 內(nèi)容進(jìn)行處理 判斷框條件進(jìn)行判斷 流程線流程的方向 連接點(diǎn) 使流程圖清晰 (1)使用傳統(tǒng)流程圖表示算法 大學(xué)計(jì)算機(jī)基礎(chǔ)12真給a 和b賦值a、?、等;轉(zhuǎn)義字符:n、t、v、b、r、f、0、”、ddd、xhh等。大學(xué)計(jì)算機(jī)基礎(chǔ)432.2.2 標(biāo)識符的分類標(biāo)識符可

6、分如下幾類: 關(guān)鍵字亦稱保留字,關(guān)鍵字在C語言中有特定的含義,用戶在使用自定義的常量名、變量名、函數(shù)名、類型名、文件名時(shí),要絕對避免使用關(guān)鍵字,C語言中的保留字32個(gè),保留字用小寫字母表示,大寫的可以由用戶自由使用,盡量不用,以免與系統(tǒng)保留字混淆. 關(guān)鍵字1大學(xué)計(jì)算機(jī)基礎(chǔ)442.2 標(biāo)識符描述數(shù)據(jù)類型定義的有:typedef、void;描述存儲類型的有:auto、extern、register、static、volatile;描述數(shù)據(jù)類型的有:char、int、float、double、long、short、signed、struct、union、unsigned、const、enum;描述語

7、句:break、case、continue、default、if、else、switch、for、do、while、return、sizeof、goto。大學(xué)計(jì)算機(jī)基礎(chǔ)452.2 標(biāo)識符 預(yù)定義標(biāo)識符包括C語言中提供的一些庫函數(shù)的名字(如printf,scanf,getchar,putchar等)和編譯預(yù)處理命令(define include等),建議用戶在自定義常、變量時(shí),也要避免與這些標(biāo)識符沖突。 用戶在程序設(shè)計(jì)過程中,會經(jīng)常用到常量、變量、自定義函數(shù)、文件名、類型名等 ,這些要用戶定義。預(yù)定義標(biāo)識符2用戶定義標(biāo)識符3大學(xué)計(jì)算機(jī)基礎(chǔ)462.2 標(biāo)識符下面給出一些合法的標(biāo)識符: sum,av

8、erage,_total,temp,a_1,char1,Max,min下面這些是不合法的標(biāo)識符: 1a,$total,a,a.next 在使用標(biāo)識符的時(shí)候盡量采取“見名識義、常用從簡”的原則,保證變量具有可讀性,又不要讓變量名過長。 大學(xué)計(jì)算機(jī)基礎(chǔ)47常量 程序執(zhí)行過程中,其值不能被改變的量稱為常量,C語言中出現(xiàn)的常量有如下類型:整型常量、實(shí)型常量、字符常量、字符串常量等。2.3 常量大學(xué)計(jì)算機(jī)基礎(chǔ)482.3 常量1整型常量 2實(shí)型常量 3字符常量 4字符串常量 5符號常量與預(yù)處理簡介 大學(xué)計(jì)算機(jī)基礎(chǔ)492.3.1 整型常量2.3.1 整型常量整型常量在C語言中又分: 十進(jìn)制整數(shù) 八進(jìn)制整數(shù)

9、十六進(jìn)制整數(shù) 十進(jìn)制整數(shù)以人們通常習(xí)慣的十進(jìn)制整數(shù)形式給出. 八進(jìn)制整數(shù)必須以0開頭,其數(shù)碼取值范圍為07. 以下是合法的八進(jìn)制數(shù): 012(對應(yīng)十進(jìn)制整數(shù)10),-012(對應(yīng)十進(jìn)制數(shù)-10),0177777(對應(yīng)十進(jìn)制數(shù)65535),0177777(對應(yīng)十進(jìn)制數(shù)-65535)。十進(jìn)制整數(shù)1八進(jìn)制整數(shù)2大學(xué)計(jì)算機(jī)基礎(chǔ)502.3 常量以下是不合法的八進(jìn)制整數(shù): 255(無前綴0),03A2(包含非法數(shù)碼)【例2-1】輸出八進(jìn)制數(shù)。#include/*在visual C+6.0 下調(diào)試通過*/main() int x,y;x=012;y=-0177777;printf(x=%d,y=%dn,x,

10、y);大學(xué)計(jì)算機(jī)基礎(chǔ)512.3 常量 十六進(jìn)制整數(shù)的前綴為0 x或0X,其數(shù)碼取值范圍為09,AF,af。 以下是合法的十六進(jìn)制整數(shù): 0X12(十進(jìn)制數(shù)18),-0 x12(十進(jìn)制數(shù)-18),0XA1,0Xffff(十進(jìn)制數(shù)為65535)以下各數(shù)不是合法的十六進(jìn)制整數(shù): 6B(無前綴0 x),0 x5H(含有非法數(shù)碼H)在整型數(shù)據(jù)的后邊加上后綴“L”或“l(fā)”(小寫字母l)來表示的該數(shù)據(jù)是一個(gè)長整型的數(shù)據(jù)。例如:589L十進(jìn)制012L八進(jìn)制 0X17L十六進(jìn)制 十六進(jìn)制整數(shù)3大學(xué)計(jì)算機(jī)基礎(chǔ)522.3.2 實(shí)型常量 實(shí)型常量也稱為浮點(diǎn)型。有兩種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。十進(jìn)制小數(shù)形式:由數(shù)

11、碼09和小數(shù)點(diǎn)組成。如下均為合法的實(shí)數(shù):0.12,1.23,-2.5145,125.0指數(shù)形式:,由十進(jìn)制數(shù),加上階碼標(biāo)志“e”或“E”及階碼(只能為整數(shù),可以帶符號)組成。 如:指數(shù)值1.2E6等于1.21065.21E-2等于5.2110-20.91E8等于0.91108-1.8E-9等于-1.810-9大學(xué)計(jì)算機(jī)基礎(chǔ)532.3.3 字符常量 字符常量是用西文半角單引號括起來的一個(gè)字符。在C語言中,字符常量有以下特點(diǎn):(1) 字符常量只能用單引號“”括起來,不能用雙引號或括號。(2) 字符常量只能是單個(gè)字符,不能是字符串。(3) 字符可以是字符集中任意字符,但數(shù)字被定義為字符型之后就不能參

12、與數(shù)值運(yùn)算。 大學(xué)計(jì)算機(jī)基礎(chǔ)542.3.3 字符常量 除了以上形式的字符常量外,C語言還允許使用一種特殊形式的字符常量,即轉(zhuǎn)義字符,它以一個(gè)反斜線“”開頭,后跟一個(gè)或幾個(gè)字符的字符序列 。轉(zhuǎn)義字符 轉(zhuǎn)義字符的意義 ASCII代碼 n 換行 10t水平制表 9b退格 8r回車 13f換頁 12反斜線符 92單引號符 39”雙引號符 34ddd13位八進(jìn)制數(shù)xhh12位十六進(jìn)制數(shù)大學(xué)計(jì)算機(jī)基礎(chǔ)552.3.3 字符常量【例2-2】輸出轉(zhuǎn)義字符?!境绦蚍治雠c解答】#include /*visual C+ 6.0 */main()printf(abctderftgn);printf(1234567812

13、345678n);/*參照物*/printf (htibbjk);printf(1234567812345678n);/*參照物*/輸出結(jié)果為:fgde1234567812345678hjk1234567812345678Press any key to continue大學(xué)計(jì)算機(jī)基礎(chǔ)562.3.4 字符串常量 字符串常量是由一對雙引號括起的字符序列。例如,“211 Project”,“Chinese”,“college”等都是合法的字符串常量。 字符串常量和字符常量的數(shù)據(jù)結(jié)構(gòu)不同,其主要區(qū)別如下:(1) 字符常量由單引號括起來,字符串常量由雙引號 括起來;(2) 字符常量只能是單個(gè)字符,字符

14、串常量含一個(gè)或多個(gè)字符。 大學(xué)計(jì)算機(jī)基礎(chǔ)572.3.4 字符串常量C在內(nèi)存中占一個(gè)字節(jié),表示為:“C”在內(nèi)存中占兩個(gè)字節(jié),表示為: 可以把一個(gè)字符常量賦予一個(gè)字符變量,但是不能把一個(gè)字符串常量賦予一個(gè)字符量。 字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串半角字符數(shù)加1,因?yàn)樵谠黾拥囊粋€(gè)字節(jié)中存放字符“0”(ASCII碼值為0),這是字符串結(jié)束的標(biāo)志。 CC0大學(xué)計(jì)算機(jī)基礎(chǔ)582.3.5 符號常量與預(yù)處理 在C語言中,可以用一個(gè)標(biāo)識符來表示一個(gè)常量,稱為符號常量。符號常量在使用之前必須先定義,其一般形式為:#define 標(biāo)識符 常量 其中,#include也是一條預(yù)處理命令(預(yù)處理命令都以“#”開頭),

15、稱為宏定義命令,其功能是把該標(biāo)識符定義為常量。一經(jīng)定義,以后程序中所有的標(biāo)識符都代表該常量,如果要修改這個(gè)常量,可以實(shí)現(xiàn)整個(gè)程序中“一改全改”。 經(jīng)常將符號常量的標(biāo)識符用大寫字母,變量標(biāo)識符用小寫字母,以示區(qū)別。 大學(xué)計(jì)算機(jī)基礎(chǔ)592.4 變量1整型變量 2實(shí)型變量 3字符變量 大學(xué)計(jì)算機(jī)基礎(chǔ)60 變量是指在程序執(zhí)行過程中可以被改變和賦值的量。程序中每一個(gè)變量有一個(gè)符合C語言標(biāo)識符規(guī)范的名稱,在內(nèi)存中占據(jù)一定的存儲單元。變量的使用方法是先聲明(定義變量),后使用。 變量名與變量值是有區(qū)別的,變量的“名”是指變量所代表的存儲單元的標(biāo)志,而“值”是指存儲單元的內(nèi)容.例: 2.4 變量A _變量 變

16、量值3大學(xué)計(jì)算機(jī)基礎(chǔ)612.4.1 整型變量 如: short int x; /*變量的聲明,定義整型變量*/ x=10; /*變量賦值*/ 0000000000001010 變量x在內(nèi)存中的地址是0 x0013ff70 數(shù)據(jù)在內(nèi)存中的二進(jìn)制存儲示意圖 (1) 基本型:類型說明符為int,在內(nèi)存中占4個(gè)字節(jié)。(2) 短整型:類型說明符為short int或short,占2個(gè)字節(jié)。(3) 長整型:類型說明符為long int或long,4個(gè)字節(jié)。(4) 無符號型:類型說明符為unsigned,。 無符號型又可與上述三種類型匹配而構(gòu)成,不能表示負(fù)數(shù): 整型數(shù)據(jù)在內(nèi)存中的存儲形式 1整型變量的分類2

17、大學(xué)計(jì)算機(jī)基礎(chǔ)622.4.1 整型變量【例2-3】測試當(dāng)前C編譯環(huán)境下數(shù)據(jù)類型占用的字節(jié)數(shù)?!境绦蚍治雠c解答】#include main()printf(“int占%d字節(jié)。n”,sizeof(int);printf(“l(fā)ong int占%d字節(jié)。n”,sizeof(long int);printf(“short int占%d字節(jié)。n”,sizeof(short int);printf(“unsigned int占%d字節(jié)。n”,sizeof(unsigned int);printf(“unsigned long int占%d字節(jié)。n”,sizeof(unsigned long int);pr

18、intf(“unsigned short int占%d字節(jié)。n”,sizeof(unsigned short int);輸出結(jié)果為:int占4字節(jié)。long int占4字節(jié)。short int占2字節(jié)。unsigned int占4字節(jié)。unsigned long int占4字節(jié)。unsigned short int占2字節(jié)。大學(xué)計(jì)算機(jī)基礎(chǔ)632.4.1 整型變量變量定義的一般形式為: 類型說明符 變量名標(biāo)識符1,變量名標(biāo)識符2,;例如:int x,y,z; /*x,y,z為整型變量*/long int n,m;/*n,m為長整型變量,long int 可簡寫為long */unsigned i

19、nt a,b;/*a,b為無符號整型變量,unsigned int 可簡寫為unsigned*/注意:(1)允許在一次定義相同 類型的多個(gè)變量 (2)最后一個(gè)變量名之 后必須以分號結(jié)尾。 整型變量的定義3大學(xué)計(jì)算機(jī)基礎(chǔ)642.4.2 實(shí)型變量 實(shí)型數(shù)據(jù)一般占用4個(gè)字節(jié)(32位)的內(nèi)存空間,按指數(shù)形式存儲。例如,實(shí)數(shù)12.345在內(nèi)存中的存儲形式如圖2-4所示: 圖2-4 實(shí)型數(shù)據(jù)的表示 +/-,用0,1表示(數(shù)符) 0.12345 +/-,用0,1表示(階符) 2實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式1大學(xué)計(jì)算機(jī)基礎(chǔ)652.4.2 實(shí)型變量 實(shí)型變量分為單精度(float型),長單精度型(long flo

20、at),雙精度(double型)和長雙精度(long double型)4類,其中float型占用4個(gè)字節(jié),其它數(shù)據(jù)類型均占用8個(gè)字節(jié)。 由于實(shí)型變量由有限的存儲單元組成,因此能提供的數(shù)字是有限的,而在有效位以外的數(shù)字將被舍去。這樣可能會產(chǎn)生一些誤差,例如,a+20的顯然就應(yīng)該比a大。請分析下面的程序。實(shí)型變量數(shù)據(jù)的分類 2實(shí)型數(shù)據(jù)的舍入誤差3大學(xué)計(jì)算機(jī)基礎(chǔ)662.4.2 實(shí)型變量【例2-4】實(shí)型數(shù)據(jù)的舍入誤差?!境绦蚍治雠c解答】#include main()float a,b;a=123456.789e5; /*12345678900*/b=a+20;printf(%fn,b);輸出結(jié)果為:1

21、2345678868.000000大學(xué)計(jì)算機(jī)基礎(chǔ)672.4.3 字符變量 字符變量用來存儲字符常量,其說明符是char. 字符變量的賦值有如下方式:(1) 若ch_a是一個(gè)字符變量,ch=ch_a;(2) 將字符常量a賦值給ch,ch=a;(3) 將某個(gè)字符的ASCII碼賦給ch,ch=65,則ch的內(nèi) 容為A,但由于整型變量在存儲上均超過1個(gè)字節(jié),如果將一個(gè)整型變量賦值給一個(gè)字符變量時(shí),只會將其最低8個(gè)位賦值給ch。 而ch=A則是錯(cuò)誤的. 如下字符變量的輸出形式:printf(%c,ch);(2) printf(%d,ch); (3) putchar(ch); 大學(xué)計(jì)算機(jī)基礎(chǔ)682.5 數(shù)

22、據(jù)間的混合運(yùn)算1各數(shù)據(jù)類型轉(zhuǎn)換規(guī)則 2自動(dòng)類型轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換 大學(xué)計(jì)算機(jī)基礎(chǔ)69不同數(shù)據(jù)類型轉(zhuǎn)換規(guī)則 整型、單精度型、雙精度型數(shù)據(jù)可以混合運(yùn)算。字符型數(shù)據(jù)可以與整型通用,因此,整型、實(shí)型(包括單、雙精度)、字符型數(shù)據(jù)間可以混合運(yùn)算。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型, 然后進(jìn)行運(yùn)算。轉(zhuǎn)換的規(guī)則按圖所示 2.5.1 各數(shù)據(jù)類型轉(zhuǎn)換規(guī)則double float long unsigned int char, short大學(xué)計(jì)算機(jī)基礎(chǔ)702.5.2 自動(dòng)類型轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換 變量的數(shù)據(jù)類型的轉(zhuǎn)換方法有兩種,一種是自動(dòng)轉(zhuǎn)換,一種是強(qiáng)制轉(zhuǎn)換。 自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:若參與運(yùn)算量的類型不同,則先

23、轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換按照數(shù)據(jù)長度增加的方向進(jìn)行,以保證運(yùn)算精度不降低。 所有的浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的。char型和short型運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。賦值運(yùn)算中,賦值號兩邊的數(shù)據(jù)類型不同時(shí),賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。 自動(dòng)類型轉(zhuǎn)換1大學(xué)計(jì)算機(jī)基礎(chǔ)712.5 數(shù)據(jù)間的混合運(yùn)算其一般形式為: (類型說明符)(表達(dá)式)例如: (float) a /*把a(bǔ)轉(zhuǎn)換為實(shí)型*/ (int)(x+y) /*把x+y的結(jié)果轉(zhuǎn)換為整型*/ 無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對變量的數(shù)據(jù)長度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對該變量定義的類型。 強(qiáng)制轉(zhuǎn)換 2

24、大學(xué)計(jì)算機(jī)基礎(chǔ)722.5.2 自動(dòng)類型轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換【例2-5】數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換?!境绦蚍治雠c解答】#include main()float f=5.75;printf(int)f=%d,f=%fn,(int)f,f);輸出結(jié)果為:(int)f=5,f=5.750000大學(xué)計(jì)算機(jī)基礎(chǔ)73變量預(yù)先設(shè)置初值可以有如下幾種情況: (1)對各變量分別賦初值 int a=3; float pi=3.14159; char cha; (2)定義變量時(shí)對部分變量賦值 int a,b,c=5; (3)對幾個(gè)變量賦相同的初值 如:若對幾個(gè)變量賦予初值3,應(yīng)寫成 int a=3,b=3,c3; 2.6 變量賦初

25、值大學(xué)計(jì)算機(jī)基礎(chǔ)742.6 變量賦初值強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 () 自增、自減運(yùn)算符如: +i,-i (在變量i使用之前,先使i的值加(減)1) i+,i- (在變量i使用之后,使i的值加(減)1)使用自增、自減運(yùn)算符需要注意的若干問題:+或-運(yùn)算符,只能用于變量,而不能用于常量或表達(dá)式。+和-的結(jié)合方向是“自右至左”。大學(xué)計(jì)算機(jī)基礎(chǔ)752.7 運(yùn)算符和表達(dá)式1C語言運(yùn)算符簡介與表達(dá)式的類型 2表達(dá)式的求值規(guī)則 3算術(shù)運(yùn)算符和算術(shù)表達(dá)式 4賦值運(yùn)算符和賦值表達(dá)式 5逗號運(yùn)算符和逗號表達(dá)式 6關(guān)系運(yùn)算符和關(guān)系表達(dá)式 7邏輯運(yùn)算符和邏輯表達(dá)式 大學(xué)計(jì)算機(jī)基礎(chǔ)76C的運(yùn)算符有以下幾類:(1) 算術(shù)運(yùn)算符

26、:+ - * / %(2) 關(guān)系運(yùn)算符: = = !=(3) 邏輯運(yùn)算符:! & |(4) 位運(yùn)算符: | &(5) 賦值運(yùn)算符:= (6) 條件運(yùn)算符: ? :(7) 逗號運(yùn)算符:,C語言表達(dá)式的類型 賦值表達(dá)式; 算術(shù)表達(dá)式; 關(guān)系表達(dá)式; 邏輯表達(dá)式; 條件表達(dá)式; 逗號表達(dá)式2.7.1 C語言運(yùn)算符與表達(dá)式的類型大學(xué)計(jì)算機(jī)基礎(chǔ)772.7.2 表達(dá)式的求值規(guī)則 這些運(yùn)算符在C語言中規(guī)定了優(yōu)先級和結(jié)合性,在求值時(shí)先按運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,如果某個(gè)運(yùn)算對象左右兩側(cè)的運(yùn)算符的優(yōu)先級別相同,則按規(guī)定的“結(jié)合方向”處理,其中算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,而對于賦值運(yùn)算符則采用“自右至

27、左”的結(jié)合方向。 有關(guān)運(yùn)算符的優(yōu)先級別和結(jié)合性參看附錄。 大學(xué)計(jì)算機(jī)基礎(chǔ)782.7.3 算術(shù)運(yùn)算符和算術(shù)表達(dá)式(1) + (加法運(yùn)算符,或正值運(yùn)算符。如3+5、+3)(2) - (減法運(yùn)算符,或負(fù)值運(yùn)算符。如5-2、-3)(3) * (乘法運(yùn)算符。如3*5)(4) / (除法運(yùn)算符。如5/3,5.0/3)(5) % (模運(yùn)算符,又稱求余運(yùn)算符,%兩側(cè)均 應(yīng)為整型數(shù)據(jù),如7%4的值為3)。 基本的算術(shù)運(yùn)算符1大學(xué)計(jì)算機(jī)基礎(chǔ)792.7.3 算術(shù)運(yùn)算符和算術(shù)表達(dá)式(8) 指針運(yùn)算符: * &(9) 求字節(jié)數(shù)運(yùn)算符: sizeof (10) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符: (類型)(11) 分量運(yùn)算符:. -(

28、12) 下標(biāo)運(yùn)算符:(13) 其他:如函數(shù)調(diào)用運(yùn)算符()大學(xué)計(jì)算機(jī)基礎(chǔ)802.7.3 算術(shù)運(yùn)算符和算術(shù)表達(dá)式+i,-i (在變量i使用之前,先使i的值加(減)1)i+,i- (在變量i使用之后,使i的值加(減)1)使用自增、自減運(yùn)算符需要注意的若干問題:(1) +或-運(yùn)算符,只能用于變量,而不能用于常量或表達(dá)式。(2) +和-的結(jié)合方向是“自右至左”。 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性2強(qiáng)制類型轉(zhuǎn)換運(yùn)算符()3自增、自減運(yùn)算符 4大學(xué)計(jì)算機(jī)基礎(chǔ)812.7.4 賦值運(yùn)算符和賦值表達(dá)式賦值符號“=”就是賦值運(yùn)算符 使用“=”連接的式子稱為賦值表達(dá)式,其一般形式為: 變量=常量、變量或表達(dá)式賦值運(yùn)

29、算符具有右結(jié)合性。如:a=b=c=3賦值運(yùn)算符和賦值表達(dá)式1大學(xué)計(jì)算機(jī)基礎(chǔ)822.7.4 賦值運(yùn)算符和賦值表達(dá)式 (1) 將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。 (2) 將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲到變量中。 (3) 將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字, (4) 將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位。 (5) 字符型數(shù)據(jù)賦給整型變量時(shí),將字符數(shù)據(jù)(8位)放到整型變量低8位中。 類型轉(zhuǎn)換 2大學(xué)計(jì)算機(jī)基礎(chǔ)832.7 運(yùn)算符和表達(dá)式 在賦值符“=”之前加上其他運(yùn)算符可

30、以構(gòu)成復(fù)合的運(yùn)算符。如,+=,- =,*=,/=,%=,=,&=,=,|=。如:a+=2 /* 等價(jià)于 a=a+2 */x*=y+8 /* 等價(jià)于 x=x*(y+8) */ 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為“賦值表達(dá)式”。 它的一般形式為: 變量 賦值運(yùn)算符 表達(dá)式 復(fù)合的賦值運(yùn)算符3賦值表達(dá)式4大學(xué)計(jì)算機(jī)基礎(chǔ)842.7.5 逗號運(yùn)算符和逗號表達(dá)式 逗號運(yùn)算符是一種特殊的運(yùn)算,用以連接兩個(gè)表達(dá)式,又稱為“順序求值運(yùn)算符”。逗號表達(dá)式的一般形式為: 表達(dá)式1,表達(dá)式2,表達(dá)式n 例如 x=2*5,x*3,此時(shí)整個(gè)逗號表達(dá)式的值為30。注:賦值運(yùn)算符的優(yōu)先級別高于逗號運(yùn)算符 大

31、學(xué)計(jì)算機(jī)基礎(chǔ)852.7.6 關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符在語言中有以下關(guān)系運(yùn)算符:(1) 小于(2) 大于(4) = 大于或等于(5) = 等于(6) != 不等于2.關(guān)系表達(dá)式關(guān)系表達(dá)式的一般形式為:表達(dá)式1 關(guān)系運(yùn)算符 表達(dá)式2大學(xué)計(jì)算機(jī)基礎(chǔ)862.7.7 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符及其優(yōu)先級語言中提供了三種邏輯運(yùn)算符:(1) & 與運(yùn)算(2) | 或運(yùn)算(3) ! 非運(yùn)算高大學(xué)計(jì)算機(jī)基礎(chǔ)872.7 運(yùn)算符和表達(dá)式【例2-6】調(diào)試以下程序,理解邏輯表達(dá)式。#include main()char c=k;int i=1,j=2,k=3;float x=3e+5,y=0.85;p

32、rintf(%d,%dn,!x*!y,!x);printf(%d,%dn,x|i&j-3,ij&xy)?x:y (2) 條件運(yùn)算符“?”和“:”是一對運(yùn)算符,不能分開單獨(dú)使用。(3) 條件運(yùn)算符的結(jié)合性是自右至左。例如:ab?a:cd?c:d應(yīng)理解為ab?a:(cd?c:d)大學(xué)計(jì)算機(jī)基礎(chǔ)892.7 運(yùn)算符和表達(dá)式【例2-7】調(diào)試以下程序,理解條件表達(dá)式。#include main() int x,y,max; printf(g請輸入兩個(gè)整數(shù),x,y: ); scanf(%d,%d,&x,&y); printf(最大值=%dn,xy?x:y);輸出結(jié)果為:請輸入兩個(gè)整數(shù),x,y: 3,5最大值

33、=5大學(xué)計(jì)算機(jī)基礎(chǔ)902.7.9 位運(yùn)算符和位運(yùn)算位運(yùn)算符和位運(yùn)算分別是:(1) & 按位與運(yùn)算符(2) | 按位或運(yùn)算符(3) 按位異或運(yùn)算符(4) 取反運(yùn)算符(5) 右移運(yùn)算符大學(xué)計(jì)算機(jī)基礎(chǔ)912.7 運(yùn)算符和表達(dá)式 若變量A的值為0 xAA(10101010),B的值為0 x55(01010101),則:(1) A & B = 0 x00(00000000b) 按位與(2) A | B = 0 xFF(11111111b) 按位或(3) A B = 0 xFF(11111111b) 按位異或(4) A = 0 x55(01010101b) 取反(5) A1 = 0 x2A(0010101

34、0b) 右移以上運(yùn)算符在第10章將會進(jìn)行詳細(xì)講解。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)與編譯預(yù)處理大學(xué)計(jì)算機(jī)基礎(chǔ)93主要內(nèi)容 3.2 賦值語句 3.3 輸入與輸出 3.4 常用函數(shù)舉例 3.5 編譯預(yù)處理 3.1 C語句概述 3.6 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 大學(xué)計(jì)算機(jī)基礎(chǔ)94 C語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出指令,單獨(dú)的一條語句或者是復(fù)合語句完成特定的操作,這些操作的不同組合,用來實(shí)現(xiàn)一系列數(shù)據(jù)處理功能。 C語言程序是一個(gè)由main()體內(nèi)的若干變量的聲明、賦值等操作以及若干函數(shù)組成的,沒有編譯過的程序稱為源程序。源程序的某些行稱為語句,每個(gè)語句的最后有一個(gè)半角分號“;”,用來表示語句的結(jié)束。用“;”隔開的

35、語句,可以寫在同一行,也可以寫成幾行,但這些語句必須包含在函數(shù)體中。3.1 C語句概述大學(xué)計(jì)算機(jī)基礎(chǔ)953.1 C語句概述C語言的語句 C語言的語句可以分為5類:表達(dá)式語句、函數(shù)調(diào)用語句、控制語句、復(fù)合語句和空語句。1.表達(dá)式語句 例如:m=2; score=math+English; i+; x=10,y=12; 2.函數(shù)調(diào)用語句 其一般形式為: 函數(shù)名(實(shí)際參數(shù)表);大學(xué)計(jì)算機(jī)基礎(chǔ)963.1 C語句概述3. 控制語句(1) 條件判斷語句:if().else. /*分支語句*/switch(表達(dá)式/變量). /*多分支語句*/(2) 循環(huán)語句:do.while(條件) /*“先執(zhí)行,后判斷”

36、的“當(dāng)”型循環(huán)*/while(條件). /*“先判斷,后執(zhí)行”的“當(dāng)”型循環(huán)*/for(條件). /*for循環(huán),循環(huán)次數(shù)相對確定下使用*/(3) 流程轉(zhuǎn)向語句goto /*強(qiáng)制程序跳轉(zhuǎn),不推薦使用*/break /*中止執(zhí)行switch或者循環(huán)*/continue /*結(jié)束循環(huán)體中的其中一趟*/return /*從函數(shù)中返回*/大學(xué)計(jì)算機(jī)基礎(chǔ)973.1 C語句概述4. 復(fù)合語句 把多個(gè)語句用語句1;語句2;.語句n這種形式構(gòu)成一個(gè)比較復(fù)雜的語句稱為復(fù)合語句,又稱為語句塊。如兩個(gè)變量之間數(shù)據(jù)的交換。此時(shí),應(yīng)把復(fù)合語句看成一個(gè)單條語句。例如:if(ab)temp=a;a=b;b=temp; 大學(xué)

37、計(jì)算機(jī)基礎(chǔ)983.1 C語句概述5. 空語句 只有“;”號的語句稱為空語句 .如:for(i=0;i32768;i+); /*空語句,注意它的意義*/大學(xué)計(jì)算機(jī)基礎(chǔ)99賦值語句的構(gòu)成形式賦值語句是由賦值表達(dá)式再加上“;”構(gòu)成,其一般形式為: 變量=表達(dá)式; 例如:sum=0;x=y+z;a=b=c=10;連續(xù)賦值與賦值運(yùn)算符的右結(jié)合性 而賦值語句允許給多個(gè)變量連續(xù)賦相同的值,例如:int a,b,c; /*必須在變量聲明處定義a,b,c三個(gè)變量*/a=b=c=3; /*連續(xù)賦值*/3.2 賦值語句大學(xué)計(jì)算機(jī)基礎(chǔ)100 輸入與輸出是以計(jì)算機(jī)為主體而言的。信息從計(jì)算機(jī)的外部輸入設(shè)備(鍵盤、鼠標(biāo)、移

38、動(dòng)存儲設(shè)備等)向計(jì)算機(jī)輸入數(shù)據(jù)稱為輸入,計(jì)算機(jī)向外部設(shè)備(顯示器、打印機(jī)、文件設(shè)備等)輸出數(shù)據(jù)稱為輸出。 在C語言中,沒有輸入/輸出語句,所有數(shù)據(jù)的輸入和輸出功能是通過一組庫函數(shù)來實(shí)現(xiàn)的,在調(diào)用這些輸入或輸出庫函數(shù)的時(shí)候,需要使用預(yù)編譯命令#include將有關(guān)“頭文件”包含到源文件中,這些“頭文件”的文件名格式為*.h。3.3 輸入與輸出大學(xué)計(jì)算機(jī)基礎(chǔ)1013.4 輸入與輸出 使用標(biāo)準(zhǔn)輸入/輸出庫函數(shù)時(shí),要在main()函數(shù)所在源文件中包含“stdio.h”文件,因此,源文件的開頭經(jīng)常有以下預(yù)編譯命令:#include 或#include stdio.h“ 本小節(jié)主要介紹單個(gè)字符的輸入和輸出

39、,格式輸入和輸出,并簡單介紹一下文件操作中的輸入和輸出,這些函數(shù)分別是getchar( )、putchar( )、printf( )和fscanf( )、fprintf( )。大學(xué)計(jì)算機(jī)基礎(chǔ)1023.4 輸入與輸出1字符數(shù)據(jù)的輸入與輸出 2格式輸入與輸出 3文件操作中的輸入與輸出簡介 大學(xué)計(jì)算機(jī)基礎(chǔ)1033.4.1 字符數(shù)據(jù)的輸入與輸出函數(shù)的一般調(diào)用形式為:putchar(ch); ch必須是一個(gè)整型變量或一個(gè)字符型變量,ch還可以是轉(zhuǎn)義字符常量。例如:putchar(A); /*輸出大寫字母A*/putchar(97); /*輸出小寫字母a*/putchar(ch); /*輸出字符變量ch的

40、值*/putchar(101); /*輸出大寫字母A */putchar(n); /*換行,(執(zhí)行控制功能,*/單個(gè)字符輸出函數(shù)putchar1大學(xué)計(jì)算機(jī)基礎(chǔ)1043.4.1 字符數(shù)據(jù)的輸入與輸出【程序分析與解答】#include main()int i_ch; /*定義整型變量i_ch,這個(gè)變量用i代表整型,*/i_ch=65; /*65是大寫字母A的ASCII碼*/putchar(i_ch);putchar(n);i_ch=97; /*97是小寫字母a的ASCII碼*/putchar(i_ch);putchar(n);大學(xué)計(jì)算機(jī)基礎(chǔ)1053.4.1 字符數(shù)據(jù)的輸入與輸出一般調(diào)用形式為:ch

41、ar ch;ch=getchar();【程序分析與解答】#include main()char ch; printf(在此輸入任意一個(gè)字符并回車:n);ch=getchar( ); putchar(ch); /*回顯剛才的輸入*/putchar(n); 利用getchar( ),手動(dòng)控制程序暫停執(zhí)行。 單個(gè)字符輸入函數(shù)getchar( ) 2大學(xué)計(jì)算機(jī)基礎(chǔ)1063.4.2 格式輸入與輸出 printf和scanf函數(shù)可以一次輸出或者輸入若干個(gè)任意類型數(shù)據(jù), 有效解決輸入復(fù)雜數(shù)據(jù)的問題,使用時(shí),可以不包含頭文件stdio.h。 輸出函數(shù)printf格式:printf(格式控制字符串,輸出表列)

42、printf( )函數(shù)參數(shù)的第一部分,由格式字符串和普通字符組成,格式字符串是以“%”開頭,在輸出表列中,必須有一個(gè)變量與這個(gè)格式字符相對應(yīng);普通字符在輸出時(shí)按原樣輸出. 格式輸出函數(shù)printf()1大學(xué)計(jì)算機(jī)基礎(chǔ)1073.4.2 格式輸入與輸出例如:printf(“總和=%d,平均值=%5.2fn,sum,average); 格式字符串 輸出表列【程序分析與解答】#include main() int ch1=77,ch2=78;printf(ch1=%d,ch2=%dn,ch1,ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); printf(%c %cn,ch1

43、,ch2); 大學(xué)計(jì)算機(jī)基礎(chǔ)1083.4.2 格式輸入與輸出 格式控制是通過格式字符串來實(shí)現(xiàn)的,格式字符串的一般形式為: %標(biāo)志輸出最小寬度.精度長度修飾符類型 其中,方括號內(nèi)的項(xiàng)可選,也可以省略,下面就介紹以上6項(xiàng)的使用方法: %:格式字符串的起始符號,不可省。 標(biāo)志:標(biāo)志字符為+、-、#、空格4種,其意義如下所示:大學(xué)計(jì)算機(jī)基礎(chǔ)1093.4.2 格式輸入與輸出 標(biāo)志 為+時(shí),輸出值為正時(shí)在值前補(bǔ)“+”號,為負(fù)時(shí)值前補(bǔ)“-”號 標(biāo)志為-時(shí),輸出結(jié)果左對齊,右邊補(bǔ)空格;缺省則輸出結(jié)果右對齊,左邊填空格或零 標(biāo)志為#時(shí),輸出8進(jìn)制數(shù)時(shí)加前綴0;輸出16進(jìn)制數(shù)時(shí)加前綴0 x。 輸出最小寬度:通常用

44、10進(jìn)制整數(shù)來表示輸出數(shù)據(jù)項(xiàng)的最小位數(shù),若實(shí)際位數(shù)多于指定位數(shù),則按實(shí)際位數(shù)輸出,若實(shí)際寬度少于指定位數(shù),則用空格或0填補(bǔ)。 大學(xué)計(jì)算機(jī)基礎(chǔ)1103.4.2 格式輸入與輸出 精度:精度格式以“.”開頭,后跟10進(jìn)制整數(shù),用來指示保留幾位小數(shù)。 長度修飾符:常用的長度修改符為h、l兩種,英文字母h表示輸出項(xiàng)按短整型數(shù)據(jù)輸出,英文字母l表示輸出項(xiàng)按長整型數(shù)據(jù)輸出。 類型:類型字符用來表示待輸出數(shù)據(jù)的類型,必須用半角英文字符。 格式字符d(或i) ox(或X); u;c;s;f;lf;e(或E);g(或G);%(輸出一個(gè)%符號 )。 大學(xué)計(jì)算機(jī)基礎(chǔ)1113.4.2 格式輸入與輸出【例3-1】數(shù)據(jù)在內(nèi)

45、存中的存儲與8進(jìn)制輸出?!境绦蚍治雠c解答】#include main()unsigned short int a=-1;printf(%d,%on,a,a); 輸出結(jié)果為:65535,177777大學(xué)計(jì)算機(jī)基礎(chǔ)1123.4.2 格式輸入與輸出 輸入函數(shù)scanf格式 :scanf(格式控制字符串,地址表列) 地址表列中給出各變量的地址,地址是由地址運(yùn)算符“&”后跟變量組成,但對字符號串的輸入例外。格式輸入函數(shù)scanf()2大學(xué)計(jì)算機(jī)基礎(chǔ)1133.4.3 文件操作中的輸入與輸出fprintf(文件指針,格式字符串,輸出表列);fscanf(文件指針,格式字符串,輸出表列);大學(xué)計(jì)算機(jī)基礎(chǔ)114

46、1.求絕對值函數(shù) (1)int abs(int x); (2)double fabs(double x); 2.求自然對數(shù)值函數(shù) double log(double x); 3.冪函數(shù) double pow(double x, double y); 4.求平方根函數(shù) double sqrt(double x); 5.產(chǎn)生隨機(jī)數(shù)函數(shù) int rand(void); 3.5 常用函數(shù)舉例大學(xué)計(jì)算機(jī)基礎(chǔ)1153.5 常用函數(shù)舉例【例3-2】產(chǎn)生10100間的隨機(jī)整數(shù),并輸出。#include #include #include main()int a,b;srand(time(0);/*時(shí)間作為隨便

47、數(shù)種子,每運(yùn)行一次,隨機(jī)值均不同*/a=rand()%91+10;/*rand()返回隨機(jī)整數(shù),該數(shù)對91求余,數(shù)據(jù)范圍是0-90*/b=rand()%91+10;/*因?yàn)閞and()是隨機(jī)的,求余結(jié)果亦隨機(jī)*/printf(a=%d,b=%dn,a,b);大學(xué)計(jì)算機(jī)基礎(chǔ)1163.6 編譯預(yù)處理1宏 定 義 2文件包含 大學(xué)計(jì)算機(jī)基礎(chǔ)117 C語言中常用的預(yù)處理功能有兩種,分別是宏定義和文件包含。合理使用編譯預(yù)處理功能編寫程序,便于程序閱讀、修改、移植和調(diào)試,也便于開發(fā)小組協(xié)同開發(fā)程序。 C語言中編譯預(yù)處理命令以“#define”開頭,且每行末尾不能加分號。宏定義 在源程序中允許用一個(gè)標(biāo)識符來

48、表示一個(gè)字符串,稱為“宏”。 在語言中,“宏”分為有參數(shù)和無參數(shù)兩種。下面分別討論這兩種“宏”的定義和調(diào)用。 3.6.1 宏定義大學(xué)計(jì)算機(jī)基礎(chǔ)1183.6 編譯預(yù)處理不帶參數(shù)的宏的一般定義方式為:#define 標(biāo)識符 字符串說明:(1)“#define”為宏定義的關(guān)鍵字,“標(biāo)識符”表示定義的宏名,“標(biāo)識符”用大寫字母,以便區(qū)分于變量名或函數(shù)名,也可以用小寫字母;(2) 宏定義的末尾不可以;作為結(jié)束,如果不小心加了分號,會將分號一起替換; (3)“字符串”是一個(gè)字符系列,對于整型,實(shí)型常量可直接書寫,對于字符型常量,需要添加單引號,對于字符串常量,需要添加雙引號?!白址边€可以是一個(gè)表達(dá)式。

49、 不帶參數(shù)的宏定義1大學(xué)計(jì)算機(jī)基礎(chǔ)1193.6 編譯預(yù)處理【例3-14】宏定義中的數(shù)據(jù)格式#define CH c #define STRING Programming#define R 1 /*這是數(shù)字1*/#define PI 3.14159#define L 2*PI*R #define S PI*R*R#include main()printf(%c,%sn,CH,STRING);printf(L=%f,S=%fn,L,S);輸出結(jié)果:c,ProgrammingL=6.283180,S=3.141590大學(xué)計(jì)算機(jī)基礎(chǔ)1203.6 編譯預(yù)處理 帶參數(shù)的宏定義不是進(jìn)行簡單的字符串替換,還要

50、進(jìn)行參數(shù)替換。其定義的一般形式為#define宏名(參數(shù)表) 字符串 字符串中包含在括弧中所指定的參數(shù)。如:#define S(a,b) a*barea=S(3,2); 定義矩形面積S,a和b是邊長。在程序中用了S(3,2),把3、2分別代替宏定義中的形式參數(shù)a、b,即用3、2代替S(3,2)。因此賦值語句展開為area=3*2;帶參數(shù)的宏定義2大學(xué)計(jì)算機(jī)基礎(chǔ)1213.6 編譯預(yù)處理【例3-3】使用帶參數(shù)宏定義求圓周長。#define PI 3.1415926#define S(r) 2*PI*rmain()float a,area;a=3.6;area=S(a);printf(半徑=%fn圓

51、面積=%fn,a,area);輸出結(jié)果:半徑=3.600000圓面積=22.619466大學(xué)計(jì)算機(jī)基礎(chǔ)1223.6.2 文件包含 所謂“文件包含”處理是指一個(gè)源文件可以將另外一個(gè)源文件的全部內(nèi)容包含到當(dāng)前的源文件中。其一般形式為 #include “文件名” 或 #include 它的作用是用指定的文件的全部內(nèi)容來代替當(dāng)前文件中進(jìn)行文件包含的那一行內(nèi)容,如當(dāng)前源文件中,包含文件#include “myfunc.h”,在編譯時(shí),myfunc.h文件中的若干行代碼,就會自動(dòng)替換#include “myfunc.h”然后進(jìn)行編譯。 大學(xué)計(jì)算機(jī)基礎(chǔ)123 【例3-4】從鍵盤上輸入一個(gè)4位的整數(shù),要求分

52、離出它的個(gè)、十、百和千位,并倒序輸出程序代碼如下:#include main()int x,a,b,c,d;/*abcd分別表示千、百、十、個(gè)位*/printf(請輸入一個(gè)4位整數(shù),并回車:);scanf(%d,&x);d=x%10; /*個(gè)位*/c=(x%100)/10; /*十位*/b=(x%1000)/100; /*百位*/a=x/1000; /*千位*/printf(%d%d%d%dn,d,c,b,a); 3.7 順序結(jié)構(gòu)程序設(shè)計(jì)舉例大學(xué)計(jì)算機(jī)基礎(chǔ)1243.7 順序結(jié)構(gòu)程序設(shè)計(jì)舉例【例3-】輸入三角形的3邊,利用海倫公式求三角形面積,輸入的3個(gè)數(shù)據(jù)能構(gòu)成三角形。海倫公式如下:半周長l=

53、(a+b+c)/2,面積s=sqrt(l*(l-a)*(l-b)*(l-c)。#include #include main()double a,b,c,l,s;/*abcd分別表示千、百、十、個(gè)位*/printf(請輸入一個(gè)三角形的3條邊,如:3,4,5,并回車:);scanf(%lf,%lf,%lf,&a,&b,&c);l=(a+b+c)/2;s=sqrt(l*(l-a)*(l-b)*(l-c);printf(海倫公式求面積,s=%.2lfn,s);大學(xué)計(jì)算機(jī)基礎(chǔ)1253.7 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 例3- 求一元二次方程的兩個(gè)實(shí)根。算法分析: 輸入方程系數(shù)a、 b、 c。 計(jì)算判別式d。 計(jì)

54、算兩個(gè)實(shí)根 x1、 x2。 輸出兩個(gè)實(shí)根 x1、 x2。 數(shù)據(jù)分析: 輸入量: 方程系數(shù)a、 b、 c, float中間量: 判別式d, float輸出量: 兩個(gè)實(shí)根 x1、 x2, float大學(xué)計(jì)算機(jī)基礎(chǔ)1263.7 順序結(jié)構(gòu)程序設(shè)計(jì)舉例include stdio.hinclude math.hmain( )float a, b, c; float d; float x1, x2; printf(請輸入方程系數(shù)a、 b、 c : ); scanf(%f, %f, %f, &a, &b, &c); d=b*b-4*a*c; x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(

55、d)/(2*a); printf(第一個(gè)根=%5.2fn 第二個(gè)根=%5.2f n, x1, x2); 輸入數(shù)據(jù): 1, 3, -4運(yùn)行結(jié)果: 第一個(gè)根=-4.00 第二個(gè)根= 1.00 第 4 章 選 擇 結(jié) 構(gòu) 程 序 設(shè) 計(jì)大學(xué)計(jì)算機(jī)基礎(chǔ)128主要內(nèi)容4.1 關(guān)系運(yùn)算與邏輯運(yùn)算 4.2 if語句 4.3 switch語句 4.4 應(yīng)用舉例 大學(xué)計(jì)算機(jī)基礎(chǔ)1294.1 關(guān)系運(yùn)算與邏輯運(yùn)算1關(guān)系表達(dá)式的應(yīng)用 2邏輯表達(dá)式的應(yīng)用 大學(xué)計(jì)算機(jī)基礎(chǔ)130 在C語言中,實(shí)現(xiàn)選擇結(jié)構(gòu)可以有兩類語句:1、一類是if語句; 2、另一類是switch構(gòu)成的多分支語句。關(guān)系表達(dá)式的概念與作用 由關(guān)系運(yùn)算符組成

56、的表達(dá)式,稱為關(guān)系表達(dá)式.。關(guān)系運(yùn)算符兩邊的運(yùn)算對象可以是C語言中任意合法的表達(dá)式. 關(guān)系運(yùn)算有一個(gè)確定的結(jié)果,真(非0)或假(0)。 在選擇結(jié)構(gòu)中,關(guān)系表達(dá)式經(jīng)常出現(xiàn)在if語句中,表達(dá)式必須有一個(gè)確定的值以決定要執(zhí)行的分支程序段。 4.1.1 關(guān)系表達(dá)式的應(yīng)用大學(xué)計(jì)算機(jī)基礎(chǔ)1314.1.2 邏輯表達(dá)式的應(yīng)用邏輯表達(dá)式的概念與作用 由邏輯運(yùn)算符(&;|;!)組成的表達(dá)式,稱為邏輯表達(dá)式。 邏輯表達(dá)式只有兩種值,0(假)或1(真). 參與邏輯運(yùn)算的操作數(shù)可以是假值(0)或真值(任何非0的數(shù)值),也可以是任何類型的數(shù)據(jù),如字符型,實(shí)型或指針型數(shù)據(jù),還可以是一個(gè)表達(dá)式。邏輯表達(dá)式的表示方式比較靈活,

57、即使是同一個(gè)條件,也可以用另一種方式來表示。 大學(xué)計(jì)算機(jī)基礎(chǔ)1324.1 關(guān)系運(yùn)算與邏輯運(yùn)算 【例4-1】寫出判別某一年year是否閏年的邏輯表達(dá)式。閏年的條件是符合下面二者之一:能被4整除,但不能被100整除。能被4整除,又能被400整除?!窘獯稹块c年的表示方法:(year%4=0 & year%100!=0)|year%400=0;非閏年的表示方法:!(year%4=0 & year%100!=0)|year%400=0);還可以這樣表示非閏年:(year%4!=0|year%100=0)&year%400!=0;大學(xué)計(jì)算機(jī)基礎(chǔ)1334.2 if語句1 if語句的3種形式 2if語句的嵌套

58、與語句塊的使用 大學(xué)計(jì)算機(jī)基礎(chǔ)134單分支:if 它的形式是: if(表達(dá)式) 語句;其流程如右圖所示。 4.2.1 if語句的3種形式語句表達(dá)式真(1)假(0)單分支1大學(xué)計(jì)算機(jī)基礎(chǔ)1354.2.1 if語句的3種形式【例4-1】輸入兩個(gè)數(shù),把較小的數(shù)輸出。#include main()int x,y,min;printf(輸入兩個(gè)整數(shù):eg.x,yn);scanf(%d,%d,&x,&y);min=x;if(ymin)min=y;printf(min=%dn,min);大學(xué)計(jì)算機(jī)基礎(chǔ)1364.2.1 if語句的3種形式這是分支結(jié)構(gòu)的第二種基本形式,它的語法形式是:if(表達(dá)式) 語句1;e

59、lse 語句2;語句1表達(dá)式真(1)假(0)語句2圖4-2 雙分支結(jié)構(gòu)流程圖雙分支:if-else 形式2大學(xué)計(jì)算機(jī)基礎(chǔ)1374.2.1 if語句的3種形式【例4-2】輸入一個(gè)整數(shù),判斷該數(shù)的奇偶性。#include main()int x;printf(輸入一個(gè)整數(shù),然后回車: n);scanf(%d,&x);if(x%2=0)printf(%d是偶數(shù)。n,x);else printf(%d是奇數(shù)。n,x);大學(xué)計(jì)算機(jī)基礎(chǔ)1384.2.1 if語句的3種形式 單分支和雙分支可以完成一些簡單的判斷,當(dāng)在程序設(shè)計(jì)中,有多個(gè)分支選擇時(shí),可采用if-else-if這種形式,甚至可以嵌套更多,它的語法

60、形式是:if(表達(dá)式1) 語句1;else if(表達(dá)式2) 語句2;else if(表達(dá)式n) 語句n;else 語句 m;多分支:if-else-if形式3大學(xué)計(jì)算機(jī)基礎(chǔ)1394.2.1 if語句的3種形式多分支結(jié)構(gòu)流程圖如下圖4-3所示。真(1)真(1)語句1表達(dá)式1假(0)表達(dá)式2假(0)表達(dá)式3假(0)表達(dá)式4語句2語句3語句4語句m假(0)真(1)圖4-3 多分支結(jié)構(gòu)流程圖大學(xué)計(jì)算機(jī)基礎(chǔ)1404.2.1 if語句的3種形式【例4-3】輸從鍵盤輸入一個(gè)字符,判斷其是否為數(shù)字、大小寫字母或控制字符。#include main()char ch;printf(輸入一個(gè)字符,然后回車: n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論