C語(yǔ)言程序設(shè)計(jì)完整版教學(xué)課件全書(shū)電子講義(最新)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)完整版教學(xué)課件全書(shū)電子講義(最新)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)完整版教學(xué)課件全書(shū)電子講義(最新)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)完整版教學(xué)課件全書(shū)電子講義(最新)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)完整版教學(xué)課件全書(shū)電子講義(最新)_第5頁(yè)
已閱讀5頁(yè),還剩470頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言程序設(shè)計(jì)第一講 程序設(shè)計(jì)與C語(yǔ)言(2學(xué)時(shí)) 計(jì)算機(jī)學(xué)院主要內(nèi)容1.1 程序設(shè)計(jì)課程目標(biāo)1.2 程序設(shè)計(jì)概述1.3 C語(yǔ)言概述21.1 程序設(shè)計(jì)課程目標(biāo)課程要求課程目標(biāo)3課程要求學(xué)會(huì)從計(jì)算機(jī)角度思考問(wèn)題培養(yǎng)學(xué)生邏輯思維能力和面向過(guò)程的程序設(shè)計(jì)方法能夠針對(duì)非數(shù)值計(jì)算的具體問(wèn)題選擇合理的存儲(chǔ)結(jié)構(gòu)及構(gòu)造較有效率的算法運(yùn)用C語(yǔ)言編制結(jié)構(gòu)清晰、可讀性好的程序會(huì)設(shè)計(jì)測(cè)試用例,完成程序的測(cè)試,能撰寫(xiě)該程序的技術(shù)報(bào)告具備面向過(guò)程程序的獨(dú)立設(shè)計(jì)及實(shí)現(xiàn)能力45用計(jì)算機(jī)解決問(wèn)題示例某地刑偵大隊(duì)對(duì)涉及6個(gè)嫌疑人的一樁疑案進(jìn)行分析得到以下結(jié)論,試編一程序,將作案人找出來(lái)。A、B至少有1人作案;A、E、F 3人中至少

2、有2人參與作案;A D不可能是同案犯;B、C或同時(shí)作案,或都與本案無(wú)關(guān):C、D中有且僅有1人作案;如果D沒(méi)有參與作案,則E也不可能參與作案。課程目標(biāo)61.培養(yǎng)邏輯思維和程序設(shè)計(jì)思想,重點(diǎn)培養(yǎng)分析問(wèn)題和使用C語(yǔ)言進(jìn)行程序設(shè)計(jì)以解決實(shí)際問(wèn)題的能力。2.熟練掌握C語(yǔ)言基礎(chǔ)知識(shí)、C語(yǔ)言程序結(jié)構(gòu)、語(yǔ)法及函數(shù)庫(kù)、簡(jiǎn)單算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。3.了解并初步掌握當(dāng)前軟件行業(yè)公認(rèn)的程序設(shè)計(jì)風(fēng)格和規(guī)范,增強(qiáng)程序可讀性和易擴(kuò)展性;能夠熟練使用一種常用的編程工具和集成開(kāi)發(fā)環(huán)境進(jìn)行程序設(shè)計(jì)、編譯、測(cè)試及調(diào)試。1.2 程序設(shè)計(jì)概述程序設(shè)計(jì)語(yǔ)言發(fā)展語(yǔ)言實(shí)現(xiàn)及開(kāi)發(fā)環(huán)境78程序無(wú)處不在計(jì)算機(jī)移動(dòng)設(shè)備外設(shè)智能設(shè)備9什么是程序一

3、系列遵循一定規(guī)則并能正確完成特定功能的代碼或指令序列通常包括數(shù)據(jù)結(jié)構(gòu)與算法兩部分#include int main() int a=3,b=2,c=5; int d=a*b+c; printf(ab+c=%dn, d); return 0;源程序a.c可執(zhí)行程序編譯鏈接01100111100110程序設(shè)計(jì)語(yǔ)言及其發(fā)展程序設(shè)計(jì)語(yǔ)言一套規(guī)范的集合,主要包括該語(yǔ)言使用的字符集,直接和間接支持的數(shù)據(jù)類型集合、運(yùn)算符集合、關(guān)鍵字集合、指令集合、語(yǔ)法規(guī)則、以及對(duì)特定構(gòu)造的支持。11程序設(shè)計(jì)語(yǔ)言及其發(fā)展1834第一臺(tái)機(jī)械式計(jì)算機(jī)(最早的程序員Ada)1896最早的程序載體穿孔卡片1937“圖靈機(jī)”數(shù)學(xué)模型1

