![C語言程序設(shè)計(jì)教程PPT完整版全套教學(xué)課件_第1頁](http://file4.renrendoc.com/view/e25c97e2fb63201486adbf5637a06d4e/e25c97e2fb63201486adbf5637a06d4e1.gif)
![C語言程序設(shè)計(jì)教程PPT完整版全套教學(xué)課件_第2頁](http://file4.renrendoc.com/view/e25c97e2fb63201486adbf5637a06d4e/e25c97e2fb63201486adbf5637a06d4e2.gif)
![C語言程序設(shè)計(jì)教程PPT完整版全套教學(xué)課件_第3頁](http://file4.renrendoc.com/view/e25c97e2fb63201486adbf5637a06d4e/e25c97e2fb63201486adbf5637a06d4e3.gif)
![C語言程序設(shè)計(jì)教程PPT完整版全套教學(xué)課件_第4頁](http://file4.renrendoc.com/view/e25c97e2fb63201486adbf5637a06d4e/e25c97e2fb63201486adbf5637a06d4e4.gif)
![C語言程序設(shè)計(jì)教程PPT完整版全套教學(xué)課件_第5頁](http://file4.renrendoc.com/view/e25c97e2fb63201486adbf5637a06d4e/e25c97e2fb63201486adbf5637a06d4e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章
C語言概述第1章C語言概述.ppt第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式.ppt第3章順序結(jié)構(gòu)程序設(shè)計(jì).ppt第4章選擇結(jié)構(gòu)程序設(shè)計(jì).ppt第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì).ppt第6章數(shù)組.ppt第7章函數(shù).ppt第8章指針.ppt第9章結(jié)構(gòu)體.ppt第10章文件.ppt全套PPT課件第一章
C語言概述教學(xué)目標(biāo):
了解C語言的發(fā)展和特點(diǎn)掌握C語言程序的結(jié)構(gòu)熟悉C語言程序的開發(fā)環(huán)境和步驟教學(xué)重點(diǎn)與難點(diǎn):掌握C語言程序的結(jié)構(gòu)1.1C語言的發(fā)展C語言是一種面向過程的程序設(shè)計(jì)語言,它不僅是一種計(jì)算機(jī)高級語言,還兼有低級語言的特性,目前已廣泛應(yīng)用于各種領(lǐng)域。C語言的祖先是ALGOL60(ALGOrithmLanguage)。ALGOL60不能直接對硬件進(jìn)行操作,不適合用來編寫系統(tǒng)程序。1963年,英國劍橋大學(xué)和倫敦大學(xué)將ALGOL60發(fā)展成CPL(CombinedProgrammingLanguage)語言。1967年,MartinRichards對CPL進(jìn)行了簡化,將CPL發(fā)展成BCPL(BasicCombinedProgrammingLanguage)。1970年,美國貝爾實(shí)驗(yàn)室的KenThompson將BCPL修改成B語言,并用B語言開發(fā)了第一個(gè)高級語言UNIX操作系統(tǒng)。1.1C語言的發(fā)展1972年,KenThompson和DennisM.Richie將B語言發(fā)展成C語言。1973年,KenThompson和DennisM.Richie兩人再次合作將之前用匯編語言編寫的UNIX操作系統(tǒng)的90%以上的代碼改用C語言編寫,使得UNIX操作系統(tǒng)和C語言在全世界迅速得到推廣。后來,C語言被多次改進(jìn),出現(xiàn)了多種版本,并且沒有統(tǒng)一的標(biāo)準(zhǔn)。1983年,美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)制定了C語言標(biāo)準(zhǔn),稱為ANSIC,成為現(xiàn)在流行的C語言標(biāo)準(zhǔn)。1.1C語言的發(fā)展1.2C語言的特點(diǎn)語言簡潔、使用方便、靈活。
運(yùn)算符豐富。數(shù)據(jù)結(jié)構(gòu)類型豐富。結(jié)構(gòu)化的語言。允許直接訪問物理地址,可以直接對硬件進(jìn)行操作。
生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高??梢浦残院?。1.C語言的字符集C語言的字符集由字母、數(shù)字、空格、標(biāo)點(diǎn)和特殊字符組成。主要包括:(1)26個(gè)英文字母(區(qū)分大、小寫)。(2)10個(gè)阿拉伯?dāng)?shù)字(0、1、2、…、9)。(3)其他特殊符號,以運(yùn)算符為主(+、-、*、/、<、>、%等)。1.3C語言的基本符號2.標(biāo)識符
標(biāo)識符是用來表示變量名、函數(shù)名、用戶自定義數(shù)據(jù)類型等,由1~32個(gè)字符組成。標(biāo)識符必須以字母或下劃線開頭,后面的字符可以是英文字母、數(shù)字或下劃線。例如:abc,ABC,a1,_abc,apple√而1A,a-b,A&B,helpyou,a.b×1.3C語言的基本符號注意:(1)標(biāo)識符不能使用C語言的關(guān)鍵字,并且嚴(yán)格區(qū)分大、小寫字母。例如,ABC和abc是兩個(gè)不同的標(biāo)識符。(2)選用標(biāo)識符應(yīng)盡量做到“見名知意”。選擇有含義的英文單詞或縮寫,可增強(qiáng)程序的可讀性。
(3)盡量避免使用以下劃線開頭的標(biāo)識符,防止與庫函數(shù)沖突。1.3C語言的基本符號3.關(guān)鍵字
關(guān)鍵字又稱為保留字,是具有特殊意義的字符序列。C語言中關(guān)鍵字共有32個(gè),根據(jù)關(guān)鍵字的作用可以分為四類,如下:(1)控制語句關(guān)鍵字(12個(gè))if,else,switch,case,default,break,for,do,while,continue,goto,return
(2)數(shù)據(jù)類型關(guān)鍵字(12個(gè))int,short,long,float,double,signed,unsigned,char,enum,struct,union,void(3)存儲類型關(guān)鍵字(4個(gè)):auto,extern,register,static(4)其他關(guān)鍵字(4個(gè)):const,sizeof,typedef,volatile1.3C語言的基本符號1.4C語言程序的基本結(jié)構(gòu)【例1.1】編寫程序,在屏幕上顯示文字“Hello,world!”。
程序如下:#include<stdio.h>/*預(yù)處理命令*/main() /*主函數(shù)開始*/{printf("Hello,world!\n");/*輸出文字信息*/}程序運(yùn)行結(jié)果:Hello,world!【例1.2】從鍵盤上輸入圓的半徑,計(jì)算圓的面積。程序如下:#include<stdio.h>#definePI3.1415926voidmain(){floatr,s;printf("請輸入圓的半徑:");scanf("%f",&r);s=PI*r*r;printf("s=%f\n",s);}程序運(yùn)行結(jié)果:請輸入圓的半徑:2.5↙s=19.6349541.4C語言程序的基本結(jié)構(gòu)C語言規(guī)定,一個(gè)完整的C程序應(yīng)該包括:包含語句和預(yù)處理語句、main函數(shù)和自定義函數(shù)三個(gè)部分。
1.必要的包含語句和預(yù)處理語句這部分主要定義一個(gè)程序中引用了哪些標(biāo)準(zhǔn)函數(shù),包含文件也稱為庫文件,分為系統(tǒng)提供的和用戶自定義的兩種。
2.唯一的一個(gè)main函數(shù)main函數(shù)又稱為主函數(shù),一個(gè)C程序有且只能有一個(gè)主函數(shù)。
1.4.2C語言程序的基本結(jié)構(gòu)main函數(shù)的基本格式為:main(){……}程序中的一對大括號表示主程序的開始和結(jié)束。3.用戶自定義的函數(shù)用戶可以根據(jù)需要在程序中開發(fā)能夠?qū)崿F(xiàn)不同功能的程序段,這樣的程序段稱為函數(shù)。一個(gè)標(biāo)準(zhǔn)的C程序由一個(gè)主函數(shù)和大量的自定義函數(shù)組成。1.4.2C語言程序的基本結(jié)構(gòu)
在書寫C語言程序時(shí)應(yīng)注意以下幾個(gè)方面,以養(yǎng)成良好的編程風(fēng)格。C語言程序書寫格式自由,可以一行寫多條語句,也可以將一條語句寫在多行,但這樣會降低程序的可讀性,最好一條語句占一行。(2)C語言程序中語句必須以分號結(jié)尾。(3)C語言程序中嚴(yán)格區(qū)分字母的大小寫。(4)為了使程序看起來更加清晰,最好以縮進(jìn)的格式書寫。(5)可以為程序添加注釋來說明程序段的功能?!?/”注釋一行,“/*……*/”注釋一塊(一行或多行)。1.4.3C語言程序的書寫規(guī)范1.5C程序的開發(fā)過程開發(fā)一個(gè)C語言程序要經(jīng)過四個(gè)步驟:(1)編輯(2)編譯(3)連接(4)運(yùn)行開始編輯源程序文件編譯目標(biāo)文件連接運(yùn)行可執(zhí)行文件運(yùn)行結(jié)果結(jié)束MicrosoftVisualC++是美國微軟公司推出的目前使用極為廣泛的基于Windows平臺的可視化集成開發(fā)環(huán)境。它使用方便靈活,除了可以處理VC++應(yīng)用程序,還可以處理C語言程序,與標(biāo)準(zhǔn)的ANSIC語言兼容。安裝完VisualC++6.0后,單擊任務(wù)欄上的【開始】|【程序】|【MicrosoftVisualC++6.0】命令,啟動“MicrosoftVisualC++6.0”,進(jìn)入VisualC++6.0主窗口,如圖1.2所示。1.6VC++6.0集成環(huán)境的使用1.6.1VisualC++6.0簡介圖1.2VisualC++6.0主窗口
1.新建一個(gè)C語言源程序(1)啟動VisualC++6.0,進(jìn)入如圖1.2所示的VisualC++6.0主窗口。(2)選擇【文件】|【新建】命令,彈出“新建”對話框,并切換到“文件”選項(xiàng)卡,在列表中選擇應(yīng)用程序類型“C++SourceFile”,如圖1.3所示。
1.6.2使用VisualC++6.0開發(fā)C語言源程序圖1.3“新建文件”對話框1.6.2使用VisualC++6.0開發(fā)C語言源程序在“新建”對話框的【文件名】文本框中輸入要建立的C源文件的名字(如example1.c),單擊【位置】文本框右側(cè)的瀏覽按鈕,選擇存放源程序的位置(如D:\),然后單擊【確定】按鈕,進(jìn)入源程序編輯器,如圖1.4所示。1.6.2使用VisualC++6.0開發(fā)C語言源程序(4)在源程序編輯器中輸入、編輯源程序代碼并保存。(5)編譯。在菜單欄中選擇【組建】|【編譯】命令(或按快捷鍵Ctrl+F7),彈出如圖1.5所示的對話框。對話框提示“是否需要創(chuàng)建工作區(qū)?”,單擊【是】命令按鈕。1.6.2使用VisualC++6.0開發(fā)C語言源程序圖1.5“詢問是否創(chuàng)建工作區(qū)”對話框如果源程序在編譯中發(fā)現(xiàn)錯(cuò)誤,錯(cuò)誤信息會在輸出窗口中顯示,用戶可根據(jù)錯(cuò)誤提示信息對源程序做出修改再重新編譯;編譯成功時(shí)提示信息為:xxx.obj-0error(s),0warning(s),如圖1.6所示。
1.6.2使用VisualC++6.0開發(fā)C語言源程序
(6)連接。在菜單欄中選擇【組建】|【組建】命令(或按快捷鍵F7),連接生成相應(yīng)的可執(zhí)行文件,如圖1.7所示。連接成功的提示信息為:xxx.exe-0error(s),0warning(s)。1.6.2使用VisualC++6.0開發(fā)C語言源程序(7)運(yùn)行。在菜單欄中選擇【組建】|【執(zhí)行】命令(或按快捷鍵Ctrl+F5),或者在工具欄上單擊運(yùn)行按鈕來運(yùn)行相應(yīng)的程序,如圖1.8所示。1.6.2使用VisualC++6.0開發(fā)C語言源程序根據(jù)提示輸入程序所需數(shù)據(jù),即可得到程序的運(yùn)行結(jié)果,如圖所示。然后按任意鍵返回到VisualC++6.0開發(fā)環(huán)境。1.6.2使用VisualC++6.0開發(fā)C語言源程序
注意:當(dāng)一個(gè)C語言程序運(yùn)行結(jié)束后,應(yīng)單擊【文件】|【關(guān)閉工作區(qū)】命令,關(guān)閉程序的工作區(qū),然后開始新的C程序的編輯。因?yàn)橄到y(tǒng)會給每個(gè)C程序分配工作區(qū),工作區(qū)中包含了當(dāng)前C程序所需要的全部信息。所以當(dāng)開發(fā)新的C程序時(shí),必須關(guān)閉上一個(gè)C程序處理時(shí)的工作區(qū)。2.建立和運(yùn)行多個(gè)C語言程序
在VisualC++6.0中,要建立和運(yùn)行多個(gè)相聯(lián)系的C語言源程序,必須首先建立一個(gè)項(xiàng)目或工程,它是由應(yīng)用程序所需要的所有源文件組成的一個(gè)有機(jī)整體。具體操作步驟如下:(1)啟動VisualC++6.0,進(jìn)入VisualC++6.0主窗口。(2)選擇【文件】|【新建】命令,彈出“新建”對話框,并切換到“工程”選項(xiàng)卡,在列表中選擇“Win32ConsoleApplication”選項(xiàng),如圖1.10所示。
1.6.2使用VisualC++6.0開發(fā)C語言源程序1.6.2使用VisualC++6.0開發(fā)C語言源程序圖1.10“新建工程”對話框(3)在“新建”對話框的【工程名稱】文本框中輸入要建立的工程的名字(如example),單擊【位置】文本框右側(cè)的瀏覽按鈕,選擇存放工程的位置(如D:\example),然后單擊【確定】按鈕,進(jìn)入“Win32ConsoleApplication—步驟1共1步”對話框,如圖1.11所示。1.6.2使用VisualC++6.0開發(fā)C語言源程序(4)在“Win32ConsoleApplication—步驟1共1步”對話框中選擇第一個(gè)選項(xiàng)“一個(gè)空工程”,單擊【完成】按鈕,彈出“新建工程信息”對話框,如圖1.12所示。
1.6.2使用VisualC++6.0開發(fā)C語言源程序1.6.2使用VisualC++6.0開發(fā)C語言源程序(5)“新建工程信息”對話框中會顯示新建工程的基本信息,包括工程的目錄等。單擊【確定】按鈕,完成工程的創(chuàng)建,如圖1.13所示。隨之可為工程添加新的C語言源程序,步驟請參照方法1“新建C語言源程序”。1.7程序綜合實(shí)例
【例1.3】從鍵盤上輸入兩個(gè)數(shù),計(jì)算平均值并輸出。程序如下:#include<stdio.h>main(){doublea,b,c;doubleaverage(doublex,doubley); printf("請輸入兩個(gè)數(shù):");scanf("%lf,%lf",&a,&b); c=average(a,b); printf("平均值為:%lf\n",c); }doubleaverage(doublex,doubley){doublez;z=(x+y)/2.0; returnz; }程序運(yùn)行結(jié)果:請輸入兩個(gè)數(shù):92.7,78.5↙平均值為:85.600000學(xué)無止境第二章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式35第二章
數(shù)據(jù)類型、運(yùn)算符和表達(dá)式教學(xué)目標(biāo):了解C語言的數(shù)據(jù)類型理解常量和變量的概念熟悉C語言中各種運(yùn)算符和表達(dá)式的計(jì)算教學(xué)重點(diǎn)與難點(diǎn):熟悉C語言中各種運(yùn)算符和表達(dá)式的計(jì)算362.1數(shù)據(jù)類型數(shù)據(jù)以一種特定的形式存在,計(jì)算機(jī)把數(shù)據(jù)存放在內(nèi)存中,不同的數(shù)據(jù)占用不同的內(nèi)存單元。因此計(jì)算機(jī)要處理不同種類的數(shù)據(jù),即數(shù)據(jù)類型。C語言中的數(shù)據(jù)類型如圖2.1所示。圖2.1C語言的數(shù)據(jù)類型
372.1數(shù)據(jù)類型1.基本類型基本類型是C語言中的基礎(chǔ)類型,其中包括整型、實(shí)型和字符型。2.構(gòu)造類型構(gòu)造類型是由多種類型組合而成的新類型,其中每一組成部分稱為構(gòu)造類型的成員。構(gòu)造類型包括數(shù)組類型、結(jié)構(gòu)體類型、共用體類型和枚舉類型。3.指針類型指針類型是一種特殊的數(shù)據(jù)類型,指針的值表示某個(gè)內(nèi)存的地址。
382.1數(shù)據(jù)類型4.空類型
空類型的關(guān)鍵字是void,可將函數(shù)返回值的類型聲明為空,代表該函數(shù)沒有返回值。
不同的數(shù)據(jù)類型有各自的類型關(guān)鍵字、長度和取值范圍,如表2.1所示。392.1數(shù)據(jù)類型表2.1數(shù)據(jù)類型描述表數(shù)據(jù)類型類型關(guān)鍵字字節(jié)取值范圍整型int4-2147483648~2147483647無符號整型unsigned[int]40~4294967295有符號整型signedint4-2147483648~2147483647短整型short[int]2-32768~32767無符號短整型unsignedshort[int]20~65535有符號短整型signedshort[int]2-32768~32767長整型long[int]4-2147483648~2147483647無符號長整型unsignedlong[int]40~4294967295有符號長整型signedlong[int]4-2147483648~2147483647單精度型float41.2×10-38~3.4×1038雙精度型double82.3×10-308~1.7×10308字符型char1-128~127無符號字符型unsignedchar10~255有符號字符型signedchar1-128~127402.2常量常量是指在程序運(yùn)行過程中其值不能改變的量。反之,在程序運(yùn)行過程中其值可以變化的量稱為變量。根據(jù)類型的不同,常量可分為整型常量、實(shí)型常量、字符型常量和符號常量。除符號常量外,定義常量其語法的一般格式為:const數(shù)據(jù)類型常量名=常量值;例如:constfloatPAI=3.1415926;注意:常量必須在定義的同時(shí)就完成賦值。412.1.1整型常量整型常量就是整型常數(shù),有三種表示形式:(1)十進(jìn)制整數(shù):沒有前綴,由數(shù)字0~9組成,如123,-200。(2)八進(jìn)制整數(shù):以數(shù)字0作為前綴,其余各位由數(shù)字0~7組成,如0234、0100、016。(3)十六進(jìn)制整數(shù):以0X(或0x)為前綴,其余各位由數(shù)字0~9、字母a~f或A~F組成,如0x789、0X135、0x1af。2.2.1整型常量422.2.2實(shí)型常量2.2.2實(shí)型常量實(shí)型常量也稱為浮點(diǎn)型常量,由整數(shù)部分和小數(shù)部分組成,實(shí)型常量有兩種表現(xiàn)形式。(1)小數(shù)形式:由符號、整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成。小數(shù)點(diǎn)必須有,并且不能省略。如1.2、0.56、-98.75。(2)指數(shù)形式:實(shí)數(shù)有時(shí)較大或較小,此時(shí)可以采用指數(shù)形式來表示。在C語言中,用字母E或e來表示以10為底的冪數(shù)。如1.23×102可記為1.23E2,57.896×10-3可記為57.896E-3。432.2.3字符型常量2.2.3字符型常量
字符型常量分為兩種,一種是字符常量,另一種是字符串常量。1.字符常量字符常量通常是用單引號括起來的單個(gè)字符。字符常量的值就是該字符對應(yīng)的ASCII碼值,可以和數(shù)值型數(shù)據(jù)一起參加算術(shù)運(yùn)算。例如,小寫字母'a'對應(yīng)的ASCII碼是97,可以進(jìn)行簡單的計(jì)算。除了簡單字符常量,還有一種特殊的字符常量,稱為轉(zhuǎn)義字符。轉(zhuǎn)義字符以反斜杠“\”開頭,后面跟一個(gè)或幾個(gè)字符,表示不能從鍵盤輸入的功能字符或有特殊含義的字符,如‘\n’表示換行,‘\r’表示回車。常用的轉(zhuǎn)義字符如表2.2所示。442.2.3字符型常量轉(zhuǎn)義字符含義\n換行,將當(dāng)前光標(biāo)移到下一行行首\t橫向跳到下一個(gè)制表位置,一個(gè)制表區(qū)占8列\(zhòng)a報(bào)警\r回車\\反斜杠\'單引號\''雙引號\?問號\b退格\f換頁\ddd1~3位八進(jìn)制數(shù)所代表的字符\xhh1~2位十六進(jìn)制數(shù)所代表的字符表2.2轉(zhuǎn)義字符及其含義452.2.3字符型常量2.字符串常量字符串常量是用雙引號括起來的若干字符序列。例如,‘’hello‘’、‘’IamaChinese.‘’等如果字符串中一個(gè)字符也沒有,稱為空串,此時(shí)字符串的長度為0,記為''''。C語言規(guī)定在存儲字符串常量時(shí),系統(tǒng)會自動在字符串的末尾加一個(gè)‘\0’作為字符串的結(jié)束標(biāo)志。例如,字符串''IamaChinese.''一共有15個(gè)字符,其中空格和“.”也各算一個(gè)字符,因此該字符串在內(nèi)存中占16個(gè)字節(jié)的存儲空間,其存儲情況如圖2.2所示。I
am
a
Chinese.\0圖2.2字符串在內(nèi)存中的存儲462.2.3字符型常量3.字符常量和字符串常量的區(qū)別
(1)定界符不同:字符常量使用單引號定界,字符串常量使用雙引號定界。
(2)長度不同:字符常量的長度為1,只占一個(gè)字節(jié)的存儲空間;字符串常量的長度可以為0,也可以是某個(gè)具體的整數(shù)值。
(3)存儲方式不同:字符常量中存儲的是該字符的ASCII碼值;而在字符串常量中不僅存儲有效字符,還要存儲字符串的結(jié)束標(biāo)志‘\0’。
(4)參加的運(yùn)算不同:字符串常量不能參加數(shù)值運(yùn)算;而字符常量則可以參與混合運(yùn)算。472.2.3字符型常量【例2.1】轉(zhuǎn)義字符的應(yīng)用。程序如下:#include<stdio.h>main(){printf("a□b\tcd□e\n");/*□代表空格*/printf("fg\th□k\rpx\by□z\n");}程序運(yùn)行結(jié)果:a□bcd□epy□zh□k482.2.4符號常量2.2.4符號常量符號常量是使用一個(gè)標(biāo)識符來代替常量,一般用大寫字母表示,與小寫字母表示的變量名進(jìn)行區(qū)分。符號常量的值在其作用域內(nèi)不能改變,也不能被重新賦值。符號常量在使用前必須先定義,其語法的一般格式為:#define<符號常量名><常量值>例如:#definePI3.1415926492.2.4符號常量【例2.2】符號常量的使用。計(jì)算半徑為5的圓的周長。程序如下:#include<stdio.h>#definePI3.1415926/*定義PI符號常量*/main(){floatr,l;r=5.0;l=2*PI*r;/*符號常量PI代替常量3.1415926*/printf("圓的周長:%f\n",l);}程序運(yùn)行結(jié)果:圓的周長:31.415926502.3變量2.3.1變量的聲明變量是指在程序運(yùn)行過程中其值可以改變的量。每個(gè)變量都有自己的名稱,并且在內(nèi)存中占用一定的存儲空間。聲明變量,其語法的一般格式為:數(shù)據(jù)類型變量名1,變量名2,變量名3,……;例如:inta,b,c;/*定義整型變量a、b、c*/doubles,t;/*定義雙精度型變量s、t*/charch;/*定義字符型變量ch*/512.3.2變量的初始化
定義變量的同時(shí),對變量賦初值即稱為變量初始化,其語法的一般格式為:數(shù)據(jù)類型變量名1=初值1,變量名2=初值2,……;例如:inta=1,b=2,c=3;注意:(1)變量的初始化,也可先聲明一個(gè)變量,然后賦初值。例如:inta;a=10;(2)在定義中不能連續(xù)賦值,如inta=b=c=5;是錯(cuò)誤的。(3)允許對部分變量賦初值,如intx,y=7;是合法的。522.3.2變量的初始化
【例2.3】變量的初始化。程序如下:#include<stdio.h>main(){charch1='a',ch2='b';intt1=3,t2;t2=ch1+t1;printf("ch1=%c,ch2=%c,t2=%c\n",ch1,ch2,t2);/*以字符形式輸出*/printf("ch1=%d,ch2=%d,t2=%d\n",ch1,ch2,t2);/*以數(shù)值形式輸出*/}程序運(yùn)行結(jié)果:ch1=a,ch2=b,t2=dch1=97,ch2=98,t2=100532.4運(yùn)算符和表達(dá)式C語言中的運(yùn)算符按照其作用分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、條件運(yùn)算符、逗號運(yùn)算符和位運(yùn)算符;按照操作數(shù)的個(gè)數(shù)可分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。表達(dá)式是將運(yùn)算符和操作數(shù)結(jié)合在一起的符合C語言語法規(guī)則的式子。542.4.1運(yùn)算符的優(yōu)先級及結(jié)合性2.4.1運(yùn)算符的優(yōu)先級及結(jié)合性在表達(dá)式中,按照一定的運(yùn)算規(guī)則計(jì)算表達(dá)式的值。運(yùn)算規(guī)則與表達(dá)式中運(yùn)算符的優(yōu)先級及結(jié)合性有關(guān)。運(yùn)算符的優(yōu)先級由高到低排列,1級最高,15級最低,同一方格內(nèi)的運(yùn)算符優(yōu)先級相同,如表2.3所示。計(jì)算表達(dá)式時(shí),根據(jù)運(yùn)算符的優(yōu)先級,優(yōu)先級高的先進(jìn)行運(yùn)算。結(jié)合性指同一表達(dá)式中,運(yùn)算符優(yōu)先級相同時(shí)所遵循的運(yùn)算順序。結(jié)合性分為左結(jié)合和右結(jié)合,左結(jié)合即從左向右運(yùn)算;反之,右結(jié)合即從右向左運(yùn)算。552.4.1運(yùn)算符的優(yōu)先級及結(jié)合性優(yōu)先級運(yùn)算符功能結(jié)合性操作數(shù)個(gè)數(shù)1(最高)()[]→.括號下標(biāo)運(yùn)算符指向結(jié)構(gòu)體成員運(yùn)算符結(jié)構(gòu)體成員運(yùn)算符自左向右
2!~++,---*&sizeof邏輯非運(yùn)算符按位取反運(yùn)算符自增、自減運(yùn)算符負(fù)號運(yùn)算符指針運(yùn)算符地址運(yùn)算符字節(jié)長度運(yùn)算符自右向左單目運(yùn)算符3*,/,%乘、除、求余運(yùn)算符自左向右雙目運(yùn)算符4+,-加法、減法運(yùn)算符自左向右雙目運(yùn)算符5<<,>>左移位、右移位運(yùn)算符自左向右雙目運(yùn)算符6>,>=,<,<=關(guān)系運(yùn)算符自左向右雙目運(yùn)算符7==,!=等于、不等于運(yùn)算符自左向右雙目運(yùn)算符8&按位與運(yùn)算符自左向右雙目運(yùn)算符9^按位異或運(yùn)算符自左向右雙目運(yùn)算符10|按位或運(yùn)算符自左向右雙目運(yùn)算符11&&邏輯與運(yùn)算符自左向右雙目運(yùn)算符12||邏輯或運(yùn)算符自左向右雙目運(yùn)算符13?:條件運(yùn)算符自右向左三目運(yùn)算符14=,+=,-=,*=,/=,&=,>>=,<<=,^=,!=賦值運(yùn)算符自右向左雙目運(yùn)算符15(最低),逗號運(yùn)算符自左向右
562.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.算術(shù)運(yùn)算符算術(shù)運(yùn)算符包括兩個(gè)單目運(yùn)算符,即正和負(fù);五個(gè)雙目運(yùn)算符,加法(+)、減法(-)、乘法(*)、除法(/)和求余(%),如表2.4所示。運(yùn)算符功能操作數(shù)個(gè)數(shù)+取正單目運(yùn)算符-取負(fù)單目運(yùn)算符*乘法雙目運(yùn)算符/除法雙目運(yùn)算符%求余(取模)雙目運(yùn)算符+加法雙目運(yùn)算符-減法雙目運(yùn)算符表2.4算術(shù)運(yùn)算符572.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.算術(shù)表達(dá)式用算術(shù)運(yùn)算符和操作數(shù)結(jié)合在一起的符合C語言語法規(guī)則的式子,稱為算術(shù)表達(dá)式。例如,5*4-2、a+b+c、x*y-6等。算術(shù)表達(dá)式計(jì)算時(shí)遵循以下規(guī)則:(1) 按照運(yùn)算符優(yōu)先級高低次序計(jì)算,*、/、%的優(yōu)先級高于+、-。例如,先乘除后加減。(2) 當(dāng)算術(shù)運(yùn)算符優(yōu)先級相同時(shí),結(jié)合方向?yàn)椤皬淖笾劣摇?,即按照從左到右的順序依次進(jìn)行運(yùn)算。582.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式3.自增、自減運(yùn)算符單目運(yùn)算符,具有右結(jié)合性。(1) 前置運(yùn)算:++變量、--變量先增減,后運(yùn)算。即先將變量自身加1(或減1),再參加其他運(yùn)算。(2) 后置運(yùn)算:變量++、變量--先運(yùn)算,后增減。即先參加其他運(yùn)算,再將變量自身加1(或減1)。例如:如果i=1,則x1=++i;/*先i自身加1變?yōu)?,再將2賦值給x1,x1的值為2*/x2=i++;/*先將i的值賦值給x2,x2變?yōu)?,然后i自身加1變?yōu)?*/592.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式【例2.4】自增自減運(yùn)算。程序如下:#include<stdio.h>main(){inti=100;printf("%d\n",i);printf("%d\n",++i);printf("%d\n",i--);printf("%d\n",i);}程序運(yùn)行結(jié)果:100101101100注意:(1)自增自減運(yùn)算只能用于變量,不能用于常量或表達(dá)式。(2)盡量避免連續(xù)使用同一變量進(jìn)行自增或自減運(yùn)算。(3)適當(dāng)使用圓括號,以免產(chǎn)生二義性。如:i+++j形式可理解為(i++)+j,亦可理解為i+(++j),因此可通過加圓括號,防止歧義。2.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式612.4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符C語言中關(guān)系運(yùn)算符均為雙目運(yùn)算符,包含6種:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)和!=(不等于)。關(guān)系運(yùn)算符優(yōu)先級由高到低依次是:(>、<、>=、<=、)→(==、!=)。其中,前4個(gè)優(yōu)先級相同,后2個(gè)相同,前4個(gè)優(yōu)先級高于后2個(gè)。另外,所有關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符。622.4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.關(guān)系表達(dá)式在表達(dá)式中使用關(guān)系運(yùn)算符,稱為關(guān)系表達(dá)式。例如:a>b、a+b<=c關(guān)系表達(dá)式的結(jié)果是一個(gè)邏輯值,即真或假。在C語言中用整數(shù)“1”表示邏輯真,“0”表示邏輯假。例如:1<2為真,結(jié)果為1;7>=8為假,結(jié)果為0。632.4.4邏輯運(yùn)算符和邏輯表達(dá)式
1.邏輯運(yùn)算符
邏輯運(yùn)算符有3個(gè),分別是:
&&:邏輯與,雙目運(yùn)算符,并且的含義。||:邏輯或,雙目運(yùn)算符,或者的含義。!:邏輯非,單目運(yùn)算符,否定的含義。
邏輯運(yùn)算符的優(yōu)先級:邏輯非“!”最高,其次是邏輯與“&&”,邏輯或“||”最低。
與前面介紹的運(yùn)算符優(yōu)先級由高到低依次是!(邏輯非)>算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>&&(邏輯與)>||(邏輯或)。642.4.4邏輯運(yùn)算符和邏輯表達(dá)式&&(邏輯與):兩個(gè)操作數(shù)都為真時(shí),結(jié)果為真;只要有一個(gè)為假,結(jié)果為假。(2)||(邏輯或):兩個(gè)操作數(shù)都為假時(shí),結(jié)果為假;只要有一個(gè)為真,結(jié)果為真。(3)!(邏輯非):操作數(shù)為真時(shí),結(jié)果為假;反之,操作數(shù)為假時(shí),結(jié)果為真。652.4.4邏輯運(yùn)算符和邏輯表達(dá)式2.邏輯表達(dá)式用邏輯運(yùn)算符將一個(gè)或多個(gè)操作數(shù)連接起來,符合C語言語法規(guī)則的式子,稱為邏輯表達(dá)式。邏輯表達(dá)式的結(jié)果也是一個(gè)邏輯值,即真或假。思考:為了判斷字符變量ch的值是字母,表達(dá)式應(yīng)該如何書寫?關(guān)于邏輯表達(dá)式進(jìn)行運(yùn)算時(shí)的幾點(diǎn)說明:(1) 對于邏輯與運(yùn)算,如果第一個(gè)操作數(shù)為“假”,其他操作數(shù)不用判斷,結(jié)果為假。(2)對于邏輯或運(yùn)算,如果第一個(gè)操作數(shù)為“真”,其他操作數(shù)不用判斷,結(jié)果為真。例如,假設(shè)inta=1,b=2,c=3,d=4;計(jì)算表達(dá)式“(a>b)&&(c<d)”時(shí),因?yàn)椤癮>b”的值為假,對于邏輯與“&&”運(yùn)算,整個(gè)表達(dá)式的結(jié)果為假,第二個(gè)操作數(shù)“c<d”根本不必進(jìn)行計(jì)算。662.4.5賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算賦值運(yùn)算符,即“=”,其功能是將賦值號右邊表達(dá)式的值賦值給左邊的變量。其語法的一般格式為:變量=賦值表達(dá)式;在C語言中,賦值運(yùn)算符“=”前面加上一個(gè)雙目運(yùn)算符(算術(shù)運(yùn)算符或位運(yùn)算符)可構(gòu)成復(fù)合賦值運(yùn)算符。如表2.6所示。
復(fù)合賦值運(yùn)算符語法的一般格式為:變量雙目運(yùn)算符=賦值表達(dá)式;等價(jià)于:變量=變量雙目運(yùn)算符賦值表達(dá)式;672.4.5賦值運(yùn)算符和賦值表達(dá)式復(fù)合賦值運(yùn)算符表達(dá)式舉例等價(jià)于+=x+=yx=x+y-=x-=yx=x-y*=x*=yx=x*y/=x/=yx=x/y%=x%=yx=x%y表2.6復(fù)合賦值運(yùn)算符682.4.5賦值運(yùn)算符和賦值表達(dá)式2.賦值表達(dá)式用賦值運(yùn)算符或復(fù)合賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子,稱為賦值表達(dá)式。其語法的一般格式為:變量
賦值運(yùn)算符
表達(dá)式關(guān)于賦值表達(dá)式的幾點(diǎn)說明:(1) 賦值運(yùn)算符左邊的操作數(shù)只能是變量,不能是常量或表達(dá)式。(2) 當(dāng)表達(dá)式值的類型與變量類型不一致時(shí),系統(tǒng)自動將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型后再賦值給變量。(3) 賦值運(yùn)算符的優(yōu)先級在C語言的所有運(yùn)算符中僅高于逗號運(yùn)算符,結(jié)合性為自右至左。(4) 對于復(fù)合賦值運(yùn)算符時(shí),右邊的表達(dá)式要作為一個(gè)整體與左邊的變量進(jìn)行運(yùn)算。2.4.6條件運(yùn)算符和條件表達(dá)式69條件運(yùn)算符“?:”是C語言中唯一的一個(gè)三目運(yùn)算符。由條件運(yùn)算符和表達(dá)式組成的式子稱為條件表達(dá)式。其語法的一般格式為:表達(dá)式1?表達(dá)式2:表達(dá)式3運(yùn)算規(guī)則:計(jì)算“表達(dá)式1”的值,如果“表達(dá)式1”的值為真(非0),則運(yùn)算結(jié)果等于“表達(dá)式2”的值;如果“表達(dá)式1”的值為假(0),則運(yùn)算結(jié)果等于“表達(dá)式3”的值。注意:表達(dá)式1、表達(dá)式2和表達(dá)式3的類型可以各不相同,但“表達(dá)式1”通常為關(guān)系表達(dá)式或邏輯表達(dá)式。【例2.5】假設(shè)a=1,b=2.0,則:a==1?a:-a/*結(jié)果為1*/(b<0)?(b=-2):(b=5) /*結(jié)果為5*/(a>1)?((b==1.0)?3:1):((b>=1)?-1:1)/*結(jié)果為-1*/2.4.7
逗號運(yùn)算符和逗號表達(dá)式70逗號運(yùn)算符“,”可以將多個(gè)表達(dá)式連接起來構(gòu)成逗號表達(dá)式。其語法的一般格式為:表達(dá)式1,表達(dá)式2,……表達(dá)式n運(yùn)算規(guī)則:從左到右依次計(jì)算各表達(dá)式的值,整個(gè)逗號表達(dá)式的值為最后一個(gè)表達(dá)式n的值。例如:假設(shè)a是int型變量,其初值為5,則逗號表達(dá)式“a+5,5*4,a+6”的值為11。如果改寫成(a=a+5,5*4),a+6),則a的值為多少呢?2.4.8
位運(yùn)算符71C語言提供了6種位運(yùn)算符,如表2.7所示。對于位運(yùn)算,操作數(shù)需要先轉(zhuǎn)換為二進(jìn)制,然后再進(jìn)行按位運(yùn)算。位運(yùn)算符名稱舉例含義&按位與a&ba和b操作數(shù)對應(yīng)的二進(jìn)制位做與運(yùn)算,兩者對應(yīng)位均為1時(shí)才為1,否則為0|按位或a|ba和b操作數(shù)對應(yīng)的二進(jìn)制位做或運(yùn)算,兩者對應(yīng)位均為0時(shí)才為0,否則為1^按位異或a^ba和b操作數(shù)對應(yīng)的二進(jìn)制位做異或運(yùn)算,兩者對應(yīng)位相同時(shí)為0,不同時(shí)為1~按位取反~aa操作數(shù)對應(yīng)的二進(jìn)制位做按位取反運(yùn)算,1變成0,0變成1<<
按位左移a<<b將a操作數(shù)對應(yīng)的二進(jìn)制位全部左移b位,高位丟棄,低位補(bǔ)0>>
按位右移a>>b將a操作數(shù)對應(yīng)的二進(jìn)制位全部右移b位,高位補(bǔ)0,低位丟棄表2.7位運(yùn)算符2.5數(shù)據(jù)類型轉(zhuǎn)換
72不同數(shù)據(jù)類型之間可以進(jìn)行混合運(yùn)算,并且數(shù)據(jù)類型之間是可以相互轉(zhuǎn)換的,轉(zhuǎn)換的方法有兩種,一種是自動轉(zhuǎn)換,另一種是強(qiáng)制轉(zhuǎn)換。1.自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換由系統(tǒng)自動完成,轉(zhuǎn)換規(guī)則如圖2.3所示。732.5數(shù)據(jù)類型轉(zhuǎn)換
自動類型轉(zhuǎn)換規(guī)則如下:(1) 若參加運(yùn)算的操作數(shù)類型不同,則先轉(zhuǎn)換成同一類型,然后再進(jìn)行計(jì)算。(2) 轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進(jìn)行,以確保精度不降低。(3) char型操作數(shù)和short型操作數(shù)進(jìn)行運(yùn)算時(shí),必須先轉(zhuǎn)換成int型再計(jì)算。(4) 所有的浮點(diǎn)運(yùn)算都是以double進(jìn)行,因此即使是float型也要先轉(zhuǎn)換成double型再計(jì)算。(5) 在賦值運(yùn)算中,如果賦值號兩邊運(yùn)算量的數(shù)據(jù)類型不同,則將賦值號右邊運(yùn)算量的類型轉(zhuǎn)換為左邊運(yùn)算量的類型。如果右邊運(yùn)算量的數(shù)據(jù)類型長度比左邊的長,那么將會丟失一部分?jǐn)?shù)據(jù)。742.5數(shù)據(jù)類型轉(zhuǎn)換
【例2.9】自動類型轉(zhuǎn)換舉例。程序如下:#include<stdio.h>main(){floatx=2.1345;intsum,y=5;
sum=x+x*y;printf("sum=%d\n",sum);}程序運(yùn)行結(jié)果:sum=12752.5數(shù)據(jù)類型轉(zhuǎn)換
2.強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換是將一種類型強(qiáng)制轉(zhuǎn)換為另一種類型,其語法的一般格式為:(數(shù)據(jù)類型名)(表達(dá)式)例如:(int)a/*將a轉(zhuǎn)換成int型*/(double)(x+y)/*將x+y的和轉(zhuǎn)換成double型*/注意:(1) 數(shù)據(jù)類型名和表達(dá)式都必須加括號,如果表達(dá)式為一個(gè)變量,則不需要加括號。例如,(double)(x+y)不要寫成(double)x+y,兩者所表達(dá)的含義是不同的。(2) 無論是強(qiáng)制轉(zhuǎn)換或自動轉(zhuǎn)換,均是為了需要而做的臨時(shí)性轉(zhuǎn)換,并不改變原來變量和表達(dá)式的類型。學(xué)無止境第三章順序結(jié)構(gòu)程序設(shè)計(jì)第三章
順序結(jié)構(gòu)程序設(shè)計(jì)教學(xué)目標(biāo):了解程序控制的三種結(jié)構(gòu)掌握賦值語句的使用熟悉格式輸入輸出函數(shù)的用法教學(xué)重點(diǎn)與難點(diǎn):掌握格式輸入輸出函數(shù)的用法3.1程序控制的三種基本結(jié)構(gòu)
C語言是結(jié)構(gòu)化程序設(shè)計(jì)語言,主要有:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種。3.1.1結(jié)構(gòu)化算法1.程序程序是由軟件開發(fā)人員根據(jù)用戶需求設(shè)計(jì)的、用程序設(shè)計(jì)語言描述的指示計(jì)算機(jī)執(zhí)行操作的一組指令序列。程序一般包括兩個(gè)方面:數(shù)據(jù)結(jié)構(gòu)(對數(shù)據(jù)的描述)和算法(對操作的描述)。其中,算法是程序設(shè)計(jì)的核心部分。3.1.1結(jié)構(gòu)化算法2.算法為解決一個(gè)特定的問題而采取的方法和步驟稱為算法??梢园涯硞€(gè)相對復(fù)雜的活動分解成為若干個(gè)相對簡單的部分。3.算法的描述描述算法的方法有多種,常用的有自然語言、傳統(tǒng)流程圖、N-S結(jié)構(gòu)圖等。
(1)自然語言:人們?nèi)粘J褂玫恼Z言,通俗易懂,通常是指一種自然地隨文化演化的語言。
(2)傳統(tǒng)流程圖:傳統(tǒng)流程圖由一些圖形框和流程線組成,如圖3.1所示。圖3.1傳統(tǒng)流程圖符號3.1.1結(jié)構(gòu)化算法起止框:表示程序的開始或結(jié)束。輸入輸出框:表示輸入或輸出數(shù)據(jù)。判斷框:表示按照給定的條件進(jìn)行判斷,根據(jù)條件是否成立來決定后續(xù)操作。判斷框中寫出判斷條件,并引出兩條或多條流程線表示進(jìn)行不同的處理。處理框:表示基本處理操作。流程線:表示程序的執(zhí)行流向,用于連接各流程圖符號。3.1.1結(jié)構(gòu)化算法【例3.1】用傳統(tǒng)流程圖描述輸入的數(shù)據(jù)是否大于0。3.1.1結(jié)構(gòu)化算法(3)N-S結(jié)構(gòu)圖3.1.1結(jié)構(gòu)化算法1.順序結(jié)構(gòu)順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),按照語句出現(xiàn)的先后順序由上向下依次執(zhí)行。如圖3.5所示,先執(zhí)行語句塊A,再執(zhí)行語句塊B。
3.1.2程序的三種基本結(jié)構(gòu)2.選擇結(jié)構(gòu)選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),即根據(jù)給定的條件選擇執(zhí)行其中一個(gè)分支。選擇結(jié)構(gòu)有三種,單分支、雙分支和多分支結(jié)構(gòu),如圖3.6、圖3.7、圖3.8所示
3.1.2程序的三種基本結(jié)構(gòu)圖3.8多分支選擇結(jié)構(gòu)
3.1.2程序的三種基本結(jié)構(gòu)3.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是根據(jù)條件來決定循環(huán)體是否反復(fù)執(zhí)行。按照循環(huán)控制條件出現(xiàn)的位置,可分為當(dāng)型循環(huán)和直到型循環(huán)兩種循環(huán)結(jié)構(gòu)。
當(dāng)型循環(huán):首先判斷條件,當(dāng)條件表達(dá)式為真時(shí),反復(fù)執(zhí)行循環(huán)語句,直到條件為假時(shí)終止循環(huán),如圖3.9所示。
直到型循環(huán):先執(zhí)行循環(huán)語句,然后再判斷條件是否成立。如果條件表達(dá)式為真,則繼續(xù)執(zhí)行循環(huán)語句,直到條件為假時(shí),跳出循環(huán),如圖3.10所示。
3.1.2程序的三種基本結(jié)構(gòu)3.1.2程序的三種基本結(jié)構(gòu)3.2賦值語句順序結(jié)構(gòu)中常見的是賦值語句,由賦值表達(dá)式加分號構(gòu)成。其一般形式為:
變量=表達(dá)式;例如:a=8;/*將變量a賦值為8*/c=a+b;/*將表達(dá)式a+b的值賦給變量c*/注意:賦值語句左側(cè)只能是變量,右側(cè)的表達(dá)式可以是常量、變量、數(shù)組元素、函數(shù)或其他表達(dá)式。(2)賦值號“=”與關(guān)系運(yùn)算符“==”是有區(qū)別的,后者用于判斷運(yùn)算符左右兩邊是否相等。(3)賦值運(yùn)算符“=”右邊的表達(dá)式可以是其他表達(dá)式,從而構(gòu)成嵌套形式,即:變量=(變量=表達(dá)式);(4)賦值語句允許連續(xù)賦值,而在變量聲明中,不允許連續(xù)給多個(gè)變量賦初值。3.2賦值語句3.3格式輸入輸出函數(shù)
C語言本身并不提供輸入輸出語句,輸入輸出是由函數(shù)實(shí)現(xiàn)的。在C標(biāo)準(zhǔn)函數(shù)庫中常用的輸入輸出函數(shù)有:printf()、scanf()、putchar()和getchar()等。在使用C語言庫函數(shù)時(shí),要用“#include”命令將有關(guān)的“頭文件”包括到用戶源文件中,這些頭文件包含了程序中調(diào)用函數(shù)的有關(guān)信息。因此,在調(diào)用輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)包含以下命令:#include<stdio.h>或#include“stdio.h”常用的頭文件及功能說明如表3.1所示3.3格式輸入輸出函數(shù)頭文件功能說明stdio.h標(biāo)準(zhǔn)輸入輸出函數(shù)math.h數(shù)學(xué)函數(shù)ctype.h字符處理函數(shù)string.h字符串處理函數(shù)conio.h屏幕處理函數(shù)time.h日期與時(shí)間函數(shù)stdlib.h動態(tài)存儲分配函數(shù)格式化輸出函數(shù)printf()的功能是按照指定的格式向計(jì)算機(jī)的終端(一般是顯示器)輸出若干任意類型的數(shù)據(jù)。語法格式為:printf("格式控制字符串",輸出列表);例如:printf(“Howareyou?”); printf("%d",a);1.格式控制字符串格式控制字符串是由雙引號括起來的字符串,用于指定輸出的格式。它由格式轉(zhuǎn)換說明符、控制字符和普通字符組成。3.3.1格式輸出函數(shù)printf()
(1)格式轉(zhuǎn)換說明符
格式轉(zhuǎn)換說明符是以“%”開頭,在“%”后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度和小數(shù)位數(shù)等。常用的printf函數(shù)的格式說明符如表3.2所示。
3.3.1格式輸出函數(shù)printf()格式符功能說明%d,%i以帶符號的十進(jìn)制形式輸出整數(shù)%u以無符號的十進(jìn)制形式輸出整數(shù)%o以無符號的八進(jìn)制形式輸出整數(shù)%x,%X以無符號的十六進(jìn)制形式輸出整數(shù)%c輸出一個(gè)字符%s輸出字符串%f輸出小數(shù)形式的實(shí)數(shù),默認(rèn)為6位小數(shù)%e,%E輸出指數(shù)形式的實(shí)數(shù)另外,在格式轉(zhuǎn)換說明符中,還可在“%”符號與格式字符間插入附加格式說明符,如表3.3所示。3.3.1格式輸出函數(shù)printf()附加字符功能說明l用于長整型,可加在格式符d、o、x、u的前面m(代表一個(gè)正整數(shù))數(shù)據(jù)最小寬度,若數(shù)據(jù)實(shí)際寬度大于m,則按實(shí)際寬度輸出;若實(shí)際寬度小于m,則在前面補(bǔ)0或空格.n(代表一個(gè)正整數(shù))若為實(shí)數(shù),則表示輸出n位小數(shù);若為字符串,則表示從左截取的字符個(gè)數(shù)+輸出的數(shù)字前帶有正負(fù)號-輸出的數(shù)據(jù)左對齊,默認(rèn)為右對齊
(2)控制字符控制字符即轉(zhuǎn)義字符,用于控制鍵盤上的動作。以反斜杠“\”開頭,后面跟一個(gè)或多個(gè)字符,如回車換行符“\n”等
(3)普通字符普通字符是需要照原樣輸出的字符,一般用來描述輸出結(jié)果。其中包括雙引號內(nèi)的逗號,等號、空格、普通字母、漢字等。3.3.1格式輸出函數(shù)printf()2.輸出列表輸出列表中列出的是需要輸出的數(shù)據(jù)項(xiàng),各數(shù)據(jù)項(xiàng)之間以“,”分隔,可以是變量、常量或表達(dá)式。3.使用printf函數(shù)的幾點(diǎn)說明(1)輸出列表中的各個(gè)輸出項(xiàng)要求和格式轉(zhuǎn)換說明符在數(shù)量、順序和類型上保持一一對應(yīng)和匹配。(2)當(dāng)多個(gè)輸出項(xiàng)為表達(dá)式時(shí),一般先按從右到左的順序計(jì)算各表達(dá)式的值,然后再按從左到右的順序輸出結(jié)果。(3)格式轉(zhuǎn)換說明符與輸出列表中參數(shù)不一致時(shí)可能產(chǎn)生錯(cuò)誤。3.3.1格式輸出函數(shù)printf()【例3.3】printf()函數(shù)的簡單應(yīng)用。程序如下:#include<stdio.h>main(){inta=97,b=98;printf("%d,%d\n",a,b);/*以十進(jìn)制形式輸出a,b*/printf("%c,%c\n",a,b);/*以字符形式輸出a,b*/printf("a=%d,b=%d\n",a,b);}程序運(yùn)行結(jié)果:97,98a,ba=97,b=98
3.3.1格式輸出函數(shù)printf()【例3.4】使用printf()函數(shù)輸出數(shù)值型數(shù)據(jù)。程序如下:#include<stdio.h>main(){inta=10,b=256,c=1024;floate=1234.567;
printf("%d,%d,%d\n",a,b,c);printf("%6d,%6d,%6d\n",a,b,c);/*數(shù)據(jù)的最小寬度為6*/printf("%o,%o,%o\n",a,b,c);/*以八進(jìn)制形式輸出a,b*/printf("%f,%8.2f,%-8.2f\n",e,e,e);}程序運(yùn)行結(jié)果:10,256,1024ㄩㄩㄩㄩ10,ㄩㄩㄩ256,ㄩㄩ102412,400,20001234.567017,ㄩ1234.57,1234.573.3.1格式輸出函數(shù)printf()格式輸入函數(shù)scanf()的功能是按照指定的格式從鍵盤上輸入任意類型的數(shù)據(jù)。其語法的一般格式為:
scanf("格式控制字符串",地址列表);例如:scanf("%d,%d,%d",&a,&b,&c);
1.格式控制字符串格式控制字符串與printf函數(shù)中的“格式控制字符串”作用相同,也是由雙引號括起來,以“%”字符開始,以一個(gè)格式字符結(jié)束,中間可以插入附加說明字符。常用的scanf函數(shù)的格式說明符如表3.4所示。3.3.2格式輸入函數(shù)scanf()格式符功能說明%d,%i以帶符號的十進(jìn)制形式輸入整數(shù)%u以無符號的十進(jìn)制形式輸入整數(shù)%o以無符號的八進(jìn)制形式輸入整數(shù)%x,%X以無符號的十六進(jìn)制形式輸入整數(shù)%c輸入一個(gè)字符%s輸入字符串%f輸入小數(shù)形式的實(shí)數(shù)%e,%E輸入指數(shù)形式的實(shí)數(shù)3.3.2格式輸入函數(shù)scanf()同樣,還可在“%”符號與格式字符間插入附加格式說明符,如表3.5所示。3.3.2格式輸入函數(shù)scanf()附加字符功能說明L或l輸入長整型,可加在格式符d、o、x、u的前面;輸入double型,可加在格式符f或e的前面h輸入短整型,可加在格式符d、o、x、i的前面m表示輸入數(shù)據(jù)所占寬度(實(shí)型數(shù)據(jù)除外)*表示指定的輸入項(xiàng)在讀入后不賦值給相應(yīng)的變量2.地址列表地址列表中的地址是由地址運(yùn)算符“&”后跟變量名組成的,變量地址之間以逗號“,”分隔。用戶不必關(guān)心具體的地址是多少,直接使用即可。例如:scanf("%d,%d,%d",&a,&b,&c);3.使用scanf()函數(shù)時(shí)應(yīng)注意以下幾點(diǎn):(1)scanf函數(shù)地址列表中必須給出變量的地址,如果給出變量名則出錯(cuò)。例如:scanf("%d,%d",a,b);是非法的。應(yīng)改為:scanf("%d,%d",&a,&b);只有數(shù)組例外,具體見第六章數(shù)組。3.3.2格式輸入函數(shù)scanf()(2)對于實(shí)型數(shù)據(jù),使用scanf函數(shù)輸入時(shí)不能控制其精度。例如:scanf("%10.2f",&a);是非法的。
(3)如果“格式控制字符串”中有非格式字符,則輸入數(shù)據(jù)時(shí)也要在對應(yīng)的位置輸入該非格式字符。例如:scanf("%d,%d,%d",&a,&b,&c);其中使用了非格式字符“,”,因此輸入時(shí)應(yīng)為:1,2,3↙又如:scanf("a=%d,b=%d",&a,&b);輸入時(shí)應(yīng)為:a=8,b=9↙3.3.2格式輸入函數(shù)scanf()
(4)如果“格式控制字符串”中沒有非格式字符,則認(rèn)為輸入的字符均為有效字符,包括空格和轉(zhuǎn)義字符。例如:scanf("%c%c%c",&a,&b,&c);如果輸入“aㄩbㄩc↙”,則表示把字符‘a(chǎn)’賦給a,空格‘ㄩ’賦給b,字符‘b’賦給c。只有當(dāng)輸入為“abc”時(shí),才能將字符‘a(chǎn)’賦給a,‘b’‘賦給b,‘c’賦給c。(5)輸入多個(gè)數(shù)值型數(shù)據(jù)時(shí),若“格式控制字符串”中沒有非格式字符間隔,則可使用空格鍵、Tab鍵或Enter鍵間隔。C編譯系統(tǒng)在遇到空格鍵、Tab鍵、Enter鍵或非法數(shù)據(jù)(若使用“%d”對應(yīng)輸入“8C”時(shí),C為非法數(shù)據(jù))時(shí)則認(rèn)為該數(shù)據(jù)輸入結(jié)束。(6)若在格式控制符中出現(xiàn)“%*”,scanf函數(shù)讀入對應(yīng)的值后不賦給相應(yīng)的變量,即跳過該輸入值。3.3.2格式輸入函數(shù)scanf()3.4字符輸入輸出函數(shù)字符輸出函數(shù)putchar()的功能是向計(jì)算機(jī)的終端(一般是顯示器)輸出一個(gè)字符。其語法的一般格式為:putchar(c);其中,c可以是字符常量或字符變量。例如:putchar('A');/*輸出大寫字母A*/putchar(97);/*輸出小寫字母a,即ASCII碼為97對應(yīng)的字符*/【例3.6】putchar()函數(shù)的應(yīng)用。程序如下:#include<stdio.h>main(){charx,y,z;intt;x='A';y='B';z='C';t=97;
程序運(yùn)行結(jié)果:ABCaA3.4.1字符輸出函數(shù)putchar()
putchar(x);putchar(y);putchar(z);putchar('\n');putchar(t);putchar(t-32);}字符輸入函數(shù)getchar()的功能是從鍵盤上輸入一個(gè)字符。其語法的一般格式為:
getchar();例如:charch;ch=getchar();/*將輸入的字符賦值給字符變量*/getchar()函數(shù)也可與putchar()函數(shù)一起使用,又如:putchar(getchar());/*輸出從鍵盤上輸入的一個(gè)字符*/3.4.2字符輸入函數(shù)getchar()【例3.7】getchar()函數(shù)的應(yīng)用。程序如下:#include<stdio.h>main(){charch1,ch2;ch1=getchar();ch2=getchar();putchar(ch1);putchar(ch2);}
程序運(yùn)行結(jié)果:AB↙AB3.4.2字符輸入函數(shù)getchar()3.5程序綜合實(shí)例
【例3.8】從鍵盤上輸入某名學(xué)生三門課(語文、數(shù)學(xué)、外語)考試成績,計(jì)算出該學(xué)生總成績和平均成績(保留2位小數(shù))。程序如下:#include<stdio.h>main(){floata,b,c,sum,average;printf("請輸入該名學(xué)生語文、數(shù)學(xué)和外語成績:\n");scanf("%f,%f,%f",&a,&b,&c);sum=a+b+c;average=sum/3;printf("總成績:%5.2f,平均成績:%5.2f\n",sum,average);}
程序運(yùn)行結(jié)果:請輸入該名學(xué)生語文、數(shù)學(xué)和外語成績:85.5,97.5,88.5↙總成績:271.50,平均成績:90.503.5程序綜合實(shí)例
【例3.9】將大寫字母轉(zhuǎn)換成小寫字母,并輸出其對應(yīng)的ASCII碼。程序如下:#include<stdio.h>main(){charch1,ch2;printf("Pleaseinputthecapitalletter:\n");ch1=getchar();/*輸入大寫字母*/ch2=ch1+32;/*將大寫字母轉(zhuǎn)化為小寫字母*/printf("thecapitalletter:%c,thelowercaseletter:%c\n",ch1,ch2);printf("thecapitalletter'sASCII:%d,thelowercaseletter'sASCII:%d\n",ch1,ch2);}3.5程序綜合實(shí)例
【例3.10】從鍵盤上輸入三角形的三條邊長,計(jì)算三角形的面積。程序如下:#include<stdio.h>#include<math.h>main(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c); /*輸入三角形的三條邊長*/s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));/*計(jì)算三角形的面積*/printf("area=%f\n",area);}程序運(yùn)行結(jié)果:6.5,7.6,8.7↙area=23.939998學(xué)無止境第四章
選擇結(jié)構(gòu)程序設(shè)計(jì)教學(xué)目標(biāo):掌握if語句的用法掌握switch語句的用法學(xué)會使用選擇結(jié)構(gòu)程序設(shè)計(jì)教學(xué)重點(diǎn)與難點(diǎn):學(xué)會使用選擇結(jié)構(gòu)程序設(shè)計(jì)第四章選擇結(jié)構(gòu)程序設(shè)計(jì)117第四章選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),是一種常見的程序控制結(jié)構(gòu)。在日常生活中,如果天氣晴朗,我們就去郊游;或者如果考試不及格,那么要參加補(bǔ)考。即根據(jù)條件進(jìn)行判斷,然后依據(jù)判斷的結(jié)果進(jìn)行相應(yīng)的情況處理。在C語言中,選擇結(jié)構(gòu)分為兩類:(1)if選擇結(jié)構(gòu):根據(jù)條件進(jìn)行判斷,選擇執(zhí)行不同的分支語句。(2)switch選擇結(jié)構(gòu):計(jì)算表達(dá)式的值,然后進(jìn)行判斷,選擇執(zhí)行多分支其中一個(gè)分支。1184.1if語句4.1.1結(jié)構(gòu)化算法if語句分為三種形式,單分支、雙分支和多分支結(jié)構(gòu)。1.單分支選擇結(jié)構(gòu)單分支結(jié)構(gòu)是最簡單的選擇結(jié)構(gòu),其語法的一般格式為:if(表達(dá)式)語句;或者if(表達(dá)式){
語句塊;}執(zhí)行過程:if后面括號中的表達(dá)式是要判斷的條件,如果表達(dá)式的值為真,則執(zhí)行后面的語句或語句塊;如果表達(dá)式的值為假,則不會執(zhí)行后面的語句或語句塊。執(zhí)行流程如圖4.1所示。1194.1.1if語句的三種形式圖4.1單分支選擇結(jié)構(gòu)【例4.1】從鍵盤上輸入兩個(gè)整數(shù),比較它們的大小,并按照從小到大的順序輸出。
分析:將存放在兩個(gè)變量x和y中的數(shù)進(jìn)行交換,必須借助于第三個(gè)變量才能實(shí)現(xiàn)。1204.1.1if語句的三種形式關(guān)鍵代碼如下:If(x<y){t=x;x=y;y=t;}程序如下:#include<stdio.h>main(){intint1,int2,t;printf("請輸入兩個(gè)整數(shù):\n");scanf("%d,%d",&int1,&int2);if(int1>int2){
t=int1;int1=int2;/*兩個(gè)數(shù)交換需借助第三個(gè)變量t*/int2=t;}printf("%d,%d\n",int1,int2);}1214.1.1if語句的三種形式程序運(yùn)行結(jié)果:請輸入兩個(gè)整數(shù):99,78↙78,991224.1.1if語句的三種形式【例4.2】從鍵盤上輸入三個(gè)數(shù),并按照從小到大的順序輸出。分析:一共比較三次第一次比較:如果a>b,將a和b交換。第二次比較:如果a>c,將a和c交換,兩次比較后a為最小數(shù)。第三次比較:如果b>c,將b和c交換,得到較小數(shù)和最大數(shù)。程序如下:#include<stdio.h>main(){floata,b,c,t;printf("請輸入三個(gè)數(shù):\n");scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;/*a和b比較后交換*/b=t;123}if(a>c){t=a;a=c;/*a和c比較后交換*/c=t;}if(b>c){t=b;b=c;/*b和c比較后交換*/c=t;}printf("排序后結(jié)果為:%5.2f,%5.2f,%5.2f\n",a,b,c);}4.1.1if語句的三種形式程序運(yùn)行結(jié)果:請輸入三個(gè)數(shù):123.67,98.75,76.34↙排序后結(jié)果為:76.34,98.75,123.67思考:如果將例題中改為按照從大到小的順序輸出,程序如何變動?1244.1.1if語句的三種形式2.雙分支選擇結(jié)構(gòu)雙分支結(jié)構(gòu)語法的一般格式為:if(表達(dá)式){語句塊1;}else{語句塊2;}執(zhí)行過程:if后面括號中的表達(dá)式是要判斷的條件,如果表達(dá)式的值為真,則執(zhí)行語句塊1;如果表達(dá)式的值為假,則執(zhí)行語句塊2,執(zhí)行流程如圖4.2所示。圖4.2雙分支選擇結(jié)構(gòu)1254.1.1if語句的三種形式3.多分支選擇結(jié)構(gòu)多分支結(jié)構(gòu)用于多種條件判斷,其語法的一般格式為:if(表達(dá)式1){語句塊1;}elseif(表達(dá)式2){語句塊2;}elseif(表達(dá)式3){語句塊3;}
……elseif(表達(dá)式n){語句塊n;}else{語句塊n+1;}1264.1.1if語句的三種形式執(zhí)行過程:if后面括號中的表達(dá)式是要判斷的條件,首先計(jì)算表達(dá)式1的值,如果為真,則執(zhí)行語句塊1;否則(表達(dá)式1的值為假)計(jì)算表達(dá)式2的值,如果為真,則執(zhí)行語句塊2;否則(表達(dá)式2的值為假)計(jì)算表達(dá)式3的值,如果為真,則執(zhí)行語句塊3;以此類推……;如果表達(dá)式1、表達(dá)式2……表達(dá)式n的值都為假,則執(zhí)行語句塊n+1。執(zhí)行流程如圖4.3所示。1274.1.1if語句的三種形式圖4.3多分支選擇結(jié)構(gòu)1284.1.1if語句的三種形式【例4.4】從鍵盤上輸入學(xué)生期末考試成績,若成績?yōu)?0~100分輸出“優(yōu)秀”,80~89分輸出“良好”,70~79分輸出“中等”,60~69分輸出“及格”,0~59分輸出“不及格”。程序如下:#include<stdio.h>main(){floatscore;printf("請輸入學(xué)生期末考試成績(0—100):\n");scanf("%f",&score);if(score>=90&&score<=100)printf("優(yōu)秀!\n");elseif(score>=80&&score<=89)printf("良好!\n");elseif(score>=70&&score<=79)printf("中等!\n");elseif(score>=60&&score<=69)129printf("及格!\n");
elseprintf("不及格!\n");}程序運(yùn)行結(jié)果:請輸入學(xué)生期末考試成績(0—100):97↙優(yōu)秀!請輸入學(xué)生期末考試成績(0—100):75↙中等!請輸入學(xué)生期末考試成績
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)六年級口算題卡
- 小學(xué)六年級800道數(shù)學(xué)口算題
- 2025年沈陽貨運(yùn)從業(yè)資格試題及答案詳解
- 2025年太原貨車從業(yè)資格證答題技巧
- 監(jiān)控錄像管理協(xié)議書(2篇)
- 2024-2025學(xué)年高中地理課時(shí)分層作業(yè)13噪聲污染及其防治含解析湘教版選修6
- 2024-2025學(xué)年八年級數(shù)學(xué)上冊第十一章三角形11.2與三角形有關(guān)的角作業(yè)設(shè)計(jì)新版新人教版
- 人事行政助理年終工作總結(jié)
- 公司辦公室工作總結(jié)
- 人力資源部年度個(gè)人工作計(jì)劃
- 2025年上半年東莞望牛墩鎮(zhèn)事業(yè)單位招考(10人)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年度茶葉品牌加盟店加盟合同及售后服務(wù)協(xié)議
- 氧氣、乙炔工安全操作規(guī)程(3篇)
- 建筑廢棄混凝土處置和再生建材利用措施計(jì)劃
- 集裝箱知識培訓(xùn)課件
- 某縣城區(qū)地下綜合管廊建設(shè)工程項(xiàng)目可行性實(shí)施報(bào)告
- JJF(京) 92-2022 激光標(biāo)線儀校準(zhǔn)規(guī)范
- 普惠金融政策解讀
- 干部人事檔案專項(xiàng)審核認(rèn)定表
- 北京故宮作文600字
- 羊水栓塞的應(yīng)急預(yù)案演練腳本
評論
0/150
提交評論