![C語(yǔ)言課件完整版(課本全部?jī)?nèi)容)_第1頁(yè)](http://file4.renrendoc.com/view11/M01/25/26/wKhkGWX5AH6AAjBhAAHiJ0QdTvk151.jpg)
![C語(yǔ)言課件完整版(課本全部?jī)?nèi)容)_第2頁(yè)](http://file4.renrendoc.com/view11/M01/25/26/wKhkGWX5AH6AAjBhAAHiJ0QdTvk1512.jpg)
![C語(yǔ)言課件完整版(課本全部?jī)?nèi)容)_第3頁(yè)](http://file4.renrendoc.com/view11/M01/25/26/wKhkGWX5AH6AAjBhAAHiJ0QdTvk1513.jpg)
![C語(yǔ)言課件完整版(課本全部?jī)?nèi)容)_第4頁(yè)](http://file4.renrendoc.com/view11/M01/25/26/wKhkGWX5AH6AAjBhAAHiJ0QdTvk1514.jpg)
![C語(yǔ)言課件完整版(課本全部?jī)?nèi)容)_第5頁(yè)](http://file4.renrendoc.com/view11/M01/25/26/wKhkGWX5AH6AAjBhAAHiJ0QdTvk1515.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序設(shè)計(jì)根底(C)根底篇第1章程序設(shè)計(jì)及C概述第2章C語(yǔ)言根底第3章順序結(jié)構(gòu)第4章選擇結(jié)構(gòu)第5章循環(huán)結(jié)構(gòu)第6章編譯預(yù)處理提高篇第7章數(shù)組第8章指針第9章函數(shù)第10章結(jié)構(gòu)體與共用體第11章位運(yùn)算第12章數(shù)據(jù)文件主講教師:邵明Tel:1課程安排和要求2231.不遲到2.鈴不響3.協(xié)作學(xué)習(xí)約法三章3總體安排 學(xué)習(xí)目標(biāo) 學(xué)習(xí)方法 根本要求課程安排、要求總學(xué)時(shí):48上課/上機(jī)=32/16積極調(diào)整思維方式理解概念多做練習(xí)理解計(jì)算機(jī)解題的思想和過(guò)程學(xué)會(huì)使用C語(yǔ)言進(jìn)行簡(jiǎn)單程序設(shè)計(jì)逐步形成良好的程序設(shè)計(jì)風(fēng)格上課積極聽(tīng)講,記錄重點(diǎn)、難點(diǎn)按時(shí)、獨(dú)立完成作業(yè)上機(jī)實(shí)習(xí)充分準(zhǔn)備,實(shí)習(xí)后認(rèn)真總結(jié)4201228001李曉紅1-1.c1-2.c…8-1.c將文件夾壓縮=>郵箱(主題:學(xué)號(hào)+姓名)上機(jī)作業(yè)作業(yè)要求課后習(xí)題、題庫(kù)每章結(jié)束之后,按照指定作業(yè)格式上交紙質(zhì)作業(yè)各班班長(zhǎng)將作業(yè)按學(xué)號(hào)排列有序再提交作業(yè)格式從指定地址下載5
地址上機(jī)作業(yè)上交郵箱下載軟件資料地址郵箱密碼:jsj99996課程考核形式
期末(70%):筆試+上機(jī)
平時(shí)(30%):作業(yè)+出勤提示:程序設(shè)計(jì)語(yǔ)言是國(guó)家對(duì)計(jì)算機(jī)能力檢測(cè)的重要內(nèi)容78第1章
程序設(shè)計(jì)及C概述程序設(shè)計(jì)的根本概念算法結(jié)構(gòu)化程序設(shè)計(jì)方法C語(yǔ)言知識(shí)初步8程序設(shè)計(jì)的根本概念9910程序和程序設(shè)計(jì)語(yǔ)言#include“stdio.h”main(){floatr,s;r=3;s=3.14159*r*r;printf(“s=%f”,s);}求圓的面積源程序目標(biāo)程序0000111111111111110001111111101111101010000000011111111111010110001110編譯解釋r=?s=3.14159*r*r程序計(jì)算機(jī)能夠識(shí)別并可以執(zhí)行的指令序列,是用程序設(shè)計(jì)語(yǔ)言來(lái)描述10
機(jī)器語(yǔ)言計(jì)算機(jī)直接識(shí)別的語(yǔ)言,不需要翻譯匯編語(yǔ)言效率高可移植性差
高級(jí)語(yǔ)言采用數(shù)學(xué)語(yǔ)言、自然語(yǔ)言表達(dá),可讀性
好可移植性高C語(yǔ)言是一種具有低級(jí)語(yǔ)言特征的高級(jí)語(yǔ)言程序設(shè)計(jì)語(yǔ)言是計(jì)算機(jī)能夠理解和識(shí)別的語(yǔ)言語(yǔ)法程序設(shè)計(jì)語(yǔ)言的使用規(guī)那么1112分析問(wèn)題確定處理方案確定操作步驟編寫程序上機(jī)運(yùn)行程序整理結(jié)果程序設(shè)計(jì)利用計(jì)算機(jī)解決問(wèn)題的全過(guò)程,程序設(shè)計(jì)的一般步驟為:分析、理解問(wèn)題解決方案(大致的思路),建立數(shù)學(xué)模型求解步驟和流程(算法)〔文字、符號(hào)等的描述〕使用程序設(shè)計(jì)語(yǔ)言編寫源程序運(yùn)行調(diào)試程序整理輸出結(jié)果,寫出相關(guān)文檔1213例如求圓的面積和周長(zhǎng)的程序設(shè)計(jì)一般步驟:
①分析問(wèn)題求圓的面積和周長(zhǎng)需要知道圓的半徑r,根據(jù)圓的半徑求出圓的面積S和周長(zhǎng)L并輸出結(jié)果。②確定處理方案求圓的面積數(shù)學(xué)公式是:S=лr2求圓的周長(zhǎng)公式是:L=2лr③確定操作步驟〔算法〕
確定半徑的初值計(jì)算面積S
計(jì)算周長(zhǎng)L
輸出結(jié)果S,L
1314④根據(jù)算法編寫源程序〔編碼〕將上面求圓的面積和周長(zhǎng)算法編寫C源程序如下:⑤運(yùn)行調(diào)試程序⑥整理輸出結(jié)果,寫出相關(guān)文檔#definePI3.14159main(){
floatr=3,s,c;s=PI*r*r;c=2*PI*r;
printf(“s=%f,c=%f\n”,s,c);
}14算法151516
有窮性:必須在有限的步驟內(nèi)完成確定性:不會(huì)產(chǎn)生二義性可行性:算法中描述的操作在計(jì)算機(jī)上都是可
實(shí)現(xiàn)的輸入:有0個(gè)或多個(gè)輸入輸出:有1個(gè)或多個(gè)輸出算法是對(duì)具體問(wèn)題求解步驟的描述算法及算法的特性算法的特性16用自然語(yǔ)言表示算法用流程圖表示算法
用偽代碼表示算法用程序設(shè)計(jì)語(yǔ)言表示算法的描述工具【例】求兩個(gè)整數(shù)m與n的和步驟1:輸入整數(shù)n和m;步驟2:求和sum=m+n;步驟3:輸出兩數(shù)之和sum。傳統(tǒng)流程圖N-S流程圖傳統(tǒng)流程圖N-S流程圖17結(jié)構(gòu)化程序設(shè)計(jì)方法181819自頂向下、逐步求精程序結(jié)構(gòu)模塊化〔每個(gè)模塊只有一個(gè)入口和一個(gè)出口〕程序流程使用3種根本控制結(jié)構(gòu)描述模塊:每個(gè)子功能設(shè)計(jì)原那么1920順序結(jié)構(gòu)
N-S流程圖傳統(tǒng)流程圖選擇結(jié)構(gòu)
N-S流程圖傳統(tǒng)流程圖循環(huán)結(jié)構(gòu)
N-S流程圖傳統(tǒng)流程圖根本控制結(jié)構(gòu)20C語(yǔ)言的初步知識(shí)212122C語(yǔ)言的起源與開展起源ANSI標(biāo)準(zhǔn)ALGOL60CPLBCPLB語(yǔ)言C語(yǔ)言(1960)(1963)(1967)(1970)(1972)流行C語(yǔ)言編譯系統(tǒng)MicrosoftC或稱MSCBorlandCTurboCQuickCVisualC++〔簡(jiǎn)稱:VC〕2223語(yǔ)言簡(jiǎn)潔(32個(gè)關(guān)鍵字,9種控制語(yǔ)句)運(yùn)算符豐富〔34種〕,能直接訪問(wèn)物理地址數(shù)據(jù)類型豐富,能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)生成的目標(biāo)代碼質(zhì)量高,可移植性好有較強(qiáng)的預(yù)編譯處理能力即具備高級(jí)語(yǔ)言的優(yōu)點(diǎn)又有低級(jí)語(yǔ)言的特點(diǎn)語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度較大C語(yǔ)言的特點(diǎn)2324一個(gè)C程序?qū)?yīng)一個(gè)文件(.c)C程序的根本單位是函數(shù),包括:一個(gè)主函數(shù)main()〔必需〕假設(shè)干個(gè)用戶定義的函數(shù)〔可無(wú)〕每個(gè)函數(shù)的結(jié)構(gòu)如下:函數(shù)返回值函數(shù)名(函數(shù)參數(shù))
{局部變量定義;執(zhí)行語(yǔ)句;
}C語(yǔ)言程序的構(gòu)成和書寫標(biāo)準(zhǔn)C程序構(gòu)成2425main()的作用每個(gè)程序至少有一個(gè)主函數(shù)main()main()函數(shù)的位置隨意
C程序從main()函數(shù)開始執(zhí)行并終止于main()函數(shù)25采用階梯式書寫格式
不同層次的語(yǔ)句,從不同的起始位置開始,這樣可以使程序結(jié)構(gòu)清晰程序習(xí)慣使用英文小寫字母書寫
大寫字母習(xí)慣上常作為常量或另有其它用途一般每一條語(yǔ)句占用一行
允許1行內(nèi)寫幾條語(yǔ)句,或1條語(yǔ)句分寫在幾行
26a=1;b=2;a=1;b=2;C程序書寫規(guī)那么2627使用注釋,可以單占1行,也可以跟在語(yǔ)句的后面/*注釋文本*/
書寫風(fēng)格較好
書寫風(fēng)格差27C程序開發(fā)過(guò)程28編譯編譯錯(cuò)是連接否連接錯(cuò)是運(yùn)行錯(cuò)是運(yùn)行否否編輯編輯編譯連接執(zhí)行程序生成目標(biāo)文件(.obj)生成可執(zhí)行文件(.exe)file.objfile.cfile.exe生成源文件(.c)用編輯軟件編寫C源程序。檢查源程序是否有語(yǔ)法錯(cuò)誤。將源程序中引用的標(biāo)準(zhǔn)函數(shù)和目標(biāo)文件裝配成一個(gè)可執(zhí)行程序使用文本編輯程序使用C語(yǔ)言編譯系統(tǒng)提供的編輯器28C程序中的錯(cuò)誤29包括:編譯錯(cuò)誤、連接錯(cuò)誤、邏輯錯(cuò)誤和運(yùn)行錯(cuò)誤編譯錯(cuò)誤是指在程序編譯過(guò)程中出現(xiàn)的錯(cuò)誤。通常是由于不正確書寫代碼而產(chǎn)生的。如:關(guān)鍵字寫錯(cuò)、遺漏標(biāo)點(diǎn)符號(hào)、括號(hào)不匹配等。錯(cuò)誤類型main(){
floatr,c,s;scanf(“%f”,r);c=2*3.14*rprintf("c=%f,",c);}編譯錯(cuò)誤;運(yùn)行錯(cuò)誤是指應(yīng)用程序在運(yùn)行期間執(zhí)行了非法操作所發(fā)生的錯(cuò)誤。5&2930連接錯(cuò)誤是指在程序連接過(guò)程中出現(xiàn)的錯(cuò)誤。通常是由于函數(shù)名不正確書寫而產(chǎn)生的。main(){
floatr,c,s;
c=2*3.14*r;print("c=%f,",c);}連接錯(cuò)誤邏輯錯(cuò)誤f
使程序運(yùn)行時(shí)得不到預(yù)期的結(jié)果。這種程序沒(méi)有語(yǔ)法錯(cuò)誤,也能運(yùn)行,但卻得不到正確的結(jié)果。例如,在一個(gè)算術(shù)表達(dá)式中,把乘號(hào)“*”寫成了加號(hào)“+”,條件語(yǔ)句的條件寫錯(cuò),循環(huán)次數(shù)計(jì)算錯(cuò)誤等r=5.7;通常,調(diào)試程序過(guò)程中所花的大局部時(shí)間和精力都在邏輯錯(cuò)誤上3031C程序錯(cuò)誤提示Error
編譯時(shí)期:通常是語(yǔ)法不正確而導(dǎo)致的。連接時(shí)期:通常是函數(shù)名不正確而導(dǎo)致的。運(yùn)行結(jié)果錯(cuò)誤
由于程序的邏輯設(shè)計(jì)不正確而導(dǎo)致的。Warning
當(dāng)獲得來(lái)自編譯器的警告時(shí),應(yīng)予以重視。多數(shù)情況下在程序運(yùn)行時(shí)可能出現(xiàn)不可預(yù)見(jiàn)的錯(cuò)誤。
31MicrosoftVisualC++6.0
調(diào)試C語(yǔ)言程序323233為更好管理C語(yǔ)言程序,在指定盤下建立好文件夾。每個(gè)C文件保存在不同文件夾下。C作業(yè)程序1程序2例如建立如下結(jié)構(gòu)的文件夾準(zhǔn)備工作3334開始->所有程序->MicrosoftVisualStudio6.0->
MicrosoftVisualC++6.0啟動(dòng)VC++3435啟動(dòng)VC++演示3536翻開VC++集成環(huán)境目的:下次啟動(dòng)VC++,就不會(huì)再出現(xiàn)“TipoftheDay”對(duì)話框單擊,取消√單擊,關(guān)閉對(duì)話框3637步驟1新建一個(gè)文本文件〔.txt〕步驟2將文本文件另存為C文件〔.c〕步驟3編輯C文件,并保存新建C語(yǔ)言源文件步驟3738步驟1:?jiǎn)螕粼摪粹o,新建一個(gè)文本文件(.txt)步驟2:將文本文件另保存為.c文件選擇File菜單->SaveAs…1.選擇文件存放路徑2.將文件名改為后綴為.C的文件3.單擊“保存”按鈕proc.c步驟3:在編輯窗口輸入編輯C語(yǔ)言程序表示文件進(jìn)行了修改,可單擊工具欄中的“保存”進(jìn)行保存3839
步驟1:編譯當(dāng)前C程序單擊按鈕“是”,為當(dāng)前的應(yīng)用建立一個(gè)新工作區(qū)
新建工作空間窗口,主要負(fù)責(zé)組織源文件編譯結(jié)果。如果有錯(cuò)誤需要修改源程序。找到第一個(gè)error處,并雙擊在箭頭所指處前一兩行找到錯(cuò)誤并修改。修改后再編譯,直到?jīng)]有error為止。;步驟2:連接程序。連接操作后的結(jié)果。如果有error,需要修改程序后再連接,直到?jīng)]有error為止。步驟3:運(yùn)行程序。2輸入2再輸入回車調(diào)試C語(yǔ)言源文件步驟3940選擇File菜單下CloseWorkspace命令,關(guān)閉當(dāng)前工作區(qū)在出現(xiàn)的對(duì)話框中單擊“是”按鈕關(guān)閉工作區(qū)〔調(diào)試后必須的步驟〕4041單擊“打開”按鈕選取C源文件所在文件夾選取文件后,單擊“翻開”按鈕翻開C源文件4142C源文件備份只需將后綴為.C的源文件復(fù)制到U盤4243第2章C語(yǔ)言根底數(shù)據(jù)類型標(biāo)識(shí)符、常量和變量根本數(shù)據(jù)類型運(yùn)算符及表達(dá)式43數(shù)據(jù)類型4444輸入設(shè)備輸出設(shè)備存儲(chǔ)器運(yùn)算器控制器知識(shí)準(zhǔn)備計(jì)算機(jī)的工作過(guò)程45位〔二進(jìn)制位〕內(nèi)存中的最小存儲(chǔ)單位。每一個(gè)位中或者存放0,或者存放1。字節(jié)1字節(jié)=8個(gè)二進(jìn)制位在內(nèi)存中,每個(gè)字節(jié)分配一個(gè)地址。存儲(chǔ)單元假設(shè)干個(gè)字節(jié)組成,通常是字節(jié)的倍數(shù)。用來(lái)存放一條機(jī)器指令或一個(gè)數(shù)據(jù)。幾個(gè)根本概念46二進(jìn)制位字節(jié)存儲(chǔ)單元,可以是1個(gè)字節(jié),可以是連續(xù)2個(gè)字節(jié),可以是連續(xù)4個(gè)字節(jié)FF00FF01FF02地址喂!趙剛是住在2031房間嗎??jī)?nèi)存結(jié)構(gòu)4700000111最低位最高位01000100FF00FF01FF02FF03FF04存儲(chǔ)單元高字節(jié)低字節(jié)…001000100000011148【例】根據(jù)計(jì)算機(jī)的工作原理描述求解圓面積的過(guò)程控制輸入設(shè)備,將數(shù)據(jù)=〉內(nèi)存計(jì)算,并將結(jié)果
=〉內(nèi)存控制輸出設(shè)備,將存儲(chǔ)在內(nèi)存的結(jié)果輸出到屏幕……ff00ff01ff02ff03short
a,b;a=1;b=a+1;a=a+1;ab變量122提示:在程序中通過(guò)定義變量〔對(duì)應(yīng)內(nèi)存假設(shè)干字節(jié)〕來(lái)訪問(wèn)內(nèi)存空間。49
通過(guò)輸入語(yǔ)句,將數(shù)據(jù)=>
變量計(jì)算,并將結(jié)果=>
變量通過(guò)輸出語(yǔ)句,將變量的值輸出到屏幕上1rs3.14【例】利用C語(yǔ)言描述求解圓面積的過(guò)程main(){}floatr,s;scanf(“%f”,&r);s=3.14*r*r;printf
(“%f”,s);……ff00…ff12…50程序設(shè)計(jì)步驟
確定數(shù)據(jù)結(jié)構(gòu)
確定算法
編碼調(diào)試數(shù)據(jù)結(jié)構(gòu)主要通過(guò)數(shù)據(jù)類型描述輸入數(shù)據(jù)計(jì)算處理輸出數(shù)據(jù)程序=數(shù)據(jù)結(jié)構(gòu)+算法/*確定數(shù)據(jù)結(jié)構(gòu)*//*處理數(shù)據(jù)*//*輸出數(shù)據(jù)*//*輸入數(shù)據(jù)*/51數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)有型和值之分,型是數(shù)據(jù)的分類,值是數(shù)據(jù)的具體表示,是程序處理的對(duì)象。數(shù)據(jù)類型表達(dá)數(shù)據(jù)的特點(diǎn),確定了數(shù)據(jù)的取值范圍、所能進(jìn)行的操作以及存儲(chǔ)單元的大小52數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型字符型實(shí)型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共同體類型單精度型雙精度型說(shuō)明:C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)以數(shù)據(jù)類型的形式出現(xiàn),不同的數(shù)據(jù)類型代表了不同的數(shù)據(jù)結(jié)構(gòu)。C數(shù)據(jù)類型53標(biāo)識(shí)符、常量和變量5454
是一個(gè)由有限個(gè)有效字符組成的序列,在C語(yǔ)言中只起標(biāo)識(shí)作用。主要用作符號(hào)常量名、變量名、函數(shù)名、數(shù)組名、文件名等。
由字母、數(shù)字、下劃線組成必須以字母、下劃線開頭最多不能超過(guò)31個(gè)字符,多余不被識(shí)別不能與系統(tǒng)保存字同名區(qū)別大小寫標(biāo)識(shí)符的構(gòu)成規(guī)那么標(biāo)識(shí)符55關(guān)鍵字
在系統(tǒng)中具有特殊用途,不能再作它用。
例如:main,int,if等預(yù)定義標(biāo)識(shí)符
C語(yǔ)言提供的庫(kù)函數(shù)名和預(yù)編譯處理命令。
例如:printf,scanf,include等用戶自定義標(biāo)識(shí)符
用戶自己起的變量、函數(shù)和文件名等標(biāo)識(shí)符的分類56【例】判斷合法的用戶標(biāo)識(shí)符
標(biāo)識(shí)符正確否標(biāo)識(shí)符正確否areaa&bPIprintfp_c1
w.w_x1
1xX1x1ifIf合法的用戶標(biāo)識(shí)符不能是關(guān)鍵字。但最好防止使用預(yù)定義標(biāo)識(shí)符,一般采用小寫表示。√×√√√√√××√√×不同的標(biāo)識(shí)符57C語(yǔ)言的數(shù)據(jù)有常量和變量。在程序執(zhí)行過(guò)程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。常量和變量main(){
shortx;x=1;x=2+x;printf(“%d”,x);}x1
常量:程序中直接表示的值。如:1和2。
變量:用數(shù)據(jù)類型描述的標(biāo)識(shí)符,代表存儲(chǔ)單元。如:標(biāo)識(shí)符x321
變量的三要素:變量名、變量類型和變量的值。變量必須先定義后使用。58#definePI3.14159main(){
floatr,c,s;r=56.7;c=2*3.14*r;s=3.14*r*r;printf("c=%f,s=%f",c,s);}#define符號(hào)常量名常量
符號(hào)常量與變量不同,其值不能被改變符號(hào)常量一般采用大寫字母表示PI=3.14PIPI符號(hào)常量59根本類型數(shù)據(jù)6060整型數(shù)據(jù):整型常量和整型變量十進(jìn)制數(shù)八進(jìn)制數(shù)十六進(jìn)制數(shù)+123、-234、0、17023、017
0x23、0X17、0xFF0xfa【例】判斷018和18整型數(shù)據(jù)整型常量三種表示形式61短整型常量根本整型常量長(zhǎng)整型常量123L、0x17l無(wú)符號(hào)整型常量023U、0X23u、17u【例】判斷-200u整型常量的分類62注意:整型數(shù)據(jù)在內(nèi)存所占字節(jié)數(shù),不同的C編譯環(huán)境是不同的。例:在16位編譯環(huán)境下int類型的變量占2個(gè)字節(jié)類型標(biāo)識(shí)符字節(jié)數(shù)數(shù)值范圍基本整型int4-2147483648~2147483647短整型short2-32768~32767長(zhǎng)整型long4同int無(wú)符號(hào)整數(shù)unsignedint40~4294967295unsignedshort20~65535unsignedlong4同unsignedint整型變量數(shù)據(jù)類型標(biāo)識(shí)符(VC++6.0編譯環(huán)境)63main(){
shorta,b;
intx;}
類型標(biāo)識(shí)符變量名1,變量名2,…;axb提示:變量必須先定義后使用整型變量的定義64main(){
inta=4,b=4,c;
longx=27;
a=a+1;c=c+1;}
在定義變量的同時(shí),給變量賦上一個(gè)確定的值。abcx4427存儲(chǔ)了一個(gè)不確定的數(shù)5提示:出現(xiàn)在賦值號(hào)右側(cè)的變量一定要有確定的值注意:引用一個(gè)未確定的值造成程序的錯(cuò)誤變量初始化65main(){
inta=4,b=a,c;
intx=y=27;}【分析】x=27,
y=27;66〔用2種表示形式〕十進(jìn)制指數(shù)形式10.0、-3.78、0.78數(shù)值E±指數(shù)或數(shù)值e±指數(shù)十進(jìn)制整數(shù)或小數(shù)整數(shù)實(shí)型數(shù)據(jù):實(shí)型常量和實(shí)型變量實(shí)型數(shù)據(jù)實(shí)型常量<=>10.<=>.78數(shù)學(xué)表示C的指數(shù)表示3.57×1053.0×10-53.57E+5或3.57E5或3.57e53.0E-5或3.E-5或3e-567【例】以下選項(xiàng)中表示一個(gè)合法的常量是〔說(shuō)明:符號(hào)□表示空格〕A〕.1e0B〕C〕E9D〕9.12EA〕9□9□9B〕0XabC〕123E0.2D〕2.7e【例】以下選項(xiàng)中可用作C程序合法實(shí)數(shù)的是√√68類型標(biāo)識(shí)符字節(jié)數(shù)取值范圍有效位數(shù)單精度f(wàn)loat43.4×10-38~3.4×1038
7位雙精度double81.7×10-308~1.7×10308
12~16位main(){
floatx=23.0,y;doublez;printf(“%f”,x);}x
y23.0z注意:實(shí)型變量有一定的誤差實(shí)型變量實(shí)型類型標(biāo)識(shí)符實(shí)型變量定義69
是字符編碼標(biāo)準(zhǔn),采用高位為0的一個(gè)字節(jié)編碼。取值范圍:0~127。
【例】字符A在內(nèi)存的存儲(chǔ)形式0100000141字符型數(shù)據(jù)字符型數(shù)據(jù):字符型常量和字符型變量ASCII表注意:字符在內(nèi)存中存儲(chǔ)的是其ASCII碼值。70‘A’、‘a(chǎn)’、‘1’一般表示法轉(zhuǎn)義字符十六進(jìn)制或八進(jìn)制(用反斜線后跟一個(gè)特定的字符)(用單引號(hào)括起來(lái)的一個(gè)字符)‘\n’、‘\t’‘\x41’‘\101’‘\0’空字符空字符:ASCII碼值為0的字符,不同于空格字符字符型常量〔用3種表示形式〕71【例】以下選項(xiàng)中非法的字符常量是A〕’\018’B〕’\“’C〕’\\’D〕’\xcc’A〕'\101'B〕'\65'C〕'\xff'D〕'\019'【例】以下不合法的字符常量是√√72分析同一個(gè)字符的多種表示數(shù)值1與字符’1’的區(qū)別字符A的表示內(nèi)存的形式(二進(jìn)制)對(duì)應(yīng)的十進(jìn)制值‘A’‘\x41’‘\101’0100000165表示內(nèi)存形式(二進(jìn)制)對(duì)應(yīng)的十進(jìn)制數(shù)值1字符11‘1’000000010011000114973空字符、數(shù)值0和字符0‘a(chǎn)’與a的區(qū)別表示內(nèi)存形式(二進(jìn)制)對(duì)應(yīng)的十進(jìn)制空字符數(shù)值0字符0‘\0’0‘0’0000000000000000010010010049提示:在運(yùn)算中空字符和數(shù)值0是等價(jià)的a:C語(yǔ)言的標(biāo)識(shí)符,可作為變量名或函數(shù)名等的標(biāo)識(shí)‘a(chǎn)’:是程序處理的字符數(shù)據(jù)74類型標(biāo)識(shí)符字節(jié)數(shù)數(shù)值范圍char1-128~127main(){charc1,c2;c1=‘A’;c2=c1;}
c1c26565字符型變量字符型類型標(biāo)識(shí)符字符型變量定義75main(){
charc1,c2;c1=97;c2=‘a(chǎn)’;
printf(“%c,%c\n”,c1,c2);}c197c297注意:不要超過(guò)一個(gè)字節(jié)表示的數(shù)值范圍a,a運(yùn)行結(jié)果:字符型量的運(yùn)算特點(diǎn)可對(duì)字符型變量賦整數(shù)值提示:字符型量可作為一個(gè)字節(jié)的整數(shù)值使用76main(){
charc1,c2,ch;
intx;c1=‘B’;c2=’A’;
x=c1–c2
;ch=‘a(chǎn)’+1;
printf(“%d,%c\n”,x,ch);}提示:字符型量參加數(shù)學(xué)運(yùn)算時(shí)是其ASCII值c1c2chx6665
198可參與任何整數(shù)運(yùn)算1,b運(yùn)行結(jié)果:7797-65=32
97–32=65
65+32=97運(yùn)算運(yùn)算結(jié)果對(duì)應(yīng)的字符‘a(chǎn)’-’A’‘a(chǎn)’-32‘A’+32’A’’a’main(){
charc1,c2;
c1=‘B’;c1=c1+32;c2=c1+2-32;printf(“%c,%c\n”,c1,c2);}c1c2669868b,D運(yùn)行結(jié)果:大小寫轉(zhuǎn)換方法7848-48=049-48=10+48=48運(yùn)算運(yùn)算結(jié)果對(duì)應(yīng)的數(shù)據(jù)‘0’-’0’‘1’–‘0’0+‘0’1+‘0’1+48=49main(){
charc=‘3’;intx;x=c–‘0’;c=x+2+’0’;printf(“%d,%c”,x,c);
}
cx513533,5運(yùn)行結(jié)果:數(shù)字
數(shù)字字符轉(zhuǎn)換‘0’‘1’0179提示:字符的大小取決于ASCII值main(){
charc1=‘a(chǎn)’;
if(c1>=‘a(chǎn)’&&c1<=‘z’)printf(“是小寫!”);printf(“%d”,‘a(chǎn)’>’b’
);}
比較大小80用雙引號(hào)括起的假設(shè)干字符“Hello”721011081081110‘H’‘e’‘l’‘l’‘o’‘\0’字符串的結(jié)尾符號(hào)空串“”‘\0’字符串長(zhǎng)度:所包含的字符個(gè)數(shù)(不包括空字符)
“aa\n\bb012\012”字符個(gè)數(shù):9字符串常量81‘a(chǎn)’
區(qū)別“a”
97970charch;ch=‘a(chǎn)’;ch=“a”;提示:C中沒(méi)有字符串變量,通過(guò)字符數(shù)組來(lái)存儲(chǔ)字符串,實(shí)現(xiàn)對(duì)字符串中每一個(gè)字符的處理?!啊?/p>
‘’
082【例】以下選項(xiàng)中不能用作C程序合法常量的是【例】以下選項(xiàng)中不能作為C語(yǔ)言合法常量的是A〕1,234B〕‘\123’C〕123D〕"\x7G"A〕'cd'B〕0.1e+6C〕"\a"D〕'\011'【例】以下正確的字符串常量是A〕“\\\”B〕’abc’C〕OlympicGamesD〕""√√√83【例】以下合法的字符型常量是
【例】以下選項(xiàng)中不屬于字符常量的是A〕’\x13’B〕’\018’C〕’65’D〕”\n”A〕'C' B〕"C"C〕'\xCC'D〕'\072'√√84運(yùn)算符及表達(dá)式8585類別運(yùn)算符算術(shù)運(yùn)算符+、-、*、/、%賦值運(yùn)算符=自增、自減運(yùn)算符++、--關(guān)系運(yùn)算符>、<、>=、<=、!=、==邏輯運(yùn)算符!、&&、||逗號(hào)運(yùn)算符,求字節(jié)運(yùn)算符sizeof運(yùn)算符C運(yùn)算符與表達(dá)式概念運(yùn)算符分類86優(yōu)先級(jí)在一個(gè)表達(dá)式中如果有多個(gè)運(yùn)算符時(shí),那么計(jì)算是有先后次序的,這種計(jì)算的先后次序稱為相應(yīng)運(yùn)算符的優(yōu)先級(jí)。結(jié)合性當(dāng)一個(gè)運(yùn)算對(duì)象兩側(cè)運(yùn)算符的優(yōu)先級(jí)別相同時(shí)進(jìn)行運(yùn)算的結(jié)合方向稱為運(yùn)算符的結(jié)合性。右結(jié)合性按“從右向左”的順序運(yùn)算左結(jié)合性按“從左向右”的順序運(yùn)算運(yùn)算符使用本卷須知872+3*43+4-31214優(yōu)先級(jí)左結(jié)合74右結(jié)合3+4-31488指用運(yùn)算符和圓括號(hào)將常量、變量和函數(shù)調(diào)用連接起來(lái)的有意義的式子。main(){floata,b=7;a=7*sqrt(b)+b;b=a>b;
}表達(dá)式單個(gè)常量、變量和函數(shù)調(diào)用也可看成一個(gè)表達(dá)式。表達(dá)式要按照規(guī)定的運(yùn)算規(guī)那么進(jìn)行運(yùn)算,并會(huì)得到一個(gè)結(jié)果,即表達(dá)式的值。C語(yǔ)言可分為算術(shù)表達(dá)式、賦值表達(dá)式、關(guān)系表達(dá)式、逗號(hào)表達(dá)式和邏輯表達(dá)式等。89
庫(kù)函數(shù)函數(shù)由C語(yǔ)言預(yù)定義的函數(shù),例如:scanf()和printf()函數(shù),用戶只要學(xué)會(huì)正確調(diào)用即可。函數(shù)名(參數(shù)表)完成一定功能的語(yǔ)句塊。C函數(shù)包括:庫(kù)函數(shù)和用戶自定義函數(shù)。常量、變量、表達(dá)式數(shù)學(xué)式子C庫(kù)函數(shù)的使用X2.5sqrt(7)
pow(x,2.5)
90#include<math.h>main(){
floata,b=4.5;a=2*sqrt(b);b=pow(a,b);printf(“a=%f”,a);}
注意:使用數(shù)學(xué)庫(kù)函數(shù)時(shí),在所有自定義函數(shù)前加此預(yù)編譯命令
用戶自定義函數(shù)由用戶自己根據(jù)實(shí)際任務(wù)來(lái)編寫。例:主函數(shù)main()。91括號(hào)取正取負(fù)乘除取余加減()+-*/%+-單目雙目同級(jí),右結(jié)合同級(jí)同級(jí)高低算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符92注意單目取正或負(fù)
5*-2
5*(-2)
-10除運(yùn)算符〔/〕02/32.0/30.666667取余〔%〕3%22%321兩個(gè)整數(shù)相除,結(jié)果是相除后的值取整取余的運(yùn)算數(shù)必須為整數(shù)93參加算術(shù)運(yùn)算的運(yùn)算對(duì)象可以是整型數(shù)據(jù)、實(shí)型數(shù)據(jù)和字符型數(shù)據(jù)。
main()
{
inta=3;
floatb=3.4;
charc=‘A’;a=a*b/c-1.5+’a’;
}算術(shù)表達(dá)式94
自動(dòng)轉(zhuǎn)換
強(qiáng)制轉(zhuǎn)換如果雙目運(yùn)算符兩邊的數(shù)據(jù)類型不一致,系統(tǒng)自動(dòng)將兩邊的運(yùn)算數(shù)轉(zhuǎn)換成同一類型后,再運(yùn)算?;驹瓌t將表達(dá)式中char或short全部自動(dòng)轉(zhuǎn)換為int型;將float轉(zhuǎn)換為double型。當(dāng)運(yùn)算符兩端的運(yùn)算量類型不一致時(shí),按“向高看齊”的原則對(duì)“較低”的類型進(jìn)行提升。(類型標(biāo)識(shí)符)表達(dá)式數(shù)據(jù)類型轉(zhuǎn)換95result=ch/i+f*d-(f+i);charch;inti,result;floatf;doubled;intdoubledoubleintdoubledoubledoubledouble只是改變了表達(dá)式值的類型,而沒(méi)改變變量的原類型轉(zhuǎn)換是具有方向性的,按轉(zhuǎn)換方向的轉(zhuǎn)換不會(huì)丟失數(shù)據(jù),否則會(huì)造成數(shù)據(jù)的丟失提示表達(dá)式值的類型96(char)(x-3.14*x)(char)x-3.14*x
表達(dá)式值的類型是char表達(dá)式值的類型是doublefloatx=7.8;inty;y=x%3;(int)x%3;7197練習(xí)表達(dá)式的表示數(shù)學(xué)式子C表達(dá)式b*b-4*a*ca+b+c/4*a*b()()a+(b+c)/4/a/ba+sqrt(b*b-4*a*c)pow(x,2.5)+1.31+1/21+1.0/2√語(yǔ)法正確,運(yùn)算結(jié)果錯(cuò)誤98=變量名=表達(dá)式優(yōu)先級(jí)僅比最低級(jí)的逗號(hào)運(yùn)算符高,右結(jié)合性。說(shuō)明:變量出現(xiàn)在賦值號(hào)左側(cè),是改變變量的值,出現(xiàn)在右側(cè)表達(dá)式中是讀取賦值運(yùn)算符優(yōu)先級(jí)和結(jié)合性賦值運(yùn)算符和賦值表達(dá)式賦值表達(dá)式賦值運(yùn)算符賦值表達(dá)式的值:是賦值號(hào)左邊變量的值99賦值表達(dá)式變量的值表達(dá)式結(jié)果a=3a=3+2*aa=a+1b=aa+c=3393101091010提示:賦值運(yùn)算符左側(cè)只能是變量100a=b=c=3333a=5+(c=6)61111x=5=4+1101x=x+3x+=3a=a*3a*=3x*=y+8x=x*(y+8)復(fù)合賦值運(yùn)算符102練習(xí)inta=2;a+=a-=a*a;4a-=4a=a-4-2a+=-2a=a+(-2)-4a2-2-4103賦值運(yùn)算符兩那么數(shù)據(jù)類型不一致時(shí),將賦值右邊表達(dá)式值自動(dòng)轉(zhuǎn)換為左邊變量的類型。charch;inti,result;floatf;doubled;result=ch/i+f*d-(f+i);賦值運(yùn)算中類型的轉(zhuǎn)換double104inta;floatb=7.8;a=b;b=6;a7b6.0注意:高字節(jié)數(shù)據(jù)轉(zhuǎn)換成低字節(jié)數(shù)據(jù)可能會(huì)造成數(shù)據(jù)喪失,要注意防止。shorta;longb=98304;a=b;printf(“%d”,a);a-32768b98304105運(yùn)算符,表達(dá)式1,表達(dá)式2,表達(dá)式3是所有運(yùn)算符中級(jí)別最低的運(yùn)算符。逗號(hào)表達(dá)式的值:是最后一個(gè)表達(dá)式的值逗號(hào)表達(dá)式優(yōu)先級(jí)逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式表達(dá)式變量值表達(dá)式值y=3,y+1x=(y=3,y+1)x=y=3,y+1y為34y為3,x為44x、y為34106表達(dá)式前綴運(yùn)算后綴運(yùn)算x=x+1
x+=1++xx++x=x-1
x-=1--xx--(x+y)++6++x+y++++、--運(yùn)算符提示:右結(jié)合運(yùn)算符。運(yùn)算對(duì)象只能是變量而不能是表達(dá)式或常數(shù)107x=10;y=++x;
前綴運(yùn)算:先增值再引用后綴運(yùn)算:先引用再增值x=10;y=x++;++x;y=x;x為11,y為11++x;y=x;x為11,y為10注意在表達(dá)式中引用前綴運(yùn)算和后綴運(yùn)算是有區(qū)別的提示:++、--運(yùn)算符無(wú)論是否加括號(hào)都不和其他運(yùn)算符比較優(yōu)先級(jí),只是反映先于還是后于表達(dá)式計(jì)算的問(wèn)題。108【例】假設(shè)i=3;,那么求表達(dá)式的值-i++根據(jù)右結(jié)合性,++所作用的運(yùn)算對(duì)象是i-ii++表達(dá)式的值:-3i的值:4-i++-(i++)注意:包含++、--運(yùn)算的表達(dá)式的值,是在表達(dá)式中去掉++和--后的表達(dá)式運(yùn)算后的值109sizeof(類型標(biāo)識(shí)符)sizeof(變量名)
單目運(yùn)算符,返回變量或數(shù)據(jù)類型的字節(jié)長(zhǎng)度
floatf;intx,y;x=sizeof(f);y=sizeof(int);VC6.0++編譯環(huán)境下:x的值為4y的值為416位編譯環(huán)境下:x的值為4y的值為2sizeof運(yùn)算符110111第3章順序結(jié)構(gòu)
C程序的語(yǔ)句數(shù)據(jù)的輸入與輸出簡(jiǎn)單程序設(shè)計(jì)111C程序的語(yǔ)句112112說(shuō)明語(yǔ)句執(zhí)行語(yǔ)句控制語(yǔ)句
表達(dá)式語(yǔ)句賦值語(yǔ)句函數(shù)調(diào)用語(yǔ)句空語(yǔ)句復(fù)合語(yǔ)句
main(){inta,b,x,y,t;a=b=18;scanf(“%d%d”,&x,&y);
if(x>y){t=x;x=y;y=t;
}printf(“%d%d“,x,y);}區(qū)別:inta=b=c=2;提示:復(fù)合語(yǔ)句在語(yǔ)法上視為一條語(yǔ)句;113數(shù)據(jù)的輸入與輸出114114
C語(yǔ)言中沒(méi)有提供輸入輸出語(yǔ)句,其輸入輸出操作,是通過(guò)調(diào)用C語(yǔ)言系統(tǒng)所提供的輸入輸出函數(shù)來(lái)實(shí)現(xiàn)的。格式化輸入/輸出函數(shù)scanf函數(shù)printf函數(shù)讀寫字符數(shù)據(jù)的函數(shù)getchar函數(shù)putchar函數(shù)輸入輸出函數(shù)115printf(“格式控制串”,表達(dá)式1,表達(dá)式2,…);
將表達(dá)式列表中的各個(gè)表達(dá)式按控制字符串給定的格式輸出。格式控制串一般字符:原樣輸出轉(zhuǎn)義字符:一般完成一定的動(dòng)作格式說(shuō)明符(%格式符):控制表達(dá)式的輸出格式及位置。
格式化輸出函數(shù)116inta=4,b=5;printf(“a=%d,b=%d\n”,a,b);printf(“a=%d\nb=%d\n”,a,b);a=4,b=5a=4b=5117格式說(shuō)明字符%-0m.nl/h格式符m(域?qū)?:輸出項(xiàng)在輸出設(shè)備上所占的字符數(shù)。n(精度):輸出的實(shí)型數(shù)的小數(shù)位數(shù)。不指定n時(shí),隱含為6。指定輸出類型長(zhǎng)度修正符指定輸出域?qū)捈熬戎付瘴惶?指定左對(duì)齊輸出關(guān)于輸出寬度m假設(shè)m大于實(shí)際數(shù)據(jù)寬度那么左端填補(bǔ)空格;假設(shè)m小于實(shí)際數(shù)據(jù)寬度那么按實(shí)際位數(shù)輸出。關(guān)于小數(shù)位數(shù)n假設(shè)n大于實(shí)際小數(shù)寬度那么右端填0;假設(shè)n小于實(shí)際數(shù)據(jù)寬度那么按四舍五入舍入。118格式符輸出形式示例運(yùn)行結(jié)果整型d有符號(hào)十進(jìn)制inta=123;printf(“%d”,a);123x十六進(jìn)制inta=123;printf(“%x”,a);
printf(“%#x”,a);7B0x7Bo八進(jìn)制inta=123;printf(“%o”,a);printf(“%#o”,a);1730173u無(wú)符號(hào)十進(jìn)制unsigneda=80;printf(“%u”,a);80hd短整型shorta=80;printf(“%hd”,a);80ld長(zhǎng)整型longa=123;printf(“%ld”,a);123字符型ccharc=69;printf(“%c”,c);E字符串sprintf(“%s”,”China”);China實(shí)型ffloata=123.4;printf(“%f”,a);123.400000%百分號(hào)printf(“%%”);%格式字符119輸出函數(shù)調(diào)用輸出結(jié)果1printf(“%d”,42);422printf(“%5d”,42);423printf(“%3d”,1234);12344printf(“%-5d”,42);425printf(“%05d”,42);000426printf(“%d%d”,42,54);42547printf(“%5d%5d”,42,54);42548printf(“%f”,123.54);123.5400009printf(“%12f”,123.54);123.54000010printf(“%8.3f”,123.55);123.55011printf(“%8.1f”,123.55);123.612printf(“%8.0f”,123.55);124120inta=-1;printf(“%d,%u,%x,%o”,a,a,a,a);a11111111111111111111111111111111-1,4294967295,ffffffff,37777777777輸出結(jié)果:提示:表達(dá)式的輸出形式是根據(jù)格式符控制的注意:要正確輸出表達(dá)式的值,一定要使用相匹配的格式符。121注意:輸出格式要和表達(dá)式類型相匹配。格式控制符表達(dá)式類型%dintlong%hdshort%ldlong%ffloatdouble%cchar%uunsigned122字符數(shù)據(jù)的輸出
字符數(shù)據(jù)可以以字符形式輸出,也可以以整數(shù)形式輸出。main(){
charc1,c2;c1=97;c2=‘b’;
printf(“%c,%c\n”,c1,c2);}c1c29798printf(“%d,%d\n”,c1,c2);a,b97,98123scanf(“格式控制串”,變量地址1,變量地址2,…);
等待用戶從鍵盤上輸入數(shù)據(jù),然后按格式控制的要求對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換后送到相應(yīng)變量中。提示:格式控制串根本同printf函數(shù),但一般不包括轉(zhuǎn)義字符。變量地址的表示inta;&a取變量對(duì)應(yīng)內(nèi)存地址運(yùn)算符
格式化輸入函數(shù)124inta,b;scanf(“%d%d”,&a,&b);提示:輸入數(shù)據(jù)結(jié)束后,一定按回車,scanf函數(shù)才開始讀數(shù)據(jù)。ab鍵盤輸入形式27182718125格式說(shuō)明字符%*ml或h格式符輸入數(shù)據(jù)類型和格式長(zhǎng)度修正符域?qū)捳f(shuō)明符賦值抑制符126格式字符格式符輸入形式整型d十進(jìn)制x十六進(jìn)制o八進(jìn)制u無(wú)符號(hào)十進(jìn)制ld長(zhǎng)整型字符型c字符串s單精度f(wàn)雙精度lf雙精度127運(yùn)行程序時(shí)輸入數(shù)據(jù)的方式
輸入數(shù)據(jù)時(shí),數(shù)據(jù)之間默認(rèn)分隔符是
回車、空格、Tab鍵scanf(“%d%d%d”,&a,&b,&c);輸入形式233412233412233412128
指定數(shù)據(jù)所占寬度scanf(“%2d%3d%2f”,&a,&b,&c);abc輸入形式1234567891234567.0129
跳過(guò)輸入數(shù)據(jù)scanf(“%d%*d%d%f”,&a,&b,&c);abc輸入形式10203040103040130
在格式串中插入其它字符scanf(“%d,%d,%f”,&a,&b,&c);scanf(“a=%d,b=%d,c=%f”,&a,&b,&c);輸入形式輸入形式10,20,30a=10,b=20,c=30131scanf的停止與返回
格式參數(shù)中格式項(xiàng)用完---正常結(jié)束發(fā)生格式項(xiàng)與輸入值不匹配---非正常結(jié)束該函數(shù)在執(zhí)行中遇到下面兩種情況后結(jié)束main(){inta,b,c;scanf(“%d%d”,&a,&b);scanf(“%d”,&c);}提示:輸入數(shù)據(jù)個(gè)數(shù)需與格式符個(gè)數(shù)一致,多余數(shù)據(jù)忽略輸入形式12243648scanf(“%d%d”,&a,&b);12a132abc輸入形式字符數(shù)據(jù)的讀入scanf(“%c%c%c”,&a,&b,&c);格式符是連續(xù)的,回車、空格和Tab鍵都作為字符讀入ABC‘A’‘B’‘C’ABC‘A’空格‘B’ABC‘A’‘B’回車提示:連續(xù)輸入字符數(shù)據(jù)時(shí),不添加其他符號(hào)133scanf(“%c%c%c”,&a,&b,&c);格式符之間有空格時(shí),可將回車、空格和Tab鍵作為輸入數(shù)據(jù)之間的分隔符。a65b66c67輸入形式ABCABCABC134scanf(“%4c%4c”,&a,&b);格式符前可加數(shù)字,用來(lái)指定輸入數(shù)據(jù)所占的寬度
輸入數(shù)據(jù)時(shí),應(yīng)嚴(yán)格按指定的寬度輸入數(shù)據(jù),且取指定寬度的第一個(gè)字符作為輸入數(shù)據(jù)。輸入形式A
B
a65b66135scanf(“%d%c%d%c”,&a,&b,&c,&d);10A20B輸入形式
交叉輸入數(shù)值數(shù)據(jù)和字符數(shù)據(jù)應(yīng)注意空格136inta,b;scanf(“%d%o”,&a,&b);a12b10若輸入:1212提示:讀入數(shù)據(jù)時(shí)是按指定的格式符讀入的理解格式符137scanf(“%c”,&b);scanf(“%d”,&a);a1b49輸入形式11138scanf(“%d”,&a);a123b49scanf(“%c”,&b);輸入形式123輸入形式123139注意:讀入數(shù)據(jù)時(shí),格式符要與變量類型相匹配變量類型匹配的格式符intshortlong%dshort%hdlong%ldfloat%fdouble%lfchar%cunsigned%u140變量=getchar();從標(biāo)準(zhǔn)輸入設(shè)備上輸入一個(gè)可打印字符,并將該字符的ACSII碼作為函數(shù)的值。putchar(字符表達(dá)式);將字符表達(dá)式的值輸出到標(biāo)準(zhǔn)輸出設(shè)備。
字符輸入函數(shù)
字符輸出函數(shù)標(biāo)準(zhǔn)輸入設(shè)備:鍵盤標(biāo)準(zhǔn)輸出設(shè)備:顯示器字符輸入/輸出函數(shù)141#include
<stdio.h>
main(){
charch;ch=getchar();putchar(‘A’);putchar(‘A’+32);putchar(ch);putchar(ch+4);putchar(‘\n’);ch=getchar();putchar(ch)}注意:使用讀寫字符函數(shù),需在所有函數(shù)前加上此預(yù)編譯命令。ch輸入形式123輸出結(jié)果‘1’Aa15‘2’2142#include
<stdio.h>
main(){
charc1,c2,c3;c1=getchar();c2=getchar();c3=getchar();putchar(c1);}輸入形式ABC注意:getchar()函數(shù)會(huì)讀入回車符和空格c1c2c3‘A’‘B’‘C’ABC回車‘B’143理解putchar(getchar()
);ch=getchar();putchar(ch);將從鍵盤上讀入的字符直接輸出到顯示器上,沒(méi)有保存讀入的字符。將從鍵盤上讀入的字符到變量ch中,然后輸出在顯示器上。144簡(jiǎn)單程序設(shè)計(jì)145145順序結(jié)構(gòu)
即按著程序語(yǔ)句行的自然順序,一條接一條語(yǔ)句地執(zhí)行程序。
選擇結(jié)構(gòu)
按照給定的條件,判斷是否滿足,從而決定程序的執(zhí)行方向?!瞚f語(yǔ)句、switch語(yǔ)句〕
循環(huán)結(jié)構(gòu)
指按照某種條件重復(fù)執(zhí)行程序中的某些命令序列。〔for語(yǔ)句、do-while語(yǔ)句、while語(yǔ)句〕程序的根本結(jié)構(gòu)146【例】從鍵盤上輸入一大寫字母,要求改用小寫字母輸出數(shù)據(jù)結(jié)構(gòu)定義一個(gè)字符型變量ch
鍵盤輸入字母=>
ch
將ch中的ASCII碼值變換為對(duì)應(yīng)字母的小寫
ASCII碼值將ch中的值以字符形式輸出到屏幕上算法
main(){}charch;scanf(“%c”,&ch);ch=ch+32;printf(“%c”,ch);ch=getchar();putchar(ch);#include
<stdio.h>chA6597aprintf(“pleaseenter:”);pleaseenter:Aa147【例】從鍵盤上輸入2個(gè)整數(shù),要求互換其值輸出交換兩個(gè)變量a、b的值的方法a=4;b=7;a=b;b=a;a=4;b=7;t=a;a=b;b=t;ab477t4474148ab數(shù)據(jù)結(jié)構(gòu)定義3個(gè)整型變量a、b和t。算法從鍵盤讀入兩個(gè)整數(shù)
=>變量a、b
交換a、b變量的值。輸出a、b變量的值。main(){
}inta,b,t;printf(“輸入兩個(gè)整數(shù):”);scanf(“%d%d”,&a,&b);t=a;a=b;b=t;printf(“a=%d,b=%d”,a,b);輸入兩個(gè)整數(shù):2718a=18,b=2727181827149【例】輸入一個(gè)double數(shù)據(jù),使該數(shù)保存小數(shù)點(diǎn)后兩位,對(duì)第三位小數(shù)進(jìn)行四舍五入后處理再輸出。275.8674*10027586.74+0.527587.24取整27587除100275.87150數(shù)據(jù)結(jié)構(gòu)
定義存放double型數(shù)據(jù)的變量x算法讀入數(shù)據(jù)=>x將x變量中的值*100=>x將x變量中的值+0.5=>x將x變量中的值取整=>x將x變量中的值除以100
=>x
輸出x變量中的值。main(){
}doublex;printf(“輸入1個(gè)實(shí)數(shù):”);scanf(“%lf”,&x);x=x*100;x=x+0.5;x=(int)x;x=x/100;printf(“x=%f”,x);x輸入1個(gè)實(shí)數(shù):275.8674275.867427586.7427587.2427587.00275.87x=275.870000x=x*100+0.5(int)/100.0()151第4章
選擇結(jié)構(gòu)
關(guān)系運(yùn)算邏輯運(yùn)算
if語(yǔ)句
switch語(yǔ)句152關(guān)系運(yùn)算153153
選擇結(jié)構(gòu)是根據(jù)一定的條件選擇程序的執(zhí)行方向。要考慮兩個(gè)方面的問(wèn)題:①如何來(lái)表示條件 ②實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句
在C語(yǔ)言中表示條件,一般用關(guān)系表達(dá)式或邏輯表達(dá)式,實(shí)現(xiàn)選擇結(jié)構(gòu)用if語(yǔ)句或switch語(yǔ)句。
傳統(tǒng)流程圖154大于小于大于等于小于等于等于不等于><>=<===!=3>=5‘a(chǎn)’<‘c’關(guān)系表達(dá)式值:關(guān)系成立表達(dá)式結(jié)果為1〔表示邏輯真〕關(guān)系不成立表達(dá)式結(jié)果為0〔表示邏輯假〕關(guān)系運(yùn)算符關(guān)系表達(dá)式intx=100;printf(“%d”,x>100);表達(dá)式結(jié)果:0表達(dá)式結(jié)果:1輸出:0155a=3>b=5算術(shù)運(yùn)算符優(yōu)先于關(guān)系運(yùn)算符(a=3)>(b=5)350關(guān)系運(yùn)算符優(yōu)先級(jí)156(a>b)==c1假設(shè)a=3,b=2,c=113(b+c)<a0d=a>b11f=a>b>c100157邏輯運(yùn)算158158邏輯非邏輯與邏輯或!
&&||‘c’&&‘d’0&&5(a>b)&&(c<d)!(a>b)單目雙目邏輯運(yùn)算符邏輯運(yùn)算對(duì)象可以是任意合法的表達(dá)式在進(jìn)行邏輯運(yùn)算時(shí),運(yùn)算對(duì)象被認(rèn)為是邏輯值判斷邏輯運(yùn)算對(duì)象邏輯值規(guī)定如下:非0=>邏輯真0=>邏輯假邏輯表達(dá)式的值:或者為1〔真〕或者為0〔假〕注意邏輯表達(dá)式159左操作數(shù)a右操作數(shù)ba&&ba||b!a非0非0110非000100非001100001‘c’&&‘d’0&&50||5!5>3
//結(jié)果是1//結(jié)果是0//結(jié)果是1//結(jié)果是0邏輯運(yùn)算規(guī)那么1605>3&&2&&8<4-!0
混合運(yùn)算時(shí),注意區(qū)別哪些是數(shù)學(xué)運(yùn)算對(duì)象,哪些是關(guān)系運(yùn)算對(duì)象及邏輯運(yùn)算對(duì)象。111300邏輯運(yùn)算符優(yōu)先級(jí)!、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、&&、||161a&&ba||b假設(shè)a=1;b=2;c=3;d=4;m和n各為1,那么如下表達(dá)式的值及各變量的結(jié)果是什么(m=a>b)&&(n=c>d)結(jié)果:m為0,n為1a為邏輯真,才判斷b的值a為邏輯真,不必判斷b的值邏輯運(yùn)算求解特點(diǎn)左值運(yùn)算優(yōu)先:即先算左邊的表達(dá)式的值,根據(jù)其結(jié)果斷定是否計(jì)算右邊表達(dá)式的值。提示:用&&和||運(yùn)算符將多個(gè)表達(dá)式連接成一個(gè)表達(dá)式162假設(shè)a=0;a++&&b++a為1表達(dá)式為0b不變提示:有后綴和前綴的表達(dá)式的值是取消后綴和前綴之后計(jì)算的結(jié)果。aa++163x=y=z=0;printf(“%d”,++x||++y&&++z);分析x=y=z=0;printf(“%d”,++x&&++y||++z);x=y=z=0;printf(“%d”,++x&&++y&&++z);()輸出表達(dá)式結(jié)果為:1;
x、y和z分別為:1、0、0()輸出表達(dá)式結(jié)果為:1;
x、y和z分別為:1、1、0()輸出表達(dá)式結(jié)果為:1;
x、y和z分別為:1、1、1164作業(yè)x=y=z=-1;printf(“%d”,++x&&++y&&++z);x=y=z=-1;printf(“%d”,++x&&++y||++z);x=y=z=-1;printf(“%d”,++x||++y&&++z);表達(dá)式為:0;
x、y和z分別為:0、-1、-1表達(dá)式為:0;
x、y和z分別為:0、-1、0表達(dá)式為:0;
x、y和z分別為:0、0、-1165練習(xí)判斷一個(gè)整數(shù)x是否為奇數(shù)判斷一個(gè)數(shù)x是否在0到10之間0<=x<=1011假設(shè)x=11表達(dá)式的結(jié)果為1x%2==1或x%2!=0x>=0x<=10&&166判斷一個(gè)數(shù)x是否在0到10之外判斷一個(gè)字符型數(shù)據(jù)ch是否是小寫字母x<0x>10||ch>=‘a(chǎn)’ch<=‘z’&&判斷某年y是否為閏年,y需要滿足如下要求之一:①能被4整除,但不能被100整除②能被4整除,又能被400整除y%4==0y%100!=0&&y%400==0
(
)||167if語(yǔ)句168168if語(yǔ)句的3種形式if(表達(dá)式)語(yǔ)句1;語(yǔ)句2;注意:默認(rèn)是一條語(yǔ)句。如果是多條語(yǔ)句,必須表示為復(fù)合語(yǔ)句
N-S流程圖根本if語(yǔ)句
傳統(tǒng)流程圖169【例】輸入兩個(gè)數(shù),按由小到大輸出。開始讀入數(shù)據(jù)=>a,ba>b?輸出a、b結(jié)束a
b非0main(){
}inta,b,t;printf(“輸入2個(gè)數(shù):”);scanf(“%d%d”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%d,%d”,a,b);ba輸入2個(gè)數(shù):10121210101212101012170提示:該格式實(shí)現(xiàn)二選一的處理if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;語(yǔ)句3;
N-S流程圖if-else語(yǔ)句
傳統(tǒng)流程圖171【例】輸入3個(gè)數(shù),求三個(gè)數(shù)中最大數(shù)。開始讀入=>a,b,ca>b?a=>m非0b=>m0m<c?c=>m輸出mmain(){
}inta,b,c,m;printf(“輸入3個(gè)數(shù):”);scanf(“%d%d%d”,&a,&b,&c);if(a>b)m=a;elsem=b;if(m<c)m=c;printf(“max=%d”,m);172【上機(jī)作業(yè)】輸入3個(gè)數(shù),按由小到大輸出讀入=>a,b,ca>b?a>c?a
ba
cb>c?b
c輸出a、b、cmain(){
floata,b,c,t;scanf("%f%f%f",&a,&b,&c);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}printf(“%f,%f,%f",a,b,c);}
173if(表1)語(yǔ)句1;elseif(表2)語(yǔ)句2;elseif(表3)語(yǔ)句3;else語(yǔ)句n;語(yǔ)句m;
N-S流程圖提示:該格式稱為多分支條件語(yǔ)句,實(shí)現(xiàn)多項(xiàng)選擇一的操作if-elseif-else語(yǔ)句
傳統(tǒng)流程圖174【例】根據(jù)輸入的學(xué)生成績(jī),輸出相應(yīng)等級(jí)90~100A80~89B70~79C60~69D其余:E規(guī)定如下:
main(){
}數(shù)據(jù)結(jié)構(gòu)定義用于存放成績(jī)、等級(jí)的變量s、g算法讀入成績(jī)=>s測(cè)試s屬于何分?jǐn)?shù)段的,將相應(yīng)等級(jí)=>g輸出成績(jī)s、等級(jí)gints;charg;printf(“輸入成績(jī):”);scanf(“%d”,&s);if(s>=90)g=‘A’;elseif(s>=80)g=‘B’;elseif(s>=70)g=‘C’;elseif(s>=60)g=‘D’;elseg=‘E’;printf(“s=%d,g=%c”,s,g);175C語(yǔ)言中,條件表達(dá)式可以為任意合法的表達(dá)式,非0為真,0為假。
if(a=b)…
if(a==b)…
if(x)…
if(x!=0)…
if(!x)…
if(x==0)…注意的問(wèn)題176if(表達(dá)式1)
if(表達(dá)式2)語(yǔ)句1;
else語(yǔ)句2;else
if(表達(dá)式3)語(yǔ)句3;語(yǔ)句n;if語(yǔ)句的嵌套177說(shuō)明C語(yǔ)言規(guī)定,else是和最近的if相匹配
if(x)
if(y)printf(“1”);
elseprintf(“2”);
if(x)
{
if(y)printf(“1”);
}
elseprintf(“2”);178【例】輸入3個(gè)數(shù),求三個(gè)數(shù)中最大數(shù)a>b?a>c?m=ab>c?讀入=>a,b,cm=cm=bm=c輸出mmain(){
}inta,b,c,m;printf(“輸入3個(gè)數(shù):”);scanf(“%d%d%d”,&a,&b,&c);if(a>b)
if(a>c)m=a;
elsem=c;else
if(b>c)m=b;elsem=c;printf(“max=%d”,m);179表達(dá)式1?表達(dá)式2:表達(dá)式3?:x=100;y=x>100?100:90;y的值為90條件運(yùn)算符及條件表達(dá)式條件運(yùn)算符條件表達(dá)式〔三目運(yùn)算〕提示:條件表達(dá)式一般應(yīng)用在賦值語(yǔ)句中條件表達(dá)式的值或者為:表達(dá)式2;或者為:表達(dá)式3180優(yōu)先于賦值,低于關(guān)系和算術(shù)運(yùn)算符,且為右結(jié)合。x=a<b?
a:
c>d?c:d(
)(
)()表達(dá)式3表達(dá)式2表達(dá)式1優(yōu)先級(jí)和結(jié)合性181【例】從鍵盤上輸入一大寫字母,要求改用小寫字母輸出。否那么原樣輸出
main(){charch;scanf(“%c”,&ch);ch=printf(“%c”,ch);}(ch>=‘A’&&ch<=‘Z’)
:ch;?ch+32182假設(shè)inta=10,c=9;分析
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人二手房買賣合同范本:房產(chǎn)交易全程保障協(xié)議書3篇
- 農(nóng)村土地承包經(jīng)營(yíng)權(quán)合同(2024年版)
- 2025年度生物制藥原料供應(yīng)合同
- 2025年度環(huán)保領(lǐng)域科技成果驗(yàn)收合同范本
- 2025年8月會(huì)計(jì)個(gè)人工作總結(jié)(四篇)
- 2025年“普三”工作總結(jié)(三篇)
- 2025年上海夫妻離婚協(xié)議模板(三篇)
- 2025年5月幼兒園工作總結(jié)(三篇)
- 2025年業(yè)務(wù)上半年工作總結(jié)例文(2篇)
- 2025年“高效工作八大技能”學(xué)習(xí)心得范文(2篇)
- 加油站廉潔培訓(xùn)課件
- 2022版義務(wù)教育(生物學(xué))課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 2023屆上海市松江區(qū)高三下學(xué)期二模英語(yǔ)試題(含答案)
- 誡子書教案一等獎(jiǎng)?wù)]子書教案
- 《民航服務(wù)溝通技巧》教案第16課民航服務(wù)人員平行溝通的技巧
- 深圳市物業(yè)專項(xiàng)維修資金管理系統(tǒng)操作手冊(cè)(電子票據(jù))
- 2023年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫(kù)含答案解析
- 起重機(jī)械安裝吊裝危險(xiǎn)源辨識(shí)、風(fēng)險(xiǎn)評(píng)價(jià)表
- 華北理工兒童口腔醫(yī)學(xué)教案06兒童咬合誘導(dǎo)
- 中國(guó)建筑項(xiàng)目管理表格
- 高一3班第一次月考總結(jié)班會(huì)課件
評(píng)論
0/150
提交評(píng)論