4、952MIT創(chuàng)建了匯編語(yǔ)言1953IBM研制Fortran語(yǔ)言1965BASIC語(yǔ)言出現(xiàn)1972貝爾實(shí)驗(yàn)室發(fā)明C語(yǔ)言20世紀(jì)80年代貝爾實(shí)驗(yàn)室發(fā)明C+語(yǔ)言1983Borland公司研制Turbo Pascal1991 - Python1995Java語(yǔ)言誕生2002Microsoft發(fā)布.NET12程序設(shè)計(jì)語(yǔ)言及其發(fā)展機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言(C,Java,C+,C#)13高級(jí)語(yǔ)言編譯問(wèn)題:計(jì)算d=ab+c00000001000000001000 將單元1000的數(shù)據(jù) (a) 裝入寄存器000000001000100001010 將單元1010的數(shù)據(jù) (b) 裝入寄存器100000101000

5、000000001 將寄存器1的數(shù)據(jù)乘到寄存器0上 (axb)00000001000100001100 將單元1100的數(shù)據(jù) (c) 裝入寄存器100000100000000000001 將寄存器1的數(shù)據(jù)累加到寄存器0上 (axb+c)00000010000000001110 將寄存器0的數(shù)據(jù)寫(xiě)入內(nèi)存單元1110 (d=axb+c)機(jī)器語(yǔ)言load 0 a 將單元1000的數(shù)據(jù) (a) 裝入寄存器0load 1 b 將單元1010的數(shù)據(jù) (b) 裝入寄存器1mult 0 1 將寄存器1的數(shù)據(jù)乘到寄存器0上 (axb)load 1 c 將單元1100的數(shù)據(jù) (c) 裝入寄存器1add 0 1 將

6、寄存器1的數(shù)據(jù)累加到寄存器0上 (axb+c)save 0 d 將寄存器0的數(shù)據(jù)寫(xiě)入內(nèi)存單元1110 (d=axb+c)匯編語(yǔ)言d=a*b+c高級(jí)語(yǔ)言程序設(shè)計(jì)語(yǔ)言熱度(TIOBE Index)程序設(shè)計(jì)語(yǔ)言熱度(TIOBE Index)16語(yǔ)言實(shí)現(xiàn)具體地實(shí)現(xiàn)一種語(yǔ)言的各種特征并支持特定的編程模式的技術(shù)和工具。表現(xiàn)形式:編譯器(Compiler)和連接器(Linker)。語(yǔ)言是標(biāo)準(zhǔn)的但語(yǔ)言實(shí)現(xiàn)是因廠家而異的常見(jiàn)C語(yǔ)言實(shí)現(xiàn):Borland C、Microsoft C、GCC 17開(kāi)發(fā)環(huán)境泛指支持軟件開(kāi)發(fā)的一切工具操作系統(tǒng)代碼編輯器編譯器鏈接器調(diào)試器18開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境(IDE)將編輯器、編譯器、

7、連接器和調(diào)試器集成在一起的開(kāi)發(fā)工具C/C+集成開(kāi)發(fā)環(huán)境:Dev C+Code BlocksVisual C+Eclipse19命令行下需要記住編譯命令不方便調(diào)試集成開(kāi)發(fā)環(huán)境下操作方便,但后臺(tái)仍然是以命令行方式運(yùn)作V.S.1.3 C語(yǔ)言概述C語(yǔ)言簡(jiǎn)介(特點(diǎn),發(fā)展等)C程序框架(主函數(shù),語(yǔ)句,注釋等)2021C語(yǔ)言能做什么純粹的C語(yǔ)言只能做計(jì)算和文字處理擴(kuò)充了函數(shù)庫(kù)的C語(yǔ)言幾乎可以完成任何和程序控制有關(guān)的任務(wù)C語(yǔ)言和第三方函數(shù)庫(kù),可以完成應(yīng)用程序設(shè)計(jì),嵌入式程序設(shè)計(jì),驅(qū)動(dòng)程序設(shè)計(jì),游戲,.22C語(yǔ)言簡(jiǎn)介C 語(yǔ)言簡(jiǎn)史演變:ALGOL 60CPL BCPL B C 1973 Dennis Ritchi

8、e & Brian Kernighan (Bell Labs.)為開(kāi)發(fā) UNIX 而設(shè)計(jì) C 語(yǔ)言的標(biāo)準(zhǔn)化ANSI C 標(biāo)準(zhǔn)化委員會(huì):1983C89和C90C99C1123C語(yǔ)言特點(diǎn)中級(jí)語(yǔ)言:介于高級(jí)語(yǔ)言與低級(jí)語(yǔ)言之間高級(jí)語(yǔ)言的結(jié)構(gòu)化與模塊化(高級(jí)語(yǔ)言基本特性)低級(jí)語(yǔ)言的控制性與靈活性(指針,位操作)結(jié)構(gòu)化順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)模塊化函數(shù)、函數(shù)庫(kù)可移植性雖然可在多種系統(tǒng)下使用,但可移植性不是非常好24第一個(gè)C程序/* hello.c: The first program author: wanbo date: 2017/10/9*/ #include int main() / singl

9、e line comment printf( * Hello, world *n ); return 0; 25C源程序構(gòu)成頭文件包含條件編譯語(yǔ)句宏定義說(shuō)明部分全局變量函數(shù)聲明其它函數(shù)主函數(shù)(main)執(zhí)行部分常量/* hello.c: The first program author: wanbo date: 2010/10/9*/ #include int main() / single line comment printf( * hello, world*n ); return 0; 預(yù)處理部分26一個(gè)最簡(jiǎn)單的C程序框架#include int main() return 0; 在這里

10、可以添加完成特定任務(wù)的代碼這個(gè)頭文件是絕大多數(shù)C程序必須包含的程序結(jié)束27main函數(shù)main函數(shù)的兩種常見(jiàn)形式int main( ) return 0;int main( int argc, char *argv ) return 0;命令行參數(shù)28main函數(shù)C程序中可以有多個(gè)函數(shù)但必須有且只能有一個(gè)main函數(shù)所有C程序都從main函數(shù)開(kāi)始執(zhí)行main函數(shù)的名字不能改變(包括大小寫(xiě))main函數(shù)由系統(tǒng)調(diào)用Main和main是不同的29語(yǔ)句和注釋語(yǔ)句包含一個(gè)或多個(gè)表達(dá)式數(shù)值運(yùn)算、函數(shù)調(diào)用等語(yǔ)句以英文分號(hào)(;)結(jié)束一條語(yǔ)句可以分成多行書(shū)寫(xiě)C語(yǔ)言使用自由格式的語(yǔ)法自由格式與代碼風(fēng)格注釋多行注釋

11、用/* */來(lái)分界單行注釋用/開(kāi)頭/* 多行注釋 hello.c: The first program author: wanbo date: 2017/10/9*/ #include int main() / 單行注釋 printf( * hello, world*n ); return 0; 30自由格式與代碼風(fēng)格#include int main() printf( hello world ) ; return 0; #include int main() printf( hello worldn ) ; return 0;#include int main() printf( hell

12、o world ) ; return 0; 良好的代碼風(fēng)格適當(dāng)?shù)淖⑨屵m當(dāng)?shù)膿Q行適當(dāng)?shù)目s進(jìn)適當(dāng)?shù)目招蠽.S.31建立一個(gè)可執(zhí)行程序編輯(Edit)編譯(Compile)鏈接(Link)f1.hf2.hf3.hs1.cs2.cprog.exe鏈接s1.objs2.obj編譯編輯32命令行程序和GUI程序Windows下的文件復(fù)制命令行程序和GUI程序命令行下的文件復(fù)制33命令行程序和GUI程序一個(gè)C語(yǔ)言完成的文件復(fù)制程序(fcopy.c)34命令行才是本質(zhì)邏輯,GUI只是建立在本質(zhì)邏輯上的用戶接口。#include #include #define BUF_SIZE 1024int main(in

13、t argc,char *argv) FILE *fp1,*fp2; unsigned char bufBUF_SIZE; int n; fp1=fopen(argv1,rb); fp2=fopen(argv2,wb); do n=fread(buf,1,BUF_SIZE,fp1); fwrite(buf,1,n,fp2); while(n=BUF_SIZE); fclose(fp1); fclose(fp2); return 0;35小結(jié)重點(diǎn)1:了解程序設(shè)計(jì)相關(guān)概念重點(diǎn)2:熟悉C語(yǔ)言源程序框架重點(diǎn)3:熟悉集成開(kāi)發(fā)環(huán)境的使用重點(diǎn)4:熟悉計(jì)算機(jī)基本操作及命令行重點(diǎn)5:熟悉機(jī)試系統(tǒng)使用36作業(yè)完成

