




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