




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C程序設(shè)計(jì)單元一初識(shí)C語言C語言起源C語言起源C語言特性0102CONTENTC語言應(yīng)用范圍031.C語言起源貝爾實(shí)驗(yàn)室1969年至1973年間,為了移植與開發(fā)UNIX操作系統(tǒng),丹尼斯●里奇和肯●湯普遜設(shè)計(jì)了C語言。設(shè)計(jì)基礎(chǔ)C語言以B語言為基礎(chǔ)。2.C語言特性設(shè)計(jì)特性控制特性
融合計(jì)算機(jī)科學(xué)理論和實(shí)踐設(shè)計(jì)理念
自頂向下規(guī)劃
結(jié)構(gòu)化編程
模塊化設(shè)計(jì)2.C語言特性高效性運(yùn)行速度高效有效地利用內(nèi)存 C語言具有匯編語言的微調(diào)控制能力使其獲得最大運(yùn)行速度和最有效的使用內(nèi)存。2.C語言特性可移植性強(qiáng)大而靈活面向程序員C程序既可以解決物理學(xué)和工程學(xué)問題,又可以制作電影動(dòng)畫特效。
程序員既可以利用C訪問硬件、操控內(nèi)存中的位,又可以利用其豐富的運(yùn)算符表達(dá)自己的意圖。3.C語言應(yīng)用范圍謝謝THANKYOU主講人:謝崇波C程序設(shè)計(jì)精品在線開放課程單元一初識(shí)C語言C語言標(biāo)準(zhǔn)C語言標(biāo)準(zhǔn)起源C語言標(biāo)準(zhǔn)0102CONTENT1.C語言標(biāo)準(zhǔn)起源經(jīng)典C1987年,布萊恩·柯林漢和丹尼斯·里奇合著的TheCProgrammingLanguage(《C語言程序設(shè)計(jì)》)第1版是公認(rèn)的C標(biāo)準(zhǔn),通常稱之為K&RC或經(jīng)典C。2.C語言標(biāo)準(zhǔn)第1個(gè)ANSI/ISOC標(biāo)準(zhǔn) 1983年,美國國家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)組建了一個(gè)委員會(huì)(X3J1),開發(fā)了一套C語言新標(biāo)準(zhǔn),并于1989年正式公布。該標(biāo)準(zhǔn)(ANSIC)定義了C語言和C標(biāo)準(zhǔn)庫。該標(biāo)準(zhǔn)通常叫作C89(因?yàn)锳NSI于1989年批準(zhǔn)該標(biāo)準(zhǔn))或C90(因?yàn)镮SO于1990年批準(zhǔn)該標(biāo)準(zhǔn))。2.C語言標(biāo)準(zhǔn)C99標(biāo)準(zhǔn) 1994年,美國國家標(biāo)準(zhǔn)協(xié)會(huì)ANSI和ISO聯(lián)合委員會(huì)(C9X委員會(huì))開始修訂C標(biāo)準(zhǔn),最終發(fā)布了C99標(biāo)準(zhǔn)。該次修訂目標(biāo)有三個(gè):支持國際化編程解決明顯的缺陷提高C的適應(yīng)性2.C語言標(biāo)準(zhǔn)C11標(biāo)準(zhǔn)
美國標(biāo)準(zhǔn)委員會(huì)于2011年發(fā)布了C11標(biāo)準(zhǔn),該標(biāo)準(zhǔn)提出的新指導(dǎo)原則,并未很好的支持和接受C99標(biāo)準(zhǔn)。謝謝THANKYOU主講人:謝崇波C程序設(shè)計(jì)精品在線開放課程單元一初識(shí)C語言C語言編程步驟C語言編程機(jī)制C語言編程七步驟0102CONTENT1.C語言編程機(jī)制源代碼文件(sourcecodefile) C語言中,要求文件名以.c結(jié)尾(如,wordcount.c和budget.c)。在文件名中,點(diǎn)號(hào)(.)前面的部分稱為基本名(basename),點(diǎn)號(hào)后面的部分稱為擴(kuò)展名(extension)。因此,如budget.c源代碼中budget是基本名,c是擴(kuò)展名。1.C語言編程機(jī)制目標(biāo)代碼文件、可執(zhí)行文件和庫 C編程的基本策略:C程序源代碼文件轉(zhuǎn)換為可執(zhí)行文件(其中包含可直接運(yùn)行的機(jī)器語言代碼),該過程通過編譯和鏈接兩個(gè)步驟來完成。編譯器把源代碼轉(zhuǎn)換成中間代碼,鏈接器把中間代碼和其他代碼合并,生成可執(zhí)行文件。1.C語言編程機(jī)制C語言編譯和鏈接過程2.C語言編程七步驟明確用C程序去實(shí)現(xiàn)什么功能或者解決什么問題思考程序需要哪些信息進(jìn)行哪些計(jì)算和控制程序應(yīng)該要報(bào)告什么信息第1步:定義程序的目標(biāo)2.C語言編程七步驟明確程序中數(shù)據(jù)的存儲(chǔ)類型(整型、浮點(diǎn)型以及數(shù)據(jù)等等)思考處理數(shù)據(jù)的方法(選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等)第2步:設(shè)計(jì)程序2.C語言編程七步驟用C編寫你設(shè)計(jì)好的程序。第3步:編寫代碼第4步:編譯
編譯就是編譯器把源代碼轉(zhuǎn)換成機(jī)器可執(zhí)行代碼的程序,編譯器取決于編程的環(huán)境。2.C語言編程七步驟第5步:運(yùn)行程序第6步:測試和調(diào)試程序
第7步:維護(hù)和修改代碼2.C語言編程七步驟
謝謝THANKYOUC程序設(shè)計(jì)單元二C語言概述編譯環(huán)境相關(guān)工具介紹Dev-C++環(huán)境安裝0102CONTENT工欲善其事必先利其器,C語言的調(diào)試工具非常多,包括WIN-TC、MicrosoftVisualstdudio、Dev-C++等集成實(shí)驗(yàn)與學(xué)習(xí)環(huán)境。相關(guān)工具介紹:該軟件使用TC2為內(nèi)核,支持WINDOWS平臺(tái)下的功能,例如剪切、復(fù)制、粘貼、查找和替換等。而且在功能上也有它的獨(dú)特特色例如語法加亮、C內(nèi)嵌匯編、自定義擴(kuò)展庫的支持等。
初學(xué)C的一款比較好的軟件。
WIN-TC:VisualStudio(VS)是一套非常完備的工具和服務(wù),可幫助開發(fā)人員為windows平臺(tái)和其他平臺(tái)創(chuàng)建各種各樣的應(yīng)用程序,因此比較重量級(jí),初學(xué)者不建議使用。MicrosoftVisualstudio:Dev-C++是一個(gè)Windows下的C/C++程序的集成開發(fā)環(huán)境。它使用GCC編譯器,遵循C/C++標(biāo)準(zhǔn)。開發(fā)環(huán)境包括多頁面窗口、工程編輯器以及調(diào)試器等,在工程編輯器中集合了編輯器、編譯器、連接程序和執(zhí)行程序,提供高亮度語法顯示的,以減少編輯錯(cuò)誤,還有完善的調(diào)試功能,能夠適合初學(xué)者與編程高手的不同需求,是學(xué)習(xí)C或C++的首選開發(fā)工具!Dev-C++:本教程采用Dev-C++繼承實(shí)驗(yàn)與學(xué)習(xí)環(huán)境。軟件獲?。?/p>
/projects/orwelldevcpp/
軟件大小:50Mb左右Dev-C++的獲?。篋ev-C++安裝:第一步:右鍵下載的軟件以管理員身份運(yùn)行Dev-C++安裝:第二步:選擇簡體中文Dev-C++安裝:第三步:勾選同意協(xié)議Dev-C++安裝:第四步:點(diǎn)擊下一步Dev-C++安裝:第五步:確定自己安裝的位置注意:路徑不要有中文字符我的安裝路徑:E:\install\Dev-Cpp點(diǎn)擊下一步、安裝Dev-C++運(yùn)行:第六步:運(yùn)行桌面的Dev-C++圖標(biāo)出現(xiàn)主界面如右圖所示到此,我們的開發(fā)環(huán)境就準(zhǔn)備好了,開啟我們的c語言學(xué)習(xí)之旅吧!謝謝THANKYOU主講人:謝崇波C程序設(shè)計(jì)精品在線開放課程單元二C語言概述C語言程序結(jié)構(gòu)C語言程序結(jié)構(gòu)01CONTENT1.C語言程序結(jié)構(gòu)C語言程序示例#include
<stdio.h>intmain()
/*一個(gè)簡單的C程序*/{ intq;
/*定義一個(gè)名為q的變量*/ q=1;
/*為q賦一個(gè)值*/ printf("%dis
neat.\n",q); /*使用printf()函數(shù)*/ return
0;}1.C語言程序結(jié)構(gòu)示例解析1.C語言程序結(jié)構(gòu)#include指令和頭文件 #include這行代碼是一條C預(yù)處理器指令(preprocessordirective)。通常,C編譯器在編譯前會(huì)對(duì)源代碼做一些準(zhǔn)備工作,即預(yù)處理(preprocessing)。 ANSI/ISOC規(guī)定了C編譯器必須提供哪些頭文件。1.C語言程序結(jié)構(gòu)main()函數(shù)C程序一定從main()函數(shù)開始執(zhí)行,而且main()函數(shù)有且只有一個(gè)。圓括號(hào)功能:用于識(shí)別main()是一個(gè)函數(shù)。int是main()函數(shù)的返回類型。1.C語言程序結(jié)構(gòu)分號(hào)(;) C程序采用分號(hào)隔開C語句。如示例花括號(hào)中的代碼:intq; q=1;
1.C語言程序結(jié)構(gòu)注釋 C程序中,被/**/兩個(gè)符號(hào)括起來的部分是程序的注釋。寫注釋能讓他人(包括自己)更容易明白你所寫的程序。1.C語言程序結(jié)構(gòu)花括號(hào)、函數(shù)體和塊 C語言函數(shù)中都使用花括號(hào)({})標(biāo)記函數(shù)體的開始和結(jié)束。這是規(guī)定,不能省略。只有花括號(hào)能起這種作用,圓括號(hào)(())和方括號(hào)([])都不行。1.C語言程序結(jié)構(gòu)聲明
聲明是C語言最重要的特性之一。例如intq;。該句語句表明:
其一,在函數(shù)中有一個(gè)名為q的變量(variable);
其二,int表明q是一個(gè)整數(shù)(即,沒有小數(shù)點(diǎn)或小數(shù)部分的數(shù))。1.C語言程序結(jié)構(gòu)return語句
有返回值的C函數(shù)要有return語句,沒有返回值的函數(shù)可省略return。但建議初學(xué)者保留return語句。謝謝THANKYOU主講人:何雪鋒C程序設(shè)計(jì)精品在線開放課程單元二C語言概述調(diào)試程序C語言的開發(fā)過程調(diào)試程序0102CONTENTC語言的開發(fā)過程是什么?C語言的開發(fā),需要經(jīng)過編輯、編譯、連接、和運(yùn)行四個(gè)過程。C語言的開發(fā)過程:C語言的開發(fā)過程:對(duì)代碼的調(diào)試主要目的在于,通過讓程序單步執(zhí)行,使讀者詳細(xì)的看見每一步的代碼執(zhí)行過程和結(jié)果,方便找到錯(cuò)誤信息的所在!調(diào)試程序:編寫第一個(gè)求和程序:#include<stdio.h>intmain(){ inta,b,sum=0; scanf("%d,%d",&a,&b); sum=a+b; printf("sum=%d",sum);}調(diào)試程序:第一步:添加斷點(diǎn)點(diǎn)擊第六行位置,出現(xiàn)紅鉤調(diào)試程序:第二步:點(diǎn)擊調(diào)試【F5】并點(diǎn)擊添加查看按鈕,輸入要查看的變量名調(diào)試程序:第三步:在彈出的命令行窗口中輸入1,2出現(xiàn)如圖效果調(diào)試程序:第四步:點(diǎn)擊下一行【F7】發(fā)現(xiàn)如右圖結(jié)果通過調(diào)試,我們可以觀察每一個(gè)變量值的變化。調(diào)試程序:謝謝THANKYOUC程序設(shè)計(jì)單元三語法基礎(chǔ)數(shù)據(jù)類型浮點(diǎn)型類型02CONTENT整型類型01字符型類型031.整型類型C語言的int類型
int類型是有符號(hào)整型,即int類型的值必須是整數(shù),可以是正整數(shù)、負(fù)整數(shù)或零。其取值范圍依計(jì)算機(jī)系統(tǒng)而異,但C規(guī)定int的取值范圍最小為-32768~32767。1.整型類型聲明int類型
聲明格式:數(shù)據(jù)類型變量名賦值運(yùn)算符數(shù)值 intdogs,cows,goats; intdogs=12; intcows=15,goats=14;
intdogs,cats=34; /*有效,但是這種格式很糟糕,不宜采用*/1.整型類型其他int類型C語言提供3個(gè)附屬關(guān)鍵字修飾基本整型類型:short、long和unsigned。shortint類型
編寫時(shí)簡寫為short,占用的存儲(chǔ)空間比int類型少,常用于較小數(shù)值的場合以節(jié)省空間。
如下所示定義一個(gè)short類型: shortq;1.整型類型其他int類型longint類型
編寫時(shí)可簡寫為long,占用的存儲(chǔ)空間比int多,適用于較大數(shù)值的場合。與int類似,long是有符號(hào)類型。longlongint類型可簡寫為longlong(C99標(biāo)準(zhǔn)加入)占用的儲(chǔ)存空間可能比long多,適用于更大數(shù)值的場合。該類型至少占64位。與int類似,longlong是有符號(hào)類型。1.整型類型其他int類型unsignedint類型 unsigned關(guān)鍵字表示無符號(hào)類型整型數(shù)據(jù)。編寫時(shí)可簡寫為unsigned,該類型只用于非負(fù)值的場合。2.浮點(diǎn)類型浮點(diǎn)類型
浮點(diǎn)類型能表示包括小數(shù)在內(nèi)更大范圍的數(shù)。浮點(diǎn)數(shù)的表示類似于科學(xué)記數(shù)法(即用小數(shù)乘以10的冪來表示數(shù)字)。下表列出浮點(diǎn)數(shù)的表示方法。2.浮點(diǎn)類型浮點(diǎn)類型
2.浮點(diǎn)類型聲明浮點(diǎn)類型
3.字符類型char類型char類型用于儲(chǔ)存字符(如,字母或標(biāo)點(diǎn)符號(hào))。C語言中把1字節(jié)定義為char類型占用的位(bit)數(shù),因此,無論是16位、32位還是64位系統(tǒng),都可以使用char類型。3.字符類型聲明char類型聲明格式:數(shù)據(jù)類型變量名賦值運(yùn)算符‘字符或字母’charbroiled;
/*聲明一個(gè)char類型的變量*/ broiled=‘T‘;
/*為其賦值,正確*/
broiled=T;
/*錯(cuò)誤!此時(shí)T是一個(gè)變量*/
broiled="T";
/*錯(cuò)誤!此時(shí)"T"是一個(gè)字符串*/課堂練習(xí)試著在編譯器上聲明int、float、double、char類型數(shù)據(jù)謝謝THANKYOU主講人:李煥玲C程序設(shè)計(jì)精品在線開放課程單元三語法基礎(chǔ):標(biāo)識(shí)符和命名規(guī)則C語言標(biāo)識(shí)符標(biāo)識(shí)符命名規(guī)則0102CONTENTC語言關(guān)鍵字03標(biāo)識(shí)符是用來標(biāo)識(shí)變量、函數(shù),或任何其他用戶自定義項(xiàng)目的名稱。如變量名,函數(shù)名,項(xiàng)目名等,均是標(biāo)識(shí)符。1.C語言標(biāo)識(shí)符一個(gè)標(biāo)識(shí)符由大小寫字母、下劃線及數(shù)字組成;只能以字母或下劃線開頭,不能以數(shù)字開頭;嚴(yán)格區(qū)分大小寫;不能使用C語言關(guān)鍵字或保留字。2.標(biāo)識(shí)符命名規(guī)則3.C語言關(guān)鍵字1.For2.zara3._2abc4.6m*ve5._name6.a_1237.Myname508.switch9.a23b910.while11.goto課堂練習(xí):判斷下列哪些是
合法的標(biāo)識(shí)符謝謝THANKYOU主講人:李煥玲C程序設(shè)計(jì)精品在線開放課程單元三語法基礎(chǔ):標(biāo)識(shí)符和命名規(guī)則C語言標(biāo)識(shí)符標(biāo)識(shí)符命名規(guī)則0102CONTENTC語言關(guān)鍵字03標(biāo)識(shí)符是用來標(biāo)識(shí)變量、函數(shù),或任何其他用戶自定義項(xiàng)目的名稱。如變量名,函數(shù)名,項(xiàng)目名等,均是標(biāo)識(shí)符。1.C語言標(biāo)識(shí)符一個(gè)標(biāo)識(shí)符由大小寫字母、下劃線及數(shù)字組成;只能以字母或下劃線開頭,不能以數(shù)字開頭;嚴(yán)格區(qū)分大小寫;不能使用C語言關(guān)鍵字或保留字。2.標(biāo)識(shí)符命名規(guī)則3.C語言關(guān)鍵字1.For2.zara3._2abc4.6m*ve5._name6.a_1237.Myname508.switch9.a23b910.while11.goto課堂練習(xí):判斷下列哪些是
合法的標(biāo)識(shí)符謝謝THANKYOU計(jì)算機(jī)應(yīng)用能力提高第3章
操作系統(tǒng)的基本知識(shí)及使用3.2系統(tǒng)的啟動(dòng)和退出3.1操作系統(tǒng)的功能、分類及用戶界面3.4窗口、對(duì)話框和菜單是操作3.3開始菜單3.6資源查找;設(shè)置文件及文件夾屬性3.5資源瀏覽3.8控制面板的使用3.7資源的管理3.3開始菜單開始菜單歷史一、
開始菜單開始菜單是視窗操作系統(tǒng)(Windows)中圖形用戶界面(GUI)的基本部分,可以稱為是操作系統(tǒng)的中央控制區(qū)域。在默認(rèn)狀態(tài)下,開始按鈕位于屏幕的左下方,當(dāng)前版本的開始按鈕是一個(gè)Windows標(biāo)志。Windows95中開始菜單的設(shè)計(jì)博得了增強(qiáng)了界面友好程度的好評(píng)。后來,開始按鈕和菜單標(biāo)志,成為了微軟產(chǎn)品的廣告,而“單擊這里開始”也成了微軟的一句廣告語。一、
歷史1.Windows
Chicago在早期版本的Windows中,有一個(gè)叫做MS-DOSExecutive的程序提供了文件管理和“菜單”的功能,這個(gè)程序最終Windows3.0中的文件管理器(FileManager)和程序管理器(ProgramManager)取代,而程序管理器可以說就是開始菜單的雛形。當(dāng)時(shí)的程序管理器是一個(gè)簡單的MDI界面對(duì)話框,其中有“程序組”(programgroups)等快捷方式圖標(biāo),可供用戶執(zhí)行2.Windows95Windows95是開始菜單正式出現(xiàn)的版本,它把程序管理器濃縮成為一個(gè)可隨時(shí)使用的彈出菜單,它保留了程序管理器的一些特性,比如可以一個(gè)組嵌套另一個(gè)組。
InternetExplorer4.0和Windows98允許用戶在開始菜單中拖拽,這令定制開始菜單更加簡單Windows95與Windows98的開始菜單一般都有關(guān)閉計(jì)算機(jī)、運(yùn)行、幫助、搜索、設(shè)置、文件、程序??梢酝ㄟ^開始菜單打開相應(yīng)程序。WindowsXP(前身WindowsWhistler)WindowsWhistler選擇了雙行菜單使得用戶自定義區(qū)域擴(kuò)大。用戶可以輕松的打開程序。在WindowsXP中,如本文上面所說,開始菜單加入了使用的程序快捷方式列表,“我的文檔”菜單等等,可制定的空間更大了。WindowsVista和Windows7在WindowsVista及Windows7中,開始菜單更加入了搜索功能,用戶在輸入文字之后可以列出匹配的開始菜單項(xiàng)。并且為了適應(yīng)Aero界面,開始菜單加入了Aero效果。右邊的菜單不再像Xp那樣有圖標(biāo),而是直接使用文本。Windows8在Windows8中,開始菜單不復(fù)存在。轉(zhuǎn)而替代的是“開始屏幕”。開始屏幕和開始菜單一樣包含所有程序的圖標(biāo),但是不顯示控制選項(xiàng)和最近的文檔等,僅僅作為打開程序、網(wǎng)頁的接口。而原有的其他功能需要在控制面板和其他位置尋找,對(duì)此,部分非觸摸屏筆記本電腦及臺(tái)式電腦用戶對(duì)微軟表示出極大的不滿,并稱其習(xí)慣突然遭到大幅且強(qiáng)制的改變,要求微軟重新加入開始菜單,但微軟卻置之不理,對(duì)此,一些軟件開發(fā)商卻喜聞樂見,而它們?yōu)橛脩籼峁┝酥匦抡一亻_始菜單的解決方案,其中,Start8和Startisback是較著名的兩套產(chǎn)品。開始屏幕可以在設(shè)置中自定義外觀。在Windows8中,鼠標(biāo)移動(dòng)到鼠標(biāo)移動(dòng)到屏幕最左下角直至看不到指針為止,當(dāng)出現(xiàn)開始屏幕的縮略圖時(shí),點(diǎn)擊就可以到達(dá)開始屏幕。Windows10在Windows10
技術(shù)預(yù)覽版中“開始”菜單以全新的面貌重新出現(xiàn)。而用戶可以通過自己的使用習(xí)慣選擇使用“開始”菜單還是“開始”屏幕。小結(jié)開始菜單歷史主講人:李煥玲C程序設(shè)計(jì)精品在線開放課程單元三語法基礎(chǔ):數(shù)字常量常量分類整數(shù)常量0102CONTENT浮點(diǎn)數(shù)常量03c語言中的常量是指,在程序的執(zhí)行過程中,這個(gè)量不會(huì)發(fā)生變化,是一個(gè)固定的數(shù)據(jù)。這些固定的值,又叫做字面量,可以分為整數(shù)常量,浮點(diǎn)數(shù)常量,字符常量,字符串常量及符號(hào)常量。1.常量整數(shù)常量可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制的常量。前綴指定基數(shù):0x或0X表示十六進(jìn)制,0表示八進(jìn)制,不帶前綴則默認(rèn)表示十進(jìn)制。整數(shù)常量也可以帶一個(gè)后綴,后綴是U和L的組合,U表示無符號(hào)整數(shù)(unsigned),L表示長整數(shù)(long)。后綴可以是大寫,也可以是小寫,U和L的順序任意。2.整數(shù)常量整數(shù)常量舉例:212/*合法的*/
215u/*合法的*/
0xFeeL/*合法的*/
078
/*非法的:8不是八進(jìn)制的數(shù)字*/
032UU/*非法的:不能重復(fù)后綴*//*十進(jìn)制*/
/*八進(jìn)制*/0x4b
/*十六進(jìn)制*/
/*整數(shù)*/
30u
/*無符號(hào)整數(shù)*/
30l
/*長整數(shù)*/
30ul
/*無符號(hào)長整數(shù)*/浮點(diǎn)數(shù)常量由整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分和指數(shù)部分組成??梢允褂眯?shù)形式或者指數(shù)形式來表示浮點(diǎn)常量。當(dāng)使用小數(shù)形式表示時(shí),必須包含整數(shù)部分、小數(shù)部分,或同時(shí)包含兩者。當(dāng)使用指數(shù)形式表示時(shí),必須包含小數(shù)點(diǎn)、指數(shù),或同時(shí)包含兩者。帶符號(hào)的指數(shù)是用e或E引入的。3.浮點(diǎn)數(shù)常量浮點(diǎn)常量舉例:3.14159
/*合法的*/
314159E-5L/*合法的*/
510E/*非法的:不完整的指數(shù)*/210f/*非法的:沒有小數(shù)或指數(shù)*/.e55/*非法的:缺少整數(shù)或分?jǐn)?shù)*/課堂練習(xí):下列數(shù)字常量哪些是合法的3.14
/*合法的*/
0678/*非法的:8不是八進(jìn)制的數(shù)字*/
5E/*非法的:不完整的指數(shù)*/210UL/*合法的*/.e21/*非法的:缺少整數(shù)或分?jǐn)?shù)*/謝謝THANKYOU主講人:李煥玲C程序設(shè)計(jì)精品在線開放課程單元三語法基礎(chǔ):字符常量字符常量轉(zhuǎn)義字符0102CONTENT字符串常量03字符常量是用一對(duì)單引號(hào)括起來的單個(gè)字符,如’a’。字符常量可以是一個(gè)普通的字符(例如‘x’)、一個(gè)轉(zhuǎn)義序列(例如‘\t’),或一個(gè)通用的字符(例如'\u02C0')。1.字符常量字符常量中有一類以右斜線開始的特殊常量稱轉(zhuǎn)義字符,這些轉(zhuǎn)義字符有固定的含義,被用來表示如換行符(\n)或制表符(\t)等。2.轉(zhuǎn)義字符常用轉(zhuǎn)義字符表轉(zhuǎn)義序列含義\\\字符\''字符\""字符\??字符\a警報(bào)鈴聲\b退格鍵\f換頁符\n換行符\r回車\t水平制表符\v垂直制表符轉(zhuǎn)義字符舉例:運(yùn)行結(jié)果HelloWorldWelcome'c'intmain(){
printf("Hello\tWorld\nWelcomeb\b\t\'c\'\n");}字符串字面值或常量是括在雙引號(hào)""中的。3.字符串常量"hello,dear"
"hello,\dear"
"hello,"
"d"
"ear"
"hello"“a“
"hello,"課堂練習(xí):下列哪些是合法的字符(串)常量"hello,dear"
"hello,\dear"
"hello,"
"d"
"ear"
‘a(chǎn)’//字符常量,合法“dear”//字符串常量,合法
‘\t’//轉(zhuǎn)義字符,合法‘\824’
//非法,\表示8進(jìn)制,8超出范圍‘0’
//字符常量,合法“\0”
//字符串常量,合法
謝謝THANKYOU主講人:李煥玲C程序設(shè)計(jì)精品在線開放課程單元三語法基礎(chǔ):符號(hào)常量符號(hào)常量#define定義常量0102CONTENTconst定義常量03在C語言中,可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)常量,這個(gè)標(biāo)識(shí)符稱之為符號(hào)常量。1.符號(hào)常量#define
標(biāo)識(shí)符
常量其中#define是一條預(yù)處理命令(預(yù)處理命令都以"#"開頭),稱為宏定義命令,其功能是把該標(biāo)識(shí)符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識(shí)符的地方均代之以該常量值。習(xí)慣上符號(hào)常量的標(biāo)識(shí)符用大寫字母,變量標(biāo)識(shí)符用小寫字母,以示區(qū)別。2.#define定義符號(hào)常量#include<stdio.h>#definePRICE30intmain()
{ intnum,total; num=10; total=num*PRICE; printf("total=%d",total);}符號(hào)常量舉例:運(yùn)行結(jié)果total=300使用符號(hào)常量的好處是:含義清楚;能做到“一改全改”。
用const
前綴聲明指定類型的常量,如下所示:consttypevariable=value;例如:constintMONTHS=12;這樣就可以在程序中使用MONTHS而不是12了。常量(如MONTHS)被初始化后,其值就被固定了,編譯器將不允許再修改該常量的值。3.const定義符號(hào)常量#include<stdio.h>intmain(){ constintLENGTH=10; constintWIDTH=5; constcharNEWLINE='\n'; intarea; area=LENGTH*WIDTH; printf("valueofarea:%d",area); printf("%c",NEWLINE);}符號(hào)常量舉例:運(yùn)行結(jié)果valueofarea:50謝謝THANKYOU主講人:謝崇波C程序設(shè)計(jì)精品在線開放課程單元三語法基礎(chǔ)變量定義常量02CONTENT常量0104定義變量03變量1.常量C語言的常量 C程序執(zhí)行期間不會(huì)改變的數(shù)值的量,稱為常量,又叫做字面量。常量可以是任何的基本數(shù)據(jù)類型。比如:整數(shù)常量,浮點(diǎn)常量,字符常量,或字符串常量等。1.常量整數(shù)常量212/*合法的*/215u/*合法的*/0xFeeL/*合法的*/078 /*非法的:8不是八進(jìn)制的數(shù)字*/032UU/*非法的:不能重復(fù)后綴*/85/*十進(jìn)制*/0213/*八進(jìn)制*/0x4b/*十六進(jìn)制*/30/*整數(shù)*/30u/*無符號(hào)整數(shù)*/30l/*長整數(shù)*/30ul/*無符號(hào)長整數(shù)*/1.常量浮點(diǎn)常量浮點(diǎn)常量由整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分和指數(shù)部分組成。3.14159/*合法的*/314159E-5L/*合法的*/510E/*非法的:不完整的指數(shù)*/210f/*非法的:沒有小數(shù)或指數(shù)*/.e55/*非法的:缺少整數(shù)或分?jǐn)?shù)*/1.常量字符常量字符常量是括在單引號(hào)中的。字符常量可以是一個(gè)普通的字符(例如‘x’)、一個(gè)轉(zhuǎn)義序列(例如‘\t’),或一個(gè)通用的字符(例如‘\u02C0’)。
C語言中,字符前面有反斜杠時(shí),它們就具有特殊的含義,像這種叫做轉(zhuǎn)義序列。1.常量轉(zhuǎn)義序列轉(zhuǎn)義序列含義\\\字符\''字符\""字符\??字符\a警報(bào)鈴聲\b退格鍵\f換頁符\n換行符\r回車\t水平制表符\v垂直制表符\ooo一到三位的八進(jìn)制數(shù)\xhh...一個(gè)或多個(gè)數(shù)字的十六進(jìn)制數(shù)1.常量字符串常量字符串字面值或常量是括在雙引號(hào)“”中的。下面是一些字符串常量的定義。"hello,dear“"hello,\dear""hello,""d""ear"2.定義常量常量定義在C語言中,有兩種簡單的定義常量的方式:使用#define預(yù)處理器使用const關(guān)鍵字2.定義常量常量定義——#define預(yù)處理器#include<stdio.h>#definePI3.1415926#defineNEWLINE'\n'intmain(){ return0;}2.定義常量常量定義——const關(guān)鍵字#include<stdio.h>intmain(){ constfloatPI=3.1415926; constcharNEWLINE='\n’; return0;}3.變量變量變量是C程序可操作的存儲(chǔ)區(qū)的名稱,用來存儲(chǔ)數(shù)據(jù)。變量的名稱可以由字母、數(shù)字或下劃線組成。但它必須以字母或下劃線開頭。變量類型整型變量,浮點(diǎn)型變量,字符型變量等。3.變量定義定義變量#include<stdio.h>intmain(){ inti,j,count_one; charc,ch1; floatf_one,salary; return0;}課堂練習(xí)試著在編譯器上定義不同類型的常量和變量。謝謝THANKYOUC程序設(shè)計(jì)單元四格式化輸入輸出格式化輸入scanf()函數(shù)介紹scanf()格式控制符0102CONTENT格式化輸入案例03格式化輸入是什么?scanf()函數(shù)是通用終端格式化輸入函數(shù),按指定格式依次讀取用戶從鍵盤上輸入的一系列數(shù)據(jù),并按對(duì)應(yīng)的格式賦值給一系列內(nèi)存變量。scanf()函數(shù)介紹:
scanf("<格式化字符串>",<地址表>);scanf()語法格式:案例1:輸入abc三個(gè)值1:#include<stdio.h>或#include“stdio.h”
在使用C語言庫函數(shù)時(shí),要用預(yù)編譯命令#include將有關(guān)“頭文件”引入源文件中,使用標(biāo)準(zhǔn)輸入輸出時(shí)要用到“stdio.h”文件,因此如需引入如上預(yù)編譯指令。
兩種寫法的區(qū)別:
前者:系統(tǒng)將直接在系統(tǒng)的庫文件目錄下去找stdio.h文件;后者:先在用戶當(dāng)前目錄下找,沒有再去系統(tǒng)庫文件目錄下找。
案例1解析:2:scanf("%d%d%d",&a,&b,&c);
格式化字符串沒有非格式化字符作為輸入數(shù)據(jù)的間隔,則可以使用空格、TAB、回車作為輸入數(shù)據(jù)的間隔。格式化字符串“%d%d%d”沒有指定數(shù)據(jù)間隔,因此輸入數(shù)據(jù)時(shí),我們用空格分隔。如果使用“
,
”來分隔格式串,“%d,%d,%d”
相應(yīng)的輸入時(shí)也要添加“
,”。案例1解析:3:scanf("%d%d%d",&a,&b,&c);&a,&b,&c,其中&表示地址運(yùn)算符,&a表示變量a的地址,例如x=666;x是變量名,666是變量值,&x表示存值的。為什么scanf的輸入變量需要加&?因?yàn)閟canf需要的是指針變量(因此指針變量不需要地址符),而普通變量需要通過地址符轉(zhuǎn)譯為指針使用。案例1解析:格式控制符的一般形式:%【*】【輸入數(shù)據(jù)寬度】【長度】【類型】格式控制符:“*”:用來表示跳過相應(yīng)寬度的數(shù)據(jù)。格式控制符:將“12”賦給a,“67”賦給b。第二個(gè)數(shù)據(jù)“345”被跳過不賦給任何變量?!癿”:表示輸入的寬度,系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù)。格式控制符:系統(tǒng)自動(dòng)將123賦給a,456賦給b?!伴L度”:格式符為l和h,l表示長整性數(shù)據(jù)(如%ld)和雙精度浮點(diǎn)數(shù)(如%lf),h表示短整型數(shù)據(jù)。格式控制符:數(shù)據(jù)類型:部分常用字符格式如下:%d:讀入十進(jìn)制整數(shù)%f:讀入一個(gè)浮點(diǎn)數(shù)%s:讀入一個(gè)字符串%c:讀入一個(gè)字符
%x,%X
讀入十六進(jìn)制整數(shù)%o:
讀入八進(jìn)制整數(shù)%p:讀入一個(gè)指針
練習(xí)題:1.根據(jù)格式字符的含義從輸入流中獲取數(shù)據(jù),當(dāng)輸入流中數(shù)據(jù)類型與格式字符要求不符時(shí),就認(rèn)為這一項(xiàng)結(jié)束。
練習(xí)題:2.根據(jù)格式項(xiàng)中指定的域?qū)挿指舫鰯?shù)據(jù)項(xiàng)。
則scanf函數(shù)在接收數(shù)據(jù)時(shí)根據(jù)域?qū)挵?2賦值給a,345賦值給b,6789賦值給c。練習(xí)題:3.隱示分隔符的使用空格、制表符('\t')、換行符('\n')都是C語言認(rèn)定的數(shù)據(jù)分隔符。
輸入整數(shù)12和34之間,我們用空格分隔開。練習(xí)題:4.顯示分隔符。在scanf函數(shù)的兩個(gè)格式說明項(xiàng)間有一個(gè)或多個(gè)普通字符,那么在輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間也必須以這一個(gè)或多個(gè)字符分隔。
輸入數(shù)據(jù)的時(shí)候,用“|”分隔數(shù)據(jù)。練習(xí)題:5.在用“%c”格式輸入字符時(shí),空格字符和轉(zhuǎn)義字符都作為有效字符輸入。
輸入:abc。字符‘a(chǎn)’賦給c1,字符‘
’賦給c2,字符'b'
賦給c3。。注意事項(xiàng):scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。例如,如果a、b為整型變量,則
scanf("%d,%d",a,b);
是不對(duì)的,應(yīng)將“a,b”改為“&a,&b”。
謝謝THANKYOU主講人:何雪鋒C程序設(shè)計(jì)精品在線開放課程單元四格式化輸入輸出格式化輸出printf()函數(shù)介紹printf()函數(shù)的字符格式0102CONTENT格式化輸出是什么?在程序的使用中,我們經(jīng)??梢钥吹倪@么一個(gè)場景:用戶需要輸入數(shù)據(jù),經(jīng)過程序運(yùn)算,得到結(jié)果后輸出。在C語言中,輸入數(shù)據(jù)和輸出數(shù)據(jù)都是由庫函數(shù)完成的。比如printf()、scanf()。輸出輸入:C語言程序運(yùn)算的結(jié)果在內(nèi)存中,我們需要將其輸出到指定設(shè)備中,我們才可以看到數(shù)據(jù)。printf是printformat的縮寫,意思是“格式化打印”?!按蛴 钡囊馑季褪窃谄聊簧巷@示內(nèi)容,所以我們稱printf是格式化輸出。printf()函數(shù)介紹:printf("<格式化字符串>",<輸出列表>);格式化字符串:用雙引號(hào)括起來普通字符,將其原樣輸出到屏幕上;以"%"開頭的格式字符,將數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出到屏幕上。輸出列表:需要輸出到屏幕的數(shù)據(jù),數(shù)據(jù)可以是常量、變量或者表達(dá)式。printf()語法格式:輸出變量a的值#include<stdio.h>intmain(){ inta=2; printf("a的值是%d",a); return0;}printf()案例:執(zhí)行以上程序,輸出結(jié)果為:
a的值是2printf()函數(shù)的字符格式:格式化字符串中如果包含以“%”開頭的格式字符,printf()函數(shù)將數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出到屏幕上。格式化字符串中包含三部分:原樣輸出內(nèi)容、控制字符、轉(zhuǎn)義字符。printf()函數(shù)的字符格式:常見的轉(zhuǎn)義字符:\n:換行,將當(dāng)前位置移到下一行開頭\t:水平制表,跳到下一個(gè)Tab位置\\:代表一個(gè)反斜線字符'\'轉(zhuǎn)義字符常見的字符格式:%d:輸出十進(jìn)制整數(shù)%ld:輸出十進(jìn)制長整數(shù)%f:輸出浮點(diǎn)數(shù)%c:輸出單個(gè)字符%s:輸出字符串%p:輸出指針值等%x,%X
以十六進(jìn)制無符號(hào)表示的整數(shù)
%0
以八進(jìn)制無符號(hào)表示的整數(shù)printf()函數(shù)的字符格式:控制字符:類型符printf()函數(shù)的字符格式:printf()中的格式控制符可以控制輸出數(shù)據(jù)在屏幕上對(duì)齊方式和輸出寬度。例如:%md:表示輸出整數(shù)占m位,右對(duì)齊;%-md:表示輸出整數(shù)占m位,左對(duì)齊;%m.nf:表示輸出共占m位,其中n位小數(shù),右對(duì)齊;%-m.nf:表示輸出共占m位,其中n位小數(shù),左對(duì)齊;-表示左對(duì)齊,+或沒有表示右對(duì)齊控制字符:寬度和對(duì)齊printf()函數(shù)的案例:案例:輸出下面由數(shù)字組成的圖形。6 6666666.666.6printf()函數(shù)的案例:#include<stdio.h>intmain(){ printf("%10d\t%-10d\n",6,6); printf("%10d\t%-10d\n",66,66); printf("%10.1f\t%-10.1f\n",66.6,66.6); return0;}%10d:輸出整數(shù),占10位,右對(duì)齊\t:制表符%-10d:輸出整數(shù),占10位,左對(duì)齊\n:換行%10.1f:輸出浮點(diǎn)數(shù),共10位,其中1位小數(shù)點(diǎn),右對(duì)齊%-10.1f:輸出浮點(diǎn)數(shù),共10位,其中1位小數(shù)點(diǎn),左對(duì)齊謝謝THANKYOU主講人:張瑋C程序設(shè)計(jì)精品在線開放課程單元四格式化輸入/輸出非格式化I/O非格式化輸入函數(shù)非格式化輸出函數(shù)0102CONTENT1.非格式化輸入函數(shù)函數(shù)功能:函數(shù)格式:getch();getche();getchar();從標(biāo)準(zhǔn)輸入設(shè)備輸入一個(gè)字符。格式功能回顯功能結(jié)束輸入方式頭文件getch()從標(biāo)準(zhǔn)輸入設(shè)備輸入一個(gè)字符。無無需回車conio.hgetche()從標(biāo)準(zhǔn)輸入設(shè)備輸入一個(gè)字符。有無需回車conio.hgetchar()從標(biāo)準(zhǔn)輸入設(shè)備輸入一個(gè)字符。有需回車stdio.h非格式化輸入函數(shù)對(duì)比注意說明:(1)該類函數(shù)沒有參數(shù),函數(shù)的返回值是從輸入設(shè)備得到的字符。(2)getch()函數(shù)的另一功能是還可用于程序暫停。(3)getchar()函數(shù)也可以接收回車符。運(yùn)行結(jié)果getchar()函數(shù)舉例intmain(){}
ch=YY↙ch=getchar();charch;
printf("ch=%c\n",ch);ch1=getchar();charch1,ch2;
printf("ch1=%c,ch2=%c\n",ch1,ch2);ch2=getchar();ch1=X,ch2=↙X↙getchar();ch1=X,ch2=YX↙Y↙運(yùn)行結(jié)果getch()和getche()函數(shù)舉例intmain(){}
ch=YYch=getche();charch;printf("ch=%c\n",ch);charch;printf(“\nPressanykeytocontinue…");Pressanykeytocontinue…getch();2.非格式化輸出函數(shù)函數(shù)功能:函數(shù)格式:putchar(ch);其中:ch可以是一個(gè)字符型常量、變量或者是一個(gè)不大于127的整型常量或者變量,也可以是一個(gè)轉(zhuǎn)義字符。向標(biāo)準(zhǔn)輸出設(shè)備輸出一個(gè)字符。注意說明:(1)輸出字符型變量。運(yùn)行結(jié)果語句編寫intmain(){}(2)輸出字符型或者整型常量。Y(3)輸出轉(zhuǎn)義字符。putchar(ch);
charch='Y';
putchar(‘I');
putchar(70);IF
putchar('\n');putchar('\007');換行響鈴
謝謝THANKYOUC程序設(shè)計(jì)單元五運(yùn)算符與表達(dá)式5.1運(yùn)算符的分類運(yùn)算符的定義運(yùn)算符的分類運(yùn)算符優(yōu)先級(jí)運(yùn)算符結(jié)合性01020304CONTENT什么是運(yùn)算符?運(yùn)算符是一種特殊的符號(hào)或函數(shù),它們具有一個(gè)或多個(gè)操作數(shù)并返回相應(yīng)的值。操作數(shù)是被運(yùn)算符用作輸入的值,通常是字面值、變量或表達(dá)式。什么是運(yùn)算符?運(yùn)算符的例子:2+3,其操作數(shù)是2和3,而運(yùn)算符則是“+”。4-5,其操作數(shù)是4和5,而運(yùn)算符則是“-”。6*7,其操作數(shù)是6和7,而運(yùn)算符則是“*”。8/9,其操作數(shù)是8和9,而運(yùn)算符則是“/”。10%7,其操作數(shù)是10和7,而運(yùn)算符則是“%”。運(yùn)算符有哪些+-*/%==!=><>=<=&&||!=+=-=*=/=%=<<=>>=&=^=|=?:sizeof() &*++--運(yùn)算符的分類+-*/%==!=><>=<=&&||!算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符=、+=、-=、*=、/=、%=
賦值運(yùn)算符?:條件運(yùn)算符sizeof() &++--其他運(yùn)算符運(yùn)算符通過功能特性的不同,我們可以將運(yùn)算符分為6大類,分別是條件運(yùn)算符,算術(shù)運(yùn)算符,賦值運(yùn)算符,邏輯運(yùn)算符,關(guān)系運(yùn)算符,其他運(yùn)算符運(yùn)算符的分類運(yùn)算符優(yōu)先級(jí)
在一個(gè)表達(dá)式中可能包含多個(gè)由不同運(yùn)算符連接起來的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對(duì)象;由于表達(dá)式有多種運(yùn)算,不同的結(jié)合順序可能得出不同結(jié)果甚至出現(xiàn)錯(cuò)誤運(yùn)算結(jié)果,因?yàn)楫?dāng)表達(dá)式中含多種運(yùn)算時(shí),必須按一定順序進(jìn)行結(jié)合,才能保證運(yùn)算的合理性和結(jié)果的正確性、唯一性。
在一個(gè)表達(dá)式中可能包含多個(gè)有不同運(yùn)算符連接起來的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對(duì)象;由于表達(dá)式有多種運(yùn)算,不同的結(jié)合順序可能得出不同結(jié)果甚至出現(xiàn)錯(cuò)誤運(yùn)算錯(cuò)誤,因?yàn)楫?dāng)表達(dá)式中含多種運(yùn)算時(shí),必須按一定順序進(jìn)行結(jié)合,才能保證運(yùn)算的合理性和結(jié)果的正確性、唯一性。運(yùn)算符優(yōu)先級(jí)的定義!>算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>邏輯運(yùn)算符>賦值運(yùn)算符。(邏輯運(yùn)算符中“邏輯非!”除外。)運(yùn)算符優(yōu)先級(jí)順序類似于數(shù)學(xué)公式中的先乘除,后加減,有括號(hào)先算括號(hào)里面的。優(yōu)先級(jí)方便理解C語言優(yōu)先級(jí)詳細(xì)圖優(yōu)先級(jí)運(yùn)算符1后綴運(yùn)算符[]()·->++--(類型名稱){列表}2一元運(yùn)算符++--!~+-*&
sizeof_Alignof3類型轉(zhuǎn)換運(yùn)算符(類型名稱)4乘除法運(yùn)算符*/%5加減法運(yùn)算符+-6移位運(yùn)算符<<>>7關(guān)系運(yùn)算符<<=>>=8相等運(yùn)算符==!=優(yōu)先級(jí)運(yùn)算符9位運(yùn)算符AND
&10位運(yùn)算符XOR^11位運(yùn)算符OR|12邏輯運(yùn)算符AND&&13邏輯運(yùn)算符OR||14條件運(yùn)算符
?:15賦值運(yùn)算符=+=-=*=/=%=&=^=|=<<=>>=16逗號(hào)運(yùn)算符,運(yùn)算符結(jié)合性當(dāng)一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符優(yōu)先級(jí)別相同時(shí),則按運(yùn)算符的結(jié)合性來確定表達(dá)式的運(yùn)算順序。什么是結(jié)合性運(yùn)算符的結(jié)合性結(jié)合性的分類自左至右自右至左運(yùn)算符的結(jié)合性運(yùn)算符結(jié)合方向說明[]左到右
()
.
->
-右到左單目運(yùn)算符(類型)
++單目運(yùn)算符--單目運(yùn)算符*單目運(yùn)算符&單目運(yùn)算符!單目運(yùn)算符~單目運(yùn)算符sizeof
運(yùn)算符結(jié)合方向說明/左到右雙目運(yùn)算符*雙目運(yùn)算符%雙目運(yùn)算符+左到右雙目運(yùn)算符-雙目運(yùn)算符<<左到右雙目運(yùn)算符>>雙目運(yùn)算符>左到右雙目運(yùn)算符>=雙目運(yùn)算符<雙目運(yùn)算符<=雙目運(yùn)算符==左到右雙目運(yùn)算符!=雙目運(yùn)算符&左到右雙目運(yùn)算符運(yùn)算符結(jié)合方向說明^左到右雙目運(yùn)算符|左到右雙目運(yùn)算符&&左到右雙目運(yùn)算符||左到右雙目運(yùn)算符?:右到左三目運(yùn)算符/=右到左
*=
%=
+=
-=
<<=
>>=
&=
^=
,左到右
+結(jié)合方向只有三個(gè)是從右往左,其余都是從左往右+另外兩個(gè)從右往左結(jié)合的運(yùn)算符也很好記,因?yàn)樗鼈兒芴厥猓阂粋€(gè)是單目運(yùn)算符,一個(gè)是三目運(yùn)算符-所有雙目運(yùn)算符中只有賦值運(yùn)算符的結(jié)合方向是從右往左總結(jié)-C語言中有且只有一個(gè)三目運(yùn)算符+逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低,要記住-優(yōu)先級(jí):算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>邏輯運(yùn)算符>賦值運(yùn)算符。邏輯運(yùn)算符中“邏輯非!”除外謝謝THANKYOU主講人:謝宇C程序設(shè)計(jì)精品在線開放課程單元五運(yùn)算符與表達(dá)式5.2算術(shù)運(yùn)算符+加-減*乘/除01020304CONTENT05%余02030401算術(shù)運(yùn)算符按操作數(shù)個(gè)數(shù)可分為一元運(yùn)算符和二元運(yùn)算符。一元運(yùn)算符的優(yōu)先級(jí)一般高于二元運(yùn)算符。一元運(yùn)算符:+(正號(hào))、-(負(fù)號(hào))、++(增1)、--(減1)。二元運(yùn)算符:+(求和)、-(求差)、*(求積)、/(求商)、%(求余)。
符號(hào)運(yùn)算符:+(正號(hào))、-(負(fù)號(hào))
'+'(正號(hào))表示不改變操作數(shù)的值及符號(hào),如23也可表示為+23,編譯器不報(bào)錯(cuò)。
'-'(負(fù)號(hào))可用于得到一個(gè)數(shù)的相反數(shù)。例如:
inta=-5;
intb=-a;下面我們一起來看一道例題:在ASCLL中已知C1為65時(shí),求C2為多少?本題計(jì)算結(jié)果為Ab*(乘)兩數(shù)相乘,交換位置其結(jié)果不變,即a×b=b×a。三個(gè)數(shù)相乘,前兩個(gè)數(shù)先乘與后兩個(gè)數(shù)先乘,其結(jié)果相等,即:(ab)c=a(bc)。當(dāng)乘數(shù)分別分配給兩個(gè)加數(shù),其結(jié)果相同,即:(ac)+(bc)=(a+b)c。例2:當(dāng)半徑為6時(shí),圓的周長和面積?02030401/(除)當(dāng)運(yùn)算符/的操作數(shù)中有一個(gè)或兩個(gè)浮點(diǎn)數(shù)時(shí),結(jié)果與數(shù)學(xué)中除法運(yùn)算相同,包含整數(shù)部分和小數(shù)部分。例如:8/2.5結(jié)果為3.2。
當(dāng)運(yùn)算符/的操作數(shù)(被除數(shù)和除數(shù))均為整數(shù)時(shí),結(jié)果為取商(取整)。例如:16/5結(jié)果為兩數(shù)相除的商3。運(yùn)算符%兩操作數(shù)都必須為整數(shù),否則語法錯(cuò)誤。當(dāng)運(yùn)算符%的操作數(shù)中有一個(gè)或兩個(gè)浮點(diǎn)數(shù)時(shí),語法錯(cuò)誤當(dāng)運(yùn)算符%的操作數(shù)均為整數(shù)時(shí),結(jié)果取余。余數(shù)的符號(hào)取決于被除數(shù)%(余)例如:16%5結(jié)果為兩數(shù)相除的余數(shù)1。當(dāng)運(yùn)算符%的操作數(shù)中有一個(gè)或兩個(gè)浮點(diǎn)數(shù)時(shí),語法錯(cuò)誤。例如:8%2.5語法錯(cuò)誤。即運(yùn)算符%兩操作數(shù)都必須為整數(shù),否則語法錯(cuò)誤。在程序設(shè)計(jì)中,經(jīng)常使用求商和求余運(yùn)算符分解整數(shù)的各位數(shù)字。例如,分解十進(jìn)制整數(shù)123的個(gè)位、十位和百位數(shù)字??梢杂卸喾N不同的分解方案,下面是其中一種方案。
inta=123,g,s,b;
//g:個(gè)位s:十位b:百位
g=a%10;
//g=3
s=a/10%10;
//s=2
b=a/100;
//b=l謝謝THANKYOU主講人:謝宇C程序設(shè)計(jì)精品在線開放課程單元五運(yùn)算符與表達(dá)式5.3關(guān)系運(yùn)算符>大于01020304CONTENT<小于>=大于或等于<=小于或等于05==等于06!=不等于在C語言中,同邏輯表達(dá)式一樣,關(guān)系表達(dá)式的值也為邏輯值,即布爾型(bool),取值為真或假。由關(guān)系運(yùn)算符組成的式子為關(guān)系表達(dá)式,如a>b即為關(guān)系表達(dá)式,算術(shù)、邏輯、關(guān)系、賦值運(yùn)算符的優(yōu)先級(jí)順序?yàn)椋哼壿嫹?>算術(shù)>關(guān)系>邏輯與&&、邏輯或||>賦值=例如:inta=3,b=5;則有:a>b:邏輯假,其值為0;a>=b:邏輯假,其值為0;a<b:邏輯真,其值為1;a<=b:邏輯真,其值為1;a==b:邏輯假,其值為0;a!=b:邏輯真,其值為1;分析以下程序,輸出其運(yùn)行結(jié)果。#include<stdio.h>intmain(void){inta=0,b=1,c;c=a>=b||b++>1;printf("a=%d,b=%d,c=%d\n",a,b,c);return0;}代碼分析:
根據(jù)運(yùn)算符的優(yōu)先級(jí),表達(dá)式a>=b||b++>1等價(jià)于(a>=b)||(b++>1)。a>=b為假,其值為0,邏輯或||不會(huì)發(fā)生“短路”。
接著計(jì)算邏輯或||的右操作數(shù)b++>1,由于是后綴加1,故先取b的原值1與1比較大小,由于1>1為假,故邏輯或||的右操作數(shù)也為假,假|(zhì)|假=假,故c的值為0。執(zhí)行了一次b++運(yùn)算,故b的自身值增了1,變?yōu)?。
運(yùn)行結(jié)果為: a=0,b=2,c=0
關(guān)系運(yùn)算符主要用于測試操作數(shù)之間的各種關(guān)系。
關(guān)系操作符的結(jié)果是整型的,所以它可以賦值給整型變量,但通常它們用于if或while語句中,作為測試表達(dá)式。謝謝THANKYOU主講人:謝宇C程序設(shè)計(jì)精品在線開放課程單元五運(yùn)算符與表達(dá)式5.4邏輯運(yùn)算符!邏輯非||邏輯或010203CONTENT&&邏輯與
以上三種邏輯運(yùn)算符中,邏輯非“!”的優(yōu)先級(jí)最高,邏輯與“&&”次之,邏輯或“||”最低。即算術(shù)、邏輯、賦值運(yùn)算符的優(yōu)先級(jí)順序?yàn)椋?/p>
邏輯非!>算術(shù)>邏輯與&&、邏輯或||>賦值=邏輯運(yùn)算符的優(yōu)先級(jí):
邏輯表達(dá)式的值為邏輯值,即布爾型(bool),該類型為C99新增的,一些編譯器可能還不支持該類型。
邏輯值分為邏輯真值和邏輯假值。一般情況下,在判斷時(shí),僅有零值被判斷為邏輯假值(false),一切非零值均可被判斷為邏輯真值(true);在存儲(chǔ)和表示時(shí),通常,使用1表示邏輯真值,0表示邏輯假值。邏輯表達(dá)式的類型與值:
邏輯與&&運(yùn)算符的運(yùn)算規(guī)則:只有兩個(gè)操作數(shù)均為邏輯真時(shí),結(jié)果才為真。其余情況,結(jié)果均為假。
邏輯或||運(yùn)算符的運(yùn)算規(guī)則:只有兩個(gè)操作數(shù)均為邏輯假時(shí),結(jié)果才為假。其余情況,結(jié)果均為真。邏輯運(yùn)算符的運(yùn)算規(guī)則:例如,設(shè)有定義語句: inta=3,b=5;
則有: !a:由于a非零,為真,!a為假,其值為0。 a||b:由于a和b均非零,均為真,故邏輯或的結(jié)果為真,其值為1。 a&&b:由于a和b均非零,均為真,故邏輯與的結(jié)果為真,其值為1。 !a||b&&2:由于邏輯非!優(yōu)先級(jí)最高,首先與a結(jié)合,而&&優(yōu)先級(jí)高于||,相當(dāng)于(!a)||(b&&2),即0||1為真,其值為1。邏輯與&&、邏輯或||均有“短路”特性:
邏輯與&&“短路”:當(dāng)邏輯與&&的左操作數(shù)為邏輯假時(shí),就足以判斷該邏輯運(yùn)算的結(jié)果為假了,故右操作數(shù)就不再被執(zhí)行。
邏輯或||“短路”:當(dāng)邏輯或||的左操作數(shù)為邏輯真時(shí),就足以判斷該邏輯運(yùn)算的結(jié)果為真了,故右操作數(shù)就不再被執(zhí)行。邏輯運(yùn)算符的特性: inta=1,b=2,c; c=a||++b; printf("a=%d,b=%d,c=%d\n",a,b,c);
由于a為非零值,即為真,而當(dāng)邏輯或||的左操作數(shù)為真時(shí),就足以判斷該邏輯操作的結(jié)果為真。故發(fā)生“短路”,即右操作數(shù)++b不被執(zhí)行。輸出結(jié)果為:a=1,b=2,c=1。例如:#include<stdio.h>intmain(void){inta=0,b=2,c;c=!a||++b&&a--;printf("a=%d,b=%d,c=%d\n",a,b,c);return0;}分析以下程序,輸出其運(yùn)行結(jié)果:
混合表達(dá)式c=!a||++b&&a--中含有的運(yùn)算符有邏輯非!、邏輯或||、邏輯與&&、算術(shù)前綴++、算術(shù)后綴--、賦值號(hào)=等6個(gè)運(yùn)算符。邏輯運(yùn)算符、算術(shù)運(yùn)算符、賦值運(yùn)算符的優(yōu)先級(jí)的關(guān)系為:邏輯非!>算術(shù)>邏輯與&&、邏輯或||>賦值=
由于該表達(dá)式中賦值運(yùn)算符優(yōu)先級(jí)最低,故最后賦值。代碼分析:
根據(jù)優(yōu)先級(jí)的高低,表達(dá)式!a||++b&&a--等價(jià)于(!a)||((++b)&&(a--)),而邏輯或||的左操作數(shù)!a為真,此時(shí)足以判斷該表達(dá)式的值為真。故發(fā)生“短路”,即||的整個(gè)右操作數(shù)((++b)&&(a--))不再被執(zhí)行。
運(yùn)行結(jié)果為: a=0,b=2,c=1代碼分析:謝謝THANKYOU主講人:謝宇C程序設(shè)計(jì)精品在線開放課程單元五運(yùn)算符與表達(dá)式
5.5賦值運(yùn)算符基本賦值運(yùn)算符復(fù)合賦值運(yùn)算符12CONTENT
基本賦值運(yùn)算符基本賦值運(yùn)算符:=。復(fù)合賦值運(yùn)算符: +=(加賦值)、-=(減賦值)、*=(乘賦值)、/=(除賦值)、%=(求余賦值)、 <<=(左移賦值)、>>=(右移賦值)、&=(按位與賦值)、|=(按位或賦值)、 *A=(按位異或賦值)。賦值操作的優(yōu)先級(jí)較低,僅高于逗號(hào)運(yùn)算符。基本賦值=如inta=5;表示把5賦值給整型變量a,不能讀成“a等于5”。賦值號(hào)左邊必須為左值,賦值號(hào)右邊的右值可以為常量、變量或表達(dá)式。如下賦值均是正確的。inta,b;//定義整型變量a和ba=3;//把常量3賦值給a,右值為常量b=a;//把變量a的值賦給b,右值為變量b=a+3;//把求和表達(dá)式a+3的值賦給b,右值為表達(dá)式復(fù)合賦值運(yùn)算符
復(fù)合賦值:+=、-=、*=、/=、%= a+=b;等價(jià)于a=a+b; a-=b;等價(jià)于a=a-b; a*=b;等價(jià)于a=a*b; a/=b;等價(jià)于a=a/b;
例如: inta=5; a+=3;//等價(jià)于a=a+3;
由于賦值運(yùn)算符的優(yōu)先級(jí)很低,僅高于逗號(hào)運(yùn)算符,故最后做賦值操作。 a+=3+2;等價(jià)于a=a+(3+2);.#include<stdio.h>intmain(void){inta=l,b=2,c=3;//定義三個(gè)整型變量,并初始化floatd=10.2f;//定義float變量d,用浮點(diǎn)常量10.2初始化a+=1;//相當(dāng)于a=a+1;即a=1+1=2b-=a+5;c*=a-4;printf("%d,%d,%d,%f",a,b,c,d/=a);return0;}代碼分析:1)floatd=10.2f;如果改為floatd=10.2;雖然沒有語法錯(cuò)誤,可以正常運(yùn)行,但一般編譯器會(huì)提示warning(警告),原因是編譯器會(huì)把10.2等常量默認(rèn)當(dāng)成double型常量處理,與d的類型float不一致,故出現(xiàn)警告。因此可通過加f明確10.2為float型常量。2)a+=1;相當(dāng)于a=a+1;求出a為2。3)b-=a+5;由于賦值運(yùn)算符的優(yōu)先級(jí)低于算術(shù)求和運(yùn)算符,故該語句等價(jià)于b=b-(a+5);,即b=2-(2+5);,得b=-5;。同理,c*=a-4;即c=3*(2-4);,故c=-60。4)printf("%d,%d,%d,%f",a,b,c,d/=a);由于輸出列表中a、b和c均為int型變量,故輸出格式占位符均為%d;輸出列表中第4項(xiàng)為表達(dá)式,其表達(dá)式的值為d=d/a=10.2f/2=5.1,為浮點(diǎn)類型,輸出格式占位符為%f,在編譯環(huán)境中,float類型為小數(shù)點(diǎn)后保留6位數(shù)字。運(yùn)行結(jié)果為:2,-5,-6,5.100000本節(jié)結(jié)束謝謝THANKYOU主講人:謝宇C程序設(shè)計(jì)精品在線開放課程單元五
運(yùn)算符與表達(dá)式5.6條件運(yùn)算符
條件運(yùn)算符(conditionaloperator)有時(shí)候也稱為三元運(yùn)算符(ternaryoperator,或者trinaryoperator),因?yàn)樗俏ㄒ恍枰?個(gè)操作數(shù)的運(yùn)算符:它的符號(hào)是?,語法格式如下:
條件?表達(dá)式1:表達(dá)式2
在計(jì)算完條件之后,有一個(gè)序列點(diǎn)。如果結(jié)果不等于0(換句話說,如果條件計(jì)算結(jié)果為true),則只有第二個(gè)操作數(shù)(也就是表達(dá)式1)會(huì)被計(jì)算,并且表達(dá)式1的值就是整個(gè)表達(dá)式的結(jié)果。
另一方面,如果結(jié)果為0(如果條件計(jì)算結(jié)果為false),那么只有第三個(gè)操作數(shù)(也就是表達(dá)式2)會(huì)被計(jì)算,并且表達(dá)式2的值就是整個(gè)表達(dá)式的結(jié)果。以這種方式,條件運(yùn)算符代表了在程序流中的條件式跳轉(zhuǎn),因此,有時(shí)候可以與if-else語句相互替代。
找出兩個(gè)數(shù)中的最大者:inlineintiMax(inta,intb){returna>=b?a:b;}
函數(shù)iMax()可以用if-else語句改寫:inlineintiMax(inta,intb){if(a>=b)returna;elsereturnb;}
條件運(yùn)算符具有相當(dāng)?shù)偷膬?yōu)先級(jí),只有賦值和逗號(hào)運(yùn)算符的優(yōu)先級(jí)比它低。因此,下面的語句不需要括號(hào): distance=x<y?y-x:x-y;
條件運(yùn)算符的第一個(gè)操作數(shù)是條件,必須是標(biāo)量類型,也就是算術(shù)類型或指針類型。第二個(gè)和第三個(gè)操作數(shù)分別是表達(dá)式1和表達(dá)式2,必須滿足下面條件之一: (1)兩個(gè)可選表達(dá)式都具有算術(shù)類型,在這種情況下,整個(gè)運(yùn)算的最終結(jié)果類型,是后面兩個(gè)操作數(shù)進(jìn)行尋常算術(shù)轉(zhuǎn)換的類型。 (2)兩個(gè)可選操作數(shù)都有相同的結(jié)構(gòu)或聯(lián)合類型,或者void類型。整個(gè)運(yùn)算的最終結(jié)果類型也屬于與這兩個(gè)操作數(shù)一樣的類型。 (3)兩個(gè)可選操作數(shù)都是指針,并且符合下面的一個(gè)條件:
兩個(gè)指針屬于相同類型。整個(gè)運(yùn)算的結(jié)果也屬于相同的類型。
其中一個(gè)操作數(shù)是空指針常量。整個(gè)運(yùn)算的結(jié)果屬于另一個(gè)操作數(shù)類型。
其中一個(gè)操作數(shù)是對(duì)象指針,另一個(gè)是指向void指針。整個(gè)運(yùn)算的結(jié)果屬于void*類型。
兩個(gè)指針可以指向具有不同限定符的類型。在這種情況下,整個(gè)運(yùn)算的結(jié)果是一個(gè)指針,其所指的對(duì)象類型同時(shí)具備兩個(gè)可選操作數(shù)的類型限定符。謝謝THANKYOU主講人:謝宇C程序設(shè)計(jì)精品在線開放課程單元五運(yùn)算符與表達(dá)式5.7其它運(yùn)算符自增運(yùn)算符逗號(hào)運(yùn)算符0102目錄自增量運(yùn)算符:++(增1)、--(減1)自增量運(yùn)算符均有兩種使用形式,++a、a++及--a、a--,也稱為前綴形式和后綴形式。左值(lvalue)和右值(rvalue)12inta;//整型變量a可以作為左值使用floatb;//單精度浮點(diǎn)型變量b也可作為左值使用constintc;//因?yàn)槌W兞縞的值不允許改變,故不可作為左值使用計(jì)算機(jī)內(nèi)存中可修改的存儲(chǔ)對(duì)象,一般稱為左值或lvalue把可賦值給左值的量稱為右值或rvalue。右值可以是常量、變量或者表達(dá)式。inta,b;//定義整型變量a和ba=2;//把常量2作為右值,賦給左值ab=a;//把變量a作為右值,賦給左值bb=a+3;//
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌開發(fā)合作合同范本
- 商用電改民用電申請(qǐng)書范文
- 入宣傳部申請(qǐng)書800字大學(xué)生
- 勞務(wù)外包項(xiàng)目承包合同范本
- 為規(guī)范合同范本作用
- 商品店員工合同范本
- 商場臨時(shí)租用合同范本
- 土地承包后轉(zhuǎn)租合同范本
- 創(chuàng)新驅(qū)動(dòng)發(fā)展
- 古建用工合同范本
- 幼兒園班級(jí)管理孫玉潔
- 2024解析:第九章大氣壓強(qiáng)-基礎(chǔ)練(解析版)
- 外貿(mào)跟單工作規(guī)劃
- 火電廠汽機(jī)專業(yè)技術(shù)培訓(xùn)
- DB22T 3064-2019 農(nóng)業(yè)現(xiàn)代化發(fā)展水平評(píng)價(jià)指標(biāo)體系
- 質(zhì)量部年終述職報(bào)告
- 2024全新《婚姻法》精美課件
- 口腔健康全身健康課件
- 2024年國家公務(wù)員考試公共法律知識(shí)考試題庫及答案(共530題)
- 數(shù)字出版概論 課件 第一章 數(shù)字出版及其發(fā)展歷程
- 2024年江蘇教師資格證中學(xué)綜合素質(zhì)試卷及解答
評(píng)論
0/150
提交評(píng)論