14、平臺(tái)上的學(xué)習(xí)在你的開(kāi)發(fā)環(huán)境中編譯、運(yùn)行本節(jié)中的兩個(gè)程序試著修改第一個(gè)程序(hello.c)讓它輸出別的內(nèi)容熟悉C語(yǔ)言源程序結(jié)構(gòu)熟悉命令行用法C語(yǔ)言程序設(shè)計(jì)第二講 數(shù)據(jù)對(duì)象與計(jì)算(4學(xué)時(shí)) 計(jì)算機(jī)學(xué)院一個(gè)溫度轉(zhuǎn)換的問(wèn)題已知華氏溫度(用f表示)到攝氏溫度(用c表示)的轉(zhuǎn)換公式為:c = 5/9 (f-32),寫(xiě)一個(gè)程序?qū)⑤斎氲娜A氏溫度轉(zhuǎn)換為攝氏溫度,輸出結(jié)果保留兩位小數(shù)381. 已知(輸入):華氏溫度f(wàn)2. 計(jì)算過(guò)程:c = 5/9 (f-32)3. 結(jié)果(輸出):輸出攝氏溫度c問(wèn)題轉(zhuǎn)換為程序需要解決的問(wèn)題1. c和f在程序中用什么名字表示(標(biāo)識(shí)符問(wèn)題)?2. c和f在程序中用什么數(shù)據(jù)類型表示?3

15、. c和f的值如何給定?(輸入和賦值問(wèn)題)4. 數(shù)學(xué)表達(dá)式c = 5/9 (f-32) 在C程序中如何表示及計(jì)算(C語(yǔ)言表達(dá)式、運(yùn)算符、優(yōu)先級(jí))?5. 如何輸出c的值?(輸出、精度控制)39目標(biāo)用C語(yǔ)言程序解決簡(jiǎn)單計(jì)算問(wèn)題掌握數(shù)據(jù)對(duì)象的表示方法掌握C語(yǔ)言表達(dá)式的寫(xiě)法掌握C語(yǔ)言輸入/輸出方法40主要內(nèi)容數(shù)據(jù)對(duì)象表示2.1 基本字符、標(biāo)識(shí)符、關(guān)鍵字2.2 數(shù)據(jù)、類型、變量計(jì)算過(guò)程2.3 運(yùn)算符、表達(dá)式與計(jì)算用戶交互2.4 結(jié)果輸出與數(shù)據(jù)輸入小結(jié)412.1 基本字符、標(biāo)識(shí)符、關(guān)鍵字解決數(shù)據(jù)對(duì)象命名問(wèn)題在C語(yǔ)言中可以使用哪些字符?在C語(yǔ)言中給對(duì)象命名要遵循哪些規(guī)則?是否符合命名規(guī)則的名字都可以使用?4

16、2基本字符數(shù)字字符:09大小寫(xiě)拉丁字母:az,AZ;其他一些可打?。梢燥@示)的字符,包括: !%&*()_-+= :;, . ? / | 特殊字符,如空格符、換行符、制表符等431.在注釋中可以使用2.在雙引號(hào)內(nèi)可以使用中文字符能否使用?對(duì)象命名規(guī)則程序中一個(gè)程序?qū)ο蟮拿址Q為標(biāo)識(shí)符,該名字必須滿足以下規(guī)則由字母、數(shù)字和下劃線(_)構(gòu)成的一個(gè)連續(xù)序列,不能有空白字符(鍵盤上的空格鍵、TAB鍵)第一個(gè)字符必須是字母或下劃線_(注意下劃線_與橫線-的區(qū)別)區(qū)別大小寫(xiě):NAME和name是不同的標(biāo)識(shí)符44標(biāo)識(shí)符示例45標(biāo)識(shí)符合法性abcdA_great_machineBeijingkey map3

17、set_f2048:ab4C_Programming合法合法合法合法合法不合法不合法不合法標(biāo)識(shí)符命名慣例盡量使用有意義的單詞第一個(gè)字符盡量不使用下劃線標(biāo)識(shí)符由多個(gè)單詞構(gòu)成時(shí)可以每個(gè)單詞首字母大寫(xiě)標(biāo)識(shí)符不宜太長(zhǎng),可以適當(dāng)使用簡(jiǎn)寫(xiě)保持命名風(fēng)格的一致性46幾種常見(jiàn)命名規(guī)則駝峰命名法(Camel)混合使用大小寫(xiě)字母來(lái)構(gòu)成變量和函數(shù)的名字例如:MyData匈牙利命名法(Hungarian)在變量名前面加上相應(yīng)的小寫(xiě)字母的符號(hào)標(biāo)識(shí)作為前綴,標(biāo)識(shí)出變量的作用域,類型等例如:iMyData帕斯卡(Pascal)命名法: 與駱駝命名法類似只不過(guò)駱駝命名法是首字母大寫(xiě),而帕斯卡命名法是首字母小寫(xiě)例如:myData

18、47關(guān)鍵字C語(yǔ)言合法標(biāo)識(shí)符中的一個(gè)特殊的小集合作為關(guān)鍵字的標(biāo)識(shí)符在程序里具有語(yǔ)言預(yù)先定義好的特殊意義,不能用于其他目的不能作為普通的名字(標(biāo)識(shí)符)使用48C語(yǔ)言的32個(gè)關(guān)鍵字49auto break case charconst continue default dodouble else enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile while問(wèn)題轉(zhuǎn)換為程序需要解決的問(wèn)題1. 攝氏溫度

19、c和華氏溫度f(wàn)在程序中用什么名字表示(標(biāo)識(shí)符問(wèn)題)?50可以就用c表示攝氏度,f表示華氏度問(wèn)題轉(zhuǎn)換為程序(版本0)下面的程序正確嗎?51int main() f=20; c=5/9*(f-32); return 0; 如何才能讓C語(yǔ)言編譯器識(shí)別c和f?Error f undeclaredError c undeclared 2.2 數(shù)據(jù)、類型、變量解決數(shù)據(jù)對(duì)象的存儲(chǔ)和表示問(wèn)題計(jì)算機(jī)對(duì)不同的數(shù)據(jù)類型有不同的存儲(chǔ)和表示方法計(jì)算機(jī)能夠表示的數(shù)值范圍總是有限的52 5.0和5在數(shù)學(xué)上是相同的,但在計(jì)算機(jī)內(nèi)部表示上是不同的 2356.4359是一個(gè)有限小數(shù),但在計(jì)算機(jī)上表示時(shí)可能不夠準(zhǔn)確數(shù)據(jù)與類型C語(yǔ)言

20、的基本數(shù)據(jù)類型包括整數(shù)類型實(shí)數(shù)類型字符類型程序中的每一個(gè)數(shù)據(jù)都必定屬于某一種類型(基本類型或自定義類型)每一種數(shù)據(jù)類型都有表示方式(編碼)和表示范圍數(shù)據(jù)類型確定了數(shù)據(jù)對(duì)象支持的運(yùn)算53整數(shù)類型和整數(shù)的表示longintshort字節(jié)數(shù)442表示范圍-231231-1-231231-1-215215-154三種整數(shù)類型長(zhǎng)整數(shù) long int 可以簡(jiǎn)寫(xiě)為 long普通整數(shù) int短整數(shù) short int 可以簡(jiǎn)寫(xiě)為 short三種整數(shù)類型表示范圍long int short,具體范圍取決于不同的實(shí)現(xiàn)整數(shù)類型和整數(shù)的表示unsigned longunsigned intunsigned shor

21、t字節(jié)數(shù)442表示范圍0232-10232-10216-155三種無(wú)符號(hào)整數(shù)類型長(zhǎng)整數(shù)unsigned long int 可以簡(jiǎn)寫(xiě)為 unsigned long普通整數(shù) unsigned int短整數(shù) unsigned short int 可以簡(jiǎn)寫(xiě)為 unsigned short三種整數(shù)類型表示范圍unsigned long unsigned int unsigned short整數(shù)常數(shù)的書(shū)寫(xiě)形式(int.c)十進(jìn)制形式例如:123456,123,100八進(jìn)制形式以0開(kāi)頭例如:0123456,0123,0100十六進(jìn)制形式以0 x開(kāi)頭例如:0 x123456,0 x123,0 x10056整數(shù)

22、常數(shù)的書(shū)寫(xiě)形式示例八進(jìn)制形式十進(jìn)制值01234564279801238301006457十六進(jìn)制形式十進(jìn)制值0 x12345611930460 x1232910 x100256實(shí)數(shù)類型和實(shí)數(shù)表示三種實(shí)數(shù)類型單精度浮點(diǎn)數(shù):float雙精度浮點(diǎn)數(shù):double長(zhǎng)雙精度浮點(diǎn)數(shù):long double三種實(shí)數(shù)類型的表示范圍(IEEE標(biāo)準(zhǔn))58字節(jié)數(shù)指數(shù)位數(shù)尾數(shù)位數(shù)表示范圍float4823-3.410383.41038double81152-1.7103083.410308long double1615112- 1.2 1049323.4 104932浮點(diǎn)數(shù)表示方法任意二進(jìn)制浮點(diǎn)數(shù)公式:N=M2E其中

23、,M為尾數(shù)(純小數(shù)部分),整數(shù)E為指數(shù),M與E都帶符號(hào)。二進(jìn)制浮點(diǎn)數(shù)特征:尾數(shù)的位數(shù)決定數(shù)的精度;指數(shù)的位數(shù)決定數(shù)的范圍。59指數(shù)符號(hào)指數(shù)E尾數(shù)符號(hào)尾數(shù)M(定點(diǎn)整數(shù))(定點(diǎn)小數(shù))實(shí)數(shù)常數(shù)的書(shū)寫(xiě)形式小數(shù)形式例如:12000000.00.00001指數(shù)形式例如:1.2E7 1E-5注意:以上形式表示的實(shí)數(shù)均被當(dāng)做double類型存儲(chǔ),如果希望以float類型存儲(chǔ)需要在后面加上F或f例如:12000000.0f ,0.00001F,1.2E7F ,1E-5F60Tips:在寫(xiě)程序時(shí)都使用double類型字符類型和字符的表示字符數(shù)據(jù)主要用于輸入輸出和文字處理字符類型:char字符類型在計(jì)算機(jī)中用一個(gè)字

24、節(jié)的整數(shù)存儲(chǔ)unsigned char: 0255char: -128127每一個(gè)字符都有唯一一個(gè)對(duì)應(yīng)的整數(shù),該整數(shù)稱為這個(gè)字符的ASCII碼61ASCII碼在計(jì)算機(jī)中每一個(gè)拉丁文字字母用一個(gè)0127的數(shù)字表示,這個(gè)數(shù)字稱為該字母的ASCII碼ASCII字符集:所有大小寫(xiě)英文字母、數(shù)字、各種標(biāo)點(diǎn)符號(hào)字符,還有一些控制字符,一共128個(gè)62字符的書(shū)寫(xiě)形式1.用單引號(hào)括起的單個(gè)字符例如:A,a,12.以字符對(duì)應(yīng)的ASCII碼表示64/a,b都表示字符Achar a,b;a=A;b=65;字符的書(shū)寫(xiě)形式3.用轉(zhuǎn)義字符表示特殊字符反斜線()開(kāi)頭的轉(zhuǎn)義字符用來(lái)表示ASCII字符集中的特殊字符65注意:對(duì)

25、未定義的轉(zhuǎn)義字符直接輸出反斜線后的字符轉(zhuǎn)義字符實(shí)際輸出的字符n換行符號(hào)單引號(hào)反斜線雙引號(hào)字符串字符串不是C語(yǔ)言的一種數(shù)據(jù)類型用雙引號(hào)括起的一系列字符:CHINA Beijing University Welcomen其本質(zhì)是字符數(shù)組主要用于輸入輸出printf( Hello C Program!n );字符串中間不能換行66Hello C ProgramHello C Program變量聲明變量:用于存儲(chǔ)程序的輸入數(shù)據(jù)或計(jì)算結(jié)果的存儲(chǔ)單元變量值在程序運(yùn)行時(shí)可以改變變量聲明:給存儲(chǔ)單元定義一個(gè)名稱及類型,便于程序中引用變量名必須是合法標(biāo)識(shí)符變量必須有確定數(shù)據(jù)類型可以在一條語(yǔ)句中定義多個(gè)同類型變量

26、可以在變量聲明時(shí)賦值67示例程序中的變量聲明68#include int main() double f=50.0;/聲明存儲(chǔ)華氏溫度的變量并賦值 double c;/聲明存儲(chǔ)攝氏溫度的變量 . #include int main() double f=50.0, c;/一條語(yǔ)句中聲明多個(gè)變量 . 變量基本操作賦值操作修改變量當(dāng)前的值方法:使用賦值表達(dá)式(由操作符“=”構(gòu)成的表達(dá)式)a=3.5b=5+3取值操作獲得變量現(xiàn)在的值方法:直接引用變量名稱s=a+bprintf(s=%dn, s);69問(wèn)題轉(zhuǎn)換為程序(版本1)70#include int main()double f=20, c; r

27、eturn 0;數(shù)學(xué)運(yùn)算c = 59 (f-32),如何轉(zhuǎn)換成C語(yǔ)言表達(dá)式?C語(yǔ)言表達(dá)式如何計(jì)算?2.3 運(yùn)算符、表達(dá)式與計(jì)算解決數(shù)學(xué)運(yùn)算到程序的轉(zhuǎn)換問(wèn)題數(shù)學(xué)運(yùn)算符在程序中如何表示?數(shù)學(xué)運(yùn)算的規(guī)則在程序中如何實(shí)現(xiàn)?71算術(shù)運(yùn)算符72運(yùn)算符使用形式數(shù)學(xué)意義適用數(shù)據(jù)類型+一元或二元運(yùn)算符一元表示正號(hào),二元表示加法所有基本數(shù)據(jù)類型-一元或二元運(yùn)算符一元表示負(fù)號(hào),二元表示減法所有基本數(shù)據(jù)類型*二元運(yùn)算符乘法運(yùn)算所有基本數(shù)據(jù)類型/二元運(yùn)算符除法運(yùn)算所有基本數(shù)據(jù)類型%二元運(yùn)算符模運(yùn)算(求余數(shù))整數(shù)類型算術(shù)運(yùn)算符示例(operator.c)73double a=3.0,b=2.0; int c=4,d=2;

28、表達(dá)式結(jié)果-a-3.0a+b5.0a-b1.0a*b6.0a/b1.5c/d2c%d0算術(shù)表達(dá)式由計(jì)算對(duì)象(例如數(shù)值的文字量、變量、函數(shù)調(diào)用等)、算術(shù)運(yùn)算符及圓括號(hào)構(gòu)成,基本形式與數(shù)學(xué)上的算術(shù)表達(dá)式類似-( 28 + 32 ) + (16 * 7 - 4)25 * (3 - 6) + 234a * b + c / 2a * sin( c * 3.1416 / 180 )74算術(shù)表達(dá)式數(shù)學(xué)公式C語(yǔ)言表達(dá)式b2-4ac a + b - cax-(b+c)75b * b 4 * a *ca+b-c(a+b)/(c+d)1/(1+x * x)a *x -(b+c)表達(dá)式求值給定了表達(dá)式中所有變量的值以

29、后表達(dá)式的值如何計(jì)算?表達(dá)式的計(jì)算過(guò)程優(yōu)先級(jí)不同運(yùn)算符哪個(gè)先算,哪個(gè)后算?結(jié)合性相同優(yōu)先級(jí)的運(yùn)算符哪個(gè)先算,哪個(gè)后算?76表達(dá)式求值優(yōu)先級(jí)規(guī)則1.一元運(yùn)算符優(yōu)先級(jí)最高2.先乘除后加減3.括號(hào)中的表達(dá)式先計(jì)算77運(yùn)算符優(yōu)先級(jí)一元+和-高* / %中二元+和-低當(dāng)不確定運(yùn)算符優(yōu)先級(jí)時(shí),用括號(hào)來(lái)指定運(yùn)算順序是避免錯(cuò)誤的最好方法14-4表達(dá)式值10 / 5 + 4 * 6 / 2-(2 + 6) * 4) / (3 + 5)表達(dá)式求值結(jié)合性確定具有相同優(yōu)先級(jí)的運(yùn)算符相鄰出現(xiàn)時(shí)表達(dá)式的計(jì)算順序。C語(yǔ)言規(guī)定一元算術(shù)運(yùn)算符自右向左結(jié)合;二元算術(shù)運(yùn)算符自左向右結(jié)合,優(yōu)先級(jí)相同時(shí)左邊的運(yùn)算符先計(jì)算。784 *

30、7 / 2-+-8(4 * 7) / 2(-(+(-8)148問(wèn)題轉(zhuǎn)換為程序(版本2)下面的程序結(jié)果正確嗎?79int main() double f=50; double c; c=5/9*(f-32); return 0; c的計(jì)算結(jié)果是多少c=10?計(jì)算和類型以上計(jì)算涉及的問(wèn)題類型對(duì)計(jì)算的限制混合類型計(jì)算和自動(dòng)(隱式)類型轉(zhuǎn)換強(qiáng)制(顯式)類型轉(zhuǎn)換8013011.05 / 4 + 4 * 6 / 2=?1 / 3 * 3 = ?1 * 3 / 3 = ?1/3.0 * 3 = ?計(jì)算和類型類型對(duì)計(jì)算的限制1.兩個(gè)相同類型數(shù)據(jù)使用二元運(yùn)算符計(jì)算得到的結(jié)果類型相同。例如,兩個(gè)整數(shù)運(yùn)算結(jié)果仍然是

31、整數(shù)811 + 24/21 + 121 / 3 * 3 5 / 4 + 4 * 6 / 20 * 3 130計(jì)算和類型類型對(duì)計(jì)算的限制2.計(jì)算結(jié)果超出類型表示范圍會(huì)導(dǎo)致溢出 (overflow.c)82#include int main()short a=32765, b=5;short c = a+b; / c=?printf(c=%dn,c); return 0;計(jì)算和類型混合類型計(jì)算和自動(dòng)(隱式)類型轉(zhuǎn)換兩個(gè)不同類型數(shù)據(jù)使用二元運(yùn)算符形成混合類型計(jì)算C語(yǔ)言里混合類型計(jì)算的方法是將混合類型計(jì)算中的某個(gè)運(yùn)算對(duì)算轉(zhuǎn)換為另一個(gè)運(yùn)算對(duì)象的類型再計(jì)算轉(zhuǎn)換原則是將表示范圍小的類型轉(zhuǎn)換為表示范圍大的類型

32、以避免丟失精度83表示范圍小 大類型shortintlongfloatdoublelong double計(jì)算和類型混合類型計(jì)算和自動(dòng)(隱式)類型轉(zhuǎn)換2 + 3 * 4.5 = 15.584234.53.0*13.52.0+15.5自動(dòng)類型轉(zhuǎn)換計(jì)算和類型強(qiáng)制(顯式)類型轉(zhuǎn)換任何類型均可相互轉(zhuǎn)換,但轉(zhuǎn)換可能丟失精度轉(zhuǎn)換方式:(類型名) 表達(dá)式強(qiáng)制類型轉(zhuǎn)換是一元運(yùn)算符,其優(yōu)先級(jí)和其他一元運(yùn)算符相同(高于二元運(yùn)算符)(int)3.3 * 2.2 + 4 = (int)(3.3 * 2.2) + 4 =類型轉(zhuǎn)換不改變?cè)瓉?lái)的值float a=3.3;int b=(int)a; /不改變a的值853 * 2

33、.2 + 4 = 10.6(int)(7.26) + 4 = 7 + 4 = 11計(jì)算和類型整數(shù)轉(zhuǎn)浮點(diǎn)數(shù)不存在精度問(wèn)題浮點(diǎn)數(shù)類型轉(zhuǎn)換為整數(shù)時(shí)直接去掉小數(shù)部分86(int)(3.3 * 2.2) + 4 = 112.23.347*11+7.26強(qiáng)制類型轉(zhuǎn)換問(wèn)題轉(zhuǎn)換為程序(版本3)87#include int main() double f=50.0;/存儲(chǔ)華氏溫度的變量 double c;/存儲(chǔ)攝氏溫度的變量 c=5.0/9.0*(f-32);/計(jì)算攝氏溫度 return 0; 2.4 結(jié)果輸出與數(shù)據(jù)輸入解決程序與用戶交互的問(wèn)題如何將計(jì)算結(jié)果展現(xiàn)給用戶?如何讓用戶輸入需要的數(shù)據(jù)?88輸出計(jì)算結(jié)果

34、格式化輸出函數(shù)printfC語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)調(diào)用形式:printf( 格式字符串, 其他參數(shù));89控制輸出格式 輸出類型 輸出精度 對(duì)齊方式準(zhǔn)備輸出的值 0個(gè)或多個(gè) 所有基本類型變量或常量 表達(dá)式或其他函數(shù)調(diào)用結(jié)果輸出計(jì)算結(jié)果printf函數(shù)的格式字符串雙引號(hào)括起來(lái)的字符串,其中包括:格式字符:用%引導(dǎo)格式字符,控制輸出格式轉(zhuǎn)義字符:按轉(zhuǎn)義后的含義輸出其他字符:直接輸出90格式字符串輸出結(jié)果first programfirst programfirstnprogramfirstprogram輸出計(jì)算結(jié)果用于輸出整數(shù)的格式字符%d - 以十進(jìn)制輸出帶符號(hào)整數(shù)%o - 以八進(jìn)制輸出無(wú)符號(hào)整數(shù)%x

35、- 以十六進(jìn)制輸出無(wú)符號(hào)整數(shù)int a=256,b=-180;格式字符串輸出結(jié)果a= %d, b= %da= 256, b= -180a= %xa= 100a= %oa= 40091輸出計(jì)算結(jié)果用于輸出浮點(diǎn)數(shù)的格式字符%f - 以小數(shù)形式輸出float/double型浮點(diǎn)數(shù)%e - 以指數(shù)形式輸出float/double型浮點(diǎn)數(shù)以上兩種形式默認(rèn)小數(shù)點(diǎn)后輸出6位有效數(shù)字double c=1234.567; float d=2356.4359f;格式字符串輸出結(jié)果c=%f, d=%fc=1234.567000, d=2356.435791c=%e, d=%ec=1.234567e+003, d=2

36、.356436e+00392輸出計(jì)算結(jié)果輸出浮點(diǎn)數(shù)的精度(小數(shù)位數(shù))控制%.nf n為整數(shù),表示保留幾位小數(shù)位數(shù)不足時(shí)末尾補(bǔ)零位數(shù)超出時(shí)四舍五入進(jìn)位double c=1234.567; float d=2356.4359f;格式字符串輸出結(jié)果c=%.4fc=1234.5670d=%.3fd=2356.43693輸出計(jì)算結(jié)果用于輸出字符和字符串的格式字符%c - 輸出一個(gè)字符%s - 輸出一個(gè)字符串char *s=c programming; char ch1=A,ch2=a;格式字符串輸出結(jié)果ch1=%c, ch2=%cch1=A, ch2=ach1=%d, ch2=%dch1=65, ch2

37、=97I love %s !I love c programming !94輸出計(jì)算結(jié)果使用printf需要注意的問(wèn)題1.格式字符串中沒(méi)有%引導(dǎo)的格式控制字符時(shí),不需要其他參數(shù),直接輸出字符串內(nèi)容,轉(zhuǎn)義字符按轉(zhuǎn)以后實(shí)際意義輸出95格式字符串輸出結(jié)果first programfirst programfirstnprogramfirstprogram輸出計(jì)算結(jié)果使用printf需要注意的幾個(gè)問(wèn)題2.格式字符串中有%引導(dǎo)的格式控制字符時(shí),其他參數(shù)的數(shù)量以及類型必須和格式控制字符一致。96#include int main() int a=123; double b=35.8; printf(“a=

38、%d, b=%dn, a, b); printf(a=%d, b=%fn, a ); printf(“a=%dn”, a, b ); return 0;輸出計(jì)算結(jié)果示例(printf_error.c)97類型不一致時(shí)不會(huì)進(jìn)行類型轉(zhuǎn)換,而會(huì)將實(shí)際傳入的值當(dāng)作需要的類型來(lái)理解,因此可能出現(xiàn)非預(yù)期結(jié)果!#include int main() int a=123; double b=35.8; printf(“a=%d, b=%dn, a, b); /? return 0;輸出計(jì)算結(jié)果示例(printf_error.c)98數(shù)量不一致時(shí):1.如果缺少參數(shù),會(huì)出現(xiàn)不可預(yù)知數(shù)據(jù),取決于不同的編譯器2.如果

39、有多余參數(shù),則被忽略#include int main() int a=123; double b=35.8; printf(a=%d, b=%fn, a ); /? printf(a=%dn, a, b ); /? return 0;C99 對(duì)以上問(wèn)題的解釋99The fprintf function writes output to the stream pointed to by stream, under control of the string pointed to by format that specifies how subsequent arguments

40、 are converted for output.If there are insufficient arguments for the format, the behavior is undefined.If the format is exhausted while arguments remain, the excess arguments are evaluated (as always) but are otherwise ignored. The fprintf function returns when the end of the format string is encou

41、ntered通過(guò)編譯選項(xiàng)來(lái)給出警告100問(wèn)題轉(zhuǎn)換為程序(版本4)101#include int main() double f=50.0;/存儲(chǔ)華氏溫度的變量 double c;/存儲(chǔ)攝氏溫度的變量 c=5.0/9.0*(f-32);/計(jì)算攝氏溫度 printf( c=%.2fn, c);/輸出攝氏溫度 return 0; 如何得到用戶輸入溫度轉(zhuǎn)換程序存在的問(wèn)題f是固定值,如果修改f的值需要重新編譯102能否讓用戶輸入f的值再計(jì)算?#include int main() double f=50.0; /存儲(chǔ)華氏溫度的變量 double c; /存儲(chǔ)攝氏溫度的變量 c=5.0/9.0*(f-32

42、); /計(jì)算攝氏溫度 printf( c=%.2fn, c); /輸出攝氏溫度 return 0; 從鍵盤輸入數(shù)據(jù)格式化輸入函數(shù)scanf C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)調(diào)用形式:scanf( 格式字符串, 其他參數(shù));103控制輸入數(shù)據(jù)格式(類型,精度等)的字符串,以%引導(dǎo)接受輸入值的變量地址(在普通變量前加取地址運(yùn)算符&可得到變量地址)scanf函數(shù)的格式字符串104格式控制字符接受輸入值的變量類型要求的實(shí)際輸入%dint十進(jìn)制數(shù)%ldlong十進(jìn)制數(shù)%ffloat十進(jìn)制數(shù),可以有小數(shù)點(diǎn)或指數(shù)%lfdouble十進(jìn)制數(shù),可以有小數(shù)點(diǎn)或指數(shù)%cchar一個(gè)字符scanf示例1105int x;float

43、y;double z;char c;scanf(%d %f %lf %c, &x ,&y ,&z, &c);printf(x=%d, y=%f, z=%fn,c=%c, x, y, z,c);用戶從鍵盤輸入以下內(nèi)容(表示空格):2342252.18220.4A輸出結(jié)果:x=234, y=2252.179932, z=220.400000,c=Ascanf使用注意事項(xiàng)接受輸入值的參數(shù)是變量地址!必須要按下回車后才結(jié)束輸入輸入多個(gè)數(shù)據(jù)時(shí),接受數(shù)據(jù)的變量的數(shù)量以及類型必須和格式控制字符一致輸入多個(gè)數(shù)據(jù)時(shí),格式字符之間一般用空格分隔或者不分隔,但輸入數(shù)據(jù)要用空格分隔一旦在格式字符串中用了別的字符分隔,

44、輸入時(shí)也要用相同字符分隔不要在scanf的格式字符串中加入n例如:scanf(“%dn”,&n);106scanf錯(cuò)誤示例(scanf_error.c)107scanf示例2108int x;float y;double z;char c;scanf(%d ,%f, %lf, %c, &x ,&y ,&z, &c);printf(x=%d, y=%f, z=%fn,c=%c, x, y, z,c);用戶從鍵盤輸入以下內(nèi)容:234, 2252.18, 220.4, A輸出結(jié)果:x=234, y=2252.179932, z=220.400000,c=A問(wèn)題轉(zhuǎn)換為程序(版本5)109#includ

45、e int main() double f=50.0;/存儲(chǔ)華氏溫度的變量 double c;/存儲(chǔ)攝氏溫度的變量 scanf( %lf, &f );/輸入華氏溫度 c=5.0/9.0*(f-32);/計(jì)算攝氏溫度 printf( c=%.2fn, c);/輸出攝氏溫度 return 0; 小結(jié)需要掌握的內(nèi)容C語(yǔ)言字符集標(biāo)識(shí)符基本數(shù)據(jù)類型運(yùn)算符、表達(dá)式變量定義及使用格式化輸入/輸出函數(shù)scanf/printf110小結(jié)常用程序模式111#include int main() /輸入數(shù)據(jù) scanf(,); /計(jì)算 /輸出結(jié)果 printf(. ., .); return 0;練習(xí)編寫(xiě)一個(gè)程序,

46、用于預(yù)測(cè)冰箱斷電后經(jīng)過(guò)時(shí)間t(以小時(shí)為單位,可以是小數(shù))后的溫度T。已知計(jì)算公式為 輸入兩個(gè)整數(shù)h和m分別表示斷電后的小時(shí)和分鐘。輸出冰箱斷電后經(jīng)過(guò)時(shí)間t(以小時(shí)為單位)后的溫度T,保留兩位小數(shù)112C語(yǔ)言程序設(shè)計(jì)第三講 程序流程控制(6學(xué)時(shí)) 計(jì)算機(jī)學(xué)院引言例1:寫(xiě)程序計(jì)算 ax2+bx+c=0的兩個(gè)實(shí)根,如果兩個(gè)實(shí)根相同只輸出一個(gè),如果不存在實(shí)根輸出no real root根的判別式為b2-4ac,有三種可能b2-4ac小于0,無(wú)實(shí)根b2-4ac等于0,兩個(gè)相同實(shí)根b2-4ac大于0,兩個(gè)不同實(shí)根如何根據(jù)b2-4ac的值(條件)來(lái)選擇輸出?114引言例2:計(jì)算n的變化初始為1,結(jié)束為100

47、(條件),每次遞增1重復(fù)做100次或更多次相同的事情如何解決?初始條件結(jié)束條件條件修改115主要內(nèi)容如何表示條件關(guān)系表達(dá)式邏輯表達(dá)式流程控制條件語(yǔ)句循環(huán)語(yǔ)句1163.1如何表示條件條件是什么?例如:b2-4ac0條件是否成立如何判斷?關(guān)系表達(dá)式兩個(gè)數(shù)據(jù)之間的關(guān)系(條件)通常由關(guān)系運(yùn)算符和數(shù)據(jù)構(gòu)成的表達(dá)式來(lái)確定118關(guān)系運(yùn)算符含義示例小于x 大于x 1=小于等于x =大于等于y = 2=等于y = 0!=不等于y !=0關(guān)系表達(dá)式關(guān)系表達(dá)式的結(jié)果是一個(gè)邏輯值,其值取決于關(guān)系是否成立關(guān)系成立,表達(dá)式結(jié)果為邏輯“真”(true)關(guān)系不成立,表達(dá)式結(jié)果為邏輯“假”(false)C語(yǔ)言沒(méi)有專門的邏輯值類

48、型,用數(shù)值1表示邏輯“真”,數(shù)值0表示邏輯“假”任何基本類型均可當(dāng)作邏輯值使用,非0表示邏輯“真”,0表示邏輯“假”119關(guān)系表達(dá)式示例120 xpoweryitemMIN_ITEMgendernum-5102471.5-999.0M999運(yùn)算符關(guān)系表達(dá)式含義表達(dá)式的值=x = 0 x小于或等于0power =x = yx大于或等于yitem MIN_ITEMitem大于MIN_ITEM=gender = Mgender等于M10011條件表達(dá)式C語(yǔ)言中唯一的三元運(yùn)算符表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3首先計(jì)算表達(dá)式1的值;如果這個(gè)表達(dá)式的值非 0(即,條件成立),那么接著計(jì)算表達(dá)式 2,并

49、用它的值作為整個(gè)條件表達(dá)式的值;如果條件不成立(表達(dá)式 1的值是 0),就計(jì)算表達(dá)式 3,并用它的值作為整個(gè)條件表達(dá)式的值。121特別注意: 在表達(dá)式 1非 0時(shí)不計(jì)算表達(dá)式 3;在表達(dá)式 1值為 0時(shí)不計(jì)算表達(dá)式 2。條件表達(dá)式示例(condition.c)122/示例1:求兩個(gè)整數(shù)的較大值或較小值的方法int a=4, b=6, max, min;max = ab ? a : b; min = a3 ? (a=a+1) : (b=b+1);printf(“a=%d, b=%d, b=%dn, a, b, c);邏輯表達(dá)式用邏輯運(yùn)算符連接多個(gè)關(guān)系表達(dá)式,用于描述多個(gè)關(guān)系的復(fù)雜組合例1:判斷x

50、是否在區(qū)間 3, 5 )之內(nèi)即x大于等于3,并且x小于5例2:判斷某年是否是閏年:年份能夠被400整除或者年份能夠被4整除并且不能被100整除例3:判斷x不在區(qū)間 3, 5 )之內(nèi)例1的條件取反123邏輯運(yùn)算符C語(yǔ)言的3種邏輯運(yùn)算符124邏輯運(yùn)算符含義示例&并且x =3&x5 |或者x=5!非!(x =3&x5)邏輯表達(dá)式邏輯與(表達(dá)式1 & 表達(dá)式2)只有兩個(gè)表達(dá)式都非0時(shí)結(jié)果為1,否則為0125操作數(shù)1操作數(shù)2操作數(shù)1 & 操作數(shù)2非零(true)非零(true)1(true)非零(true)0(false)0(false)0(false)非零(true)0(false)0(false)0

51、(false)0(false)計(jì)算方式:先求表達(dá)式 1;若得到0則不計(jì)算表達(dá)式2,以0作為整個(gè)表達(dá)式的結(jié)果;否則(表達(dá)式1的值非 0)就計(jì)算表達(dá)式 2,如果表達(dá)式2值為0則整個(gè)表達(dá)式結(jié)果為0 ,否則結(jié)果為1 邏輯表達(dá)式邏輯或(表達(dá)式1 | 表達(dá)式2)兩個(gè)表達(dá)式的值都為0時(shí)結(jié)果為0,否則為1126操作數(shù)1操作數(shù)2操作數(shù)1 | 操作數(shù)2非零(true)非零(true)1(true)非零(true)0(false)1(true)0(false)非零(true)1(true)0(false)0(false)0(false)計(jì)算方式:先求表達(dá)式 1;若得到非0則不計(jì)算表達(dá)式2,以1作為整個(gè)表達(dá)式的結(jié)果;

52、否則(當(dāng)表達(dá)式1值為0時(shí))計(jì)算表達(dá)式 2,如果它為0則整個(gè)表達(dá)式結(jié)果為0 ,否則結(jié)果為1 。邏輯表達(dá)式邏輯非(! 表達(dá)式)把表達(dá)式的值看作邏輯值,以該值的否定作為結(jié)果127操作數(shù)1!操作數(shù)1非零(true)0(false)0(false)1(true)計(jì)算方式:如果表達(dá)式的值非 0,則結(jié)果為 0;如果表達(dá)式值是 0則結(jié)果為 1。運(yùn)算符優(yōu)先級(jí)128運(yùn)算符優(yōu)先級(jí)函數(shù)調(diào)用! + - & (一元運(yùn)算符)* / %+ - = = !=&|=(賦值運(yùn)算符)低高邏輯表達(dá)式示例例1:判斷x是否在區(qū)間 3, 5 )之內(nèi)(range.c)即x大于等于3,并且x小于5129x = 3 & x 53= x 5 是否正

53、確?這是數(shù)學(xué)表示方式,在C語(yǔ)言中得不到想要的結(jié)果邏輯表達(dá)式示例例2:判斷x是否在區(qū)間 3, 5 )之外即x小于3,或者x大于等于5130 x = 5!(x =3 & x 5)或者xx = 5!(x =3 & x =a & ch =0 & ch =A & ch y ) max = x; else max = y; 142if 語(yǔ)句的三種格式if語(yǔ)句/第三種格式if ( 條件1 ) /條件1成立else if ( 條件2 ) /條件1不成立且條件2成立else if ( 條件3 ) /條件1不成立且條件2不成 /立且條件3成立else /條件1,2,3均不成立if語(yǔ)句143當(dāng)操作只有一條語(yǔ)句時(shí),i

54、f和else后的大括號(hào)可以不要if和else對(duì)應(yīng)的操作應(yīng)該縮進(jìn),便于代碼理解當(dāng)操作有多條語(yǔ)句時(shí),用大括號(hào)把語(yǔ)句包圍起來(lái)形成復(fù)合結(jié)構(gòu)使用if語(yǔ)句應(yīng)注意:144復(fù)合結(jié)構(gòu)多個(gè)語(yǔ)句由一對(duì)大括號(hào)包圍起來(lái)構(gòu)成復(fù)合結(jié)構(gòu)int main () double s=123.5; printf(s=%f!n,s); return 0;int main () int a,abs; scanf(“%d”,&a); abs=a; if( a 0 ) abs=-a; 145編寫(xiě)程序,接受用戶輸入的整數(shù),如果該整數(shù)為奇數(shù)則將其乘 3 加 1 后輸出,偶數(shù)直接輸出。簡(jiǎn)單if語(yǔ)句#include int main() int a

55、, result; /* 輸入部分 */ printf( The program gets a number.nIf it is an even, output it directly, n ); printf( otherwise multiply it by 3 then plus 1.n ); printf( The number: ); scanf( %d ,&a); /* 計(jì)算部分 */ result = a; if( a % 2 = 1 ) result = a * 3 + 1; /* 輸出部分 */ printf( The result is %d.n, result ); re

56、turn 0;146編寫(xiě)程序,接受用戶輸入的整數(shù),如果該整數(shù)為奇數(shù)則將其乘 3 加 1 后輸出,偶數(shù)除以 2 后輸出if-else語(yǔ)句#include int main() int a, result; /* 輸入部分 */ printf( The program gets a number.nIf it is an even, divide it by 2, n ); printf( otherwise multiply it by 3 then plus 1.n ); printf( The number: ); scanf( %d ,&a); /* 計(jì)算部分 */ if( a % 2 =

57、 1 ) result = a * 3 + 1; else result = a / 2; /* 輸出部分 */ printf( The result is %d.n, result ); return 0;147if-else語(yǔ)句從鍵盤輸入三個(gè)整數(shù),計(jì)算其中的最大值并將其輸出。#include int main() int a, b,c,max; /* 輸入部分 */ printf( “該程序從鍵盤獲取3個(gè)整數(shù),輸出最大值。 n ); printf( “請(qǐng)輸入3個(gè)數(shù): n ); scanf( %d %d %d ,&a,&b,&c); /* 計(jì)算部分 */ if (a b) max = a;e

58、lse max = b;if (c max) max = c;/* 輸出部分 */ printf( “最大值為: %d.n, max ); return 0;148從鍵盤輸入一個(gè)三角形的三條邊,判斷其為何種三角形。if-else if-else語(yǔ)句#include int main()int a,b,c;scanf(%d %d %d,&a,&b,&c);if (a+b = c | b+c = a | c+a = b)printf( 不是三角形);else if (a = b & b = c)printf(等邊三角形);else if (a = b | b = c | c = a)printf(

59、 等腰三角形);else if (a*a+b*b = c*c | b*b+c*c = a*a | c*c+a*a = b*b)printf(直角三角形(非等腰));elseprintf( 其它三角形);printf( n); return 0;If語(yǔ)句的嵌套一般形式if ( )if ( ) 語(yǔ)句1else 語(yǔ)句2elseif ( ) 語(yǔ)句3else 語(yǔ)句4注意:語(yǔ)句1、2、3、4可以是復(fù)合語(yǔ)句,每層的if與else配對(duì),或用 來(lái)確定層次關(guān)系。149150else 與哪個(gè) if 配對(duì)?if( service_years = 28 ) salary_level += 1;elsesalary_le

60、vel += 2;else 與 if 配對(duì)規(guī)則-else部分屬于前面最近的無(wú)對(duì)應(yīng)else的if語(yǔ)句。if( service_years = 28 ) salary_level += 1;else salary_level += 2;降低第二個(gè) if 的層次,使 else 與第一個(gè) if 配對(duì)if語(yǔ)句的歧義151計(jì)算過(guò)程先計(jì)算整型表達(dá)式的值依次與常數(shù)表達(dá)式比較若相同則執(zhí)行該分支(子句)否則轉(zhuǎn)向 default 分支最后退出 switch 語(yǔ)句特別說(shuō)明switch 后面的表達(dá)式必須為整型、字符型case 后面必須為常量表達(dá)式,且各個(gè) case 值必須不同case 分支中的語(yǔ)句可以有多條,不需要花括

溫馨提示

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

評(píng)論

0/150

提交評(píng)論