




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言程序設(shè)計SIMPLEBUSINESSWORKREPORT全套可編輯PPT課件目錄C語言概述01數(shù)據(jù)類型與表達式02結(jié)構(gòu)程序設(shè)計03數(shù)組04函數(shù)05目錄編譯預處理06位運算07指針08結(jié)構(gòu)體與枚舉類型09文件10第1章C語言概述011.1C語言簡介C語言是一種結(jié)構(gòu)緊湊、使用方便、程序執(zhí)行效率高的編程語言,它是目前最流行、使用最廣泛的程序語言之一。盡管各種新興編程語言如Python、Java等層出不窮,但C語言始終是軟件開發(fā)人員必學必會的語言,也是計算機工程師、自動化及相關(guān)領(lǐng)域的各類工程師必須掌握的語言之一。1.1C語言簡介C語言既有一般高級語言的特點,又有低級語言的特性;既能靈活用于科學計算,又能用于數(shù)據(jù)處理;既能用于編寫系統(tǒng)軟件,又能用于編寫應用程序,可以用在各種不同的應用領(lǐng)域。很多應用平臺也都提供了C語言的接口,因此C語言在計算機技術(shù)、網(wǎng)絡技術(shù)、自動控制技術(shù)等多個領(lǐng)域都有廣泛的應用。1.1C語言簡介1.1.1C語言的發(fā)展過程C語言是在20世紀70年代初問世的。1978年,美國電話電報公司(AT&T)的貝爾實驗室正式發(fā)布了C語言。同時由B.W.Kernighan和D.M.Ritchie合著了著名的TheCProgrammingLanguage一書,通常簡稱為K&R,也有人稱之為K&R標準。但是,在K&R中并沒有定義一個完整的標準C語言,后來由美國國家標準協(xié)會(AmericanNationalStandardsInstitute)在此基礎(chǔ)上制定了一個C語言標準,于1983年發(fā)表,通常稱之為ANSIC。1.1C語言簡介1.1.2當代最優(yōu)秀的程序設(shè)計語言之一早期的C語言主要用于UNIX系統(tǒng)。由于C語言的強大功能和各方面的優(yōu)點逐漸被人們認識,到了20世紀80年代,C語言開始進入其他操作系統(tǒng),并很快在各類大、中、小和微型計算機上得到廣泛的使用,成為當代最優(yōu)秀的程序設(shè)計語言之一。1.1C語言簡介1.1.3C語言的版本目前流行的C語言有以下幾種:(1)MicrosoftC或稱MSC。(2)BorlandTurboC或稱TurboC。(3)AT&TC。C語言程序設(shè)計第1章C語言概述這些C語言版本不僅實現(xiàn)了ANSIC標準,而且在此基礎(chǔ)上各自做了一些擴充,使之更加方便、完美。1.1C語言簡介1.1.4C語言的特點(1)C語言簡潔、緊湊,使用方便、靈活。ANSIC一共只有32個關(guān)鍵字、9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分。ANSIC中的關(guān)鍵字如表1-1所示。注意:在C語言中,關(guān)鍵字都是小寫的。表1-1ANSIC中的關(guān)鍵字1.1C語言簡介1.1.4C語言的特點(2)運算符豐富,共有34種。C語言把括號、賦值、逗號等都作為運算符處理,從而使C語言的運算類型極為豐富,可以實現(xiàn)其他高級語言難以實現(xiàn)的運算。(3)數(shù)據(jù)結(jié)構(gòu)類型豐富。(4)具有結(jié)構(gòu)化的控制語句。(5)語法限制不太嚴格,程序設(shè)計自由度大。1.1C語言簡介1.1.4C語言的特點(6)C語言允許直接訪問物理地址,能進行位(bit)操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作。因此有人把它稱為中級語言。(7)生成目標代碼質(zhì)量高,程序執(zhí)行效率高。(8)與匯編語言相比,用C語言寫的程序可移植性好。1.1C語言簡介1.1.5C和C++在C的基礎(chǔ)上,1983年,貝爾實驗室的BjarneStroustrup推出了C++。C++進一步擴充和完善了C語言,成為一種面向?qū)ο蟮某绦蛟O(shè)計語言。C++目前流行的最新版本是BorlandC++、SymantecC++和MicrosoftVisualC++。C++提出了一些更為深入的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓栴}空間直接映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。1.1C語言簡介1.1.5C和C++C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向?qū)ο蟮恼Z言,從而達到事半功倍的目的。1.1C語言簡介1.1.6C和C#C#讀作Csharp,是微軟公司2001年在.NET平臺下推出的語言。C#是集合了C、C++的語法規(guī)則,結(jié)合Basic語言簡單易學的特點而開發(fā)的新型語言。讀者可以在熟悉C語言的前提下繼續(xù)學習C#。C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強大功能的同時去掉了一些復雜特性(如沒有宏及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程成為.NET開發(fā)的首選語言。1.2簡單的C程序介紹為了說明C語言源程序結(jié)構(gòu)的特點,先看以下幾個程序。這幾個程序由簡到難,表現(xiàn)了C語言源程序在組成結(jié)構(gòu)上的特點??蓮倪@個例子中了解組成一個C語言源程序的基本部分和書寫格式。【例1.1】輸出“helloworld!”。1.2簡單的C程序介紹(1)include稱為文件包含命令。(2)擴展名為.h的文件稱為頭文件。(3)main是主函數(shù)的函數(shù)名,表示這是一個主函數(shù),使用void是告訴計算機這個函數(shù)不需要返回值,否則VisualC++2010會給出一個警告。1.2簡單的C程序介紹(4)每一個C語言源程序都必須有且只能有一個主(main)函數(shù)。(5)函數(shù)調(diào)用語句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。(6)printf函數(shù)是一個由系統(tǒng)定義的標準函數(shù),可在程序中直接調(diào)用。1.3C源程序的結(jié)構(gòu)特點`(3)一個源程序不論由多少個文件組成,都有一個且只能有一個main函數(shù),即主函數(shù)。(1)一個C語言源程序可以由一個或多個源文件組成。(2)每個源文件可由一個或多個函數(shù)組成。1.3C源程序的結(jié)構(gòu)特點`(6)標識符、關(guān)鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。(4)源程序中可以有預處理命令(include命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。(5)每一個說明和語句都必須以分號結(jié)尾,但預處理命令、函數(shù)頭和花括號“{}”之后不能加分號。1.4書寫程序時應遵循的規(guī)則從書寫清晰,便于閱讀、理解、維護的角度出發(fā),在書寫程序時應遵循以下規(guī)則:B(2)用{}括起來的部分,通常表示程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個字母對齊,并單獨占一行。C(3)低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫,以便看起來更加清晰,增加程序的可讀性。A(1)一個說明或一個語句占一行。1.5C語言的字符集字符是組成語言的最基本元素。C語言字符集由字母、數(shù)字、空格、標點和特殊字符組成。在字符常量、字符串常量和注釋中還可以使用漢字或其他可表示的圖形符號。添加標題(1)字母。小寫字母a~z共26個,大寫字母A~Z共26個。(2)數(shù)字。0~9共10個。(3)空白符。空格符、制表符、換行符等統(tǒng)稱為空白符。(4)標點和特殊字符。字符1.6C語言詞匯在C語言中使用的詞匯分為六類:標識符、關(guān)鍵字、運算符、分隔符、常量和注釋符。運算符常量關(guān)鍵字標識符注釋符運算符詞匯1.6C語言詞匯1.標識符在程序中使用的變量名、函數(shù)名、標號等統(tǒng)稱為標識符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C規(guī)定,標識符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。1.6C語言詞匯1.標識符在使用標識符時還必須注意以下幾點:(1)標準C不限制標識符的長度,但它受各種版本的C語言編譯系統(tǒng)限制,同時也受到具體機器的限制。例如,在某版本C中規(guī)定標識符前八位有效,當兩個標識符前八位相同時,則被認為是同一個標識符。(2)在標識符中,大小寫是有區(qū)別的。例如,BOOK和book是兩個不同的標識符。(3)雖然標識符可由程序員隨意定義,但標識符是用于標識某個量的符號,因此,命名應盡量有相應的意義,以便于閱讀理解。1.6C語言詞匯2.關(guān)鍵字C語言的關(guān)鍵字分為以下幾類:(1)類型說明符。類型說明符用于定義或說明變量、函數(shù)或其他數(shù)據(jù)結(jié)構(gòu)的類型。(2)語句定義符。語句定義符用于表示一個語句的功能。(3)預處理命令字。預處理命令字用于表示一個預處理命令。例如,前面例子中用到的include。關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標識符不應與關(guān)鍵字相同。1.6C語言詞匯3.運算符C語言中含有相當豐富的運算符。運算符與變量、函數(shù)一起組成表達式,表示各種運算功能。運算符由一個或多個字符組成。1.6C語言詞匯4.分隔符在C語言中采用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數(shù)參數(shù)表中分隔各個變量。空格多用于語句各單詞之間作為間隔符。在關(guān)鍵字、標識符之間必須要有一個以上的空格符作為間隔,否則將會出現(xiàn)語法錯誤。例如,把“inta;”寫成“inta;”,C編譯器會把inta當成一個標識符處理,其結(jié)果必然出錯。1.6C語言詞匯5.常量C語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號常量、轉(zhuǎn)義字符等多種。在后面章節(jié)中將專門予以介紹。1.6C語言詞匯6.注釋符C語言的注釋以“/*”開頭并以“*/”結(jié)尾,在“/*”和“*/”之間的即注釋。程序編譯時,不對注釋做任何處理。注釋可出現(xiàn)在程序中的任何位置,用來向用戶提示或解釋程序的意義。在調(diào)試程序中對暫不使用的語句也可用注釋符括起來,待調(diào)試結(jié)束后再去掉注釋符。1.7VisualC++2010Express開發(fā)環(huán)境的使用1.獲取和安裝VisualC++2010ExpressVisualC++2010Express是微軟推出的免費的面向?qū)W習者的C++開發(fā)環(huán)境,可以在微軟開發(fā)者網(wǎng)站上下載。網(wǎng)絡安裝版的安裝程序大小僅為3.2MB,雙擊即可進入安裝向?qū)В鐖D1-1所示。圖1-1VisualC++2010安裝向?qū)?.7VisualC++2010Express開發(fā)環(huán)境的使用1.獲取和安裝VisualC++2010Express單擊“下一步”按鈕并接受許可,進入安裝界面,如圖1-2所示。這里需要注意的是,Web安裝程序的安裝過程需要網(wǎng)絡支持。圖1-2安裝文件1.7VisualC++2010Express開發(fā)環(huán)境的使用1.獲取和安裝VisualC++2010Express使用VisualC++2010環(huán)境上機調(diào)試程序可分成如下幾個步驟:(1)啟動VisualC++集成環(huán)境。(2)生成項目。(3)生成和編輯源程序,把一個或多個源程序送到各自的文件中。(4)將源程序文件加入項目中。(5)根據(jù)需要改變項目的設(shè)置。(6)編譯、連接和運行程序。1.7VisualC++2010Express開發(fā)環(huán)境的使用2.啟動VisualC++2010安裝完成后,運行MicrosoftVisualC++2010程序,啟動成功后,就進入VisualC++2010的起始界面,如圖1-3所示。圖1-3VisualC++2010的起始界面1.7VisualC++2010Express開發(fā)環(huán)境的使用3.新建項目在VisualC++2010中,通常都是使用項目的形式來控制和管理程序文件的,C++的項目中存放特定程序的全部信息,包含源程序文件、庫文件、建立程序所用的編譯器和其他工具的清單。C++的項目以項目文件的形式存儲在磁盤上。1.7VisualC++2010Express開發(fā)環(huán)境的使用3.新建項目生成項目的操作步驟為:(1)執(zhí)行“文件”→“新建”→“項目”命令,打開“新建項目”對話框,如圖1-4所示。圖1-4“新建項目”對話框1.7VisualC++2010Express開發(fā)環(huán)境的使用3.新建項目(2)選中“為解決方案創(chuàng)建目錄”復選框,以便生成新的項目。在產(chǎn)生新項目時,系統(tǒng)自動生成一個項目工作區(qū),并將新的項目加入該項目工作區(qū)中。(3)在項目類型清單中,選擇“Win32控制臺應用程序”項目,表示要生成一個Windows32位控制臺應用程序的項目。(4)在“位置”文本框中輸入存放項目文件的文件夾路徑。例如,圖1-4所示的項目保存路徑為“E:\C語言程序設(shè)計\”。(5)在“名稱”文本框中輸入項目名。例如,我們將要創(chuàng)建的項目是helloworld,就在其中輸入helloworld。1.7VisualC++2010Express開發(fā)環(huán)境的使用3.新建項目(6)單擊“新建項目”對話框中的“確定”按鈕,彈出圖1-5所示的對話框。選中“空項目”復選框,單擊“完成”按鈕。圖1-5Win32控制臺應用程序的創(chuàng)建1.7VisualC++2010Express開發(fā)環(huán)境的使用3.新建項目執(zhí)行完以上6個步驟后,系統(tǒng)自動給新創(chuàng)建的項目文件加上文件擴展名“.sln”。此時,系統(tǒng)在文件夾“E:\C語言程序設(shè)計\”中產(chǎn)生了一個項目文件“helloworld.sln”。1.7VisualC++2010Express開發(fā)環(huán)境的使用4.生成C語言源程序文件并將其加入項目文件(1)在解決方案資源管理器中,右擊源文件,在彈出的快捷菜單中執(zhí)行“新建項”選項,彈出“添加新項”對話框,如圖1-6所示。圖1-6“添加新項”對話框1.7VisualC++2010Express開發(fā)環(huán)境的使用4.生成C語言源程序文件并將其加入項目文件(2)選擇C++文件(.cpp)。(3)輸入文件名稱,如helloworld。(4)單擊“添加”按鈕,系統(tǒng)會在程序目錄中新建一個helloworld.cpp文件。1.7VisualC++2010Express開發(fā)環(huán)境的使用4.生成C語言源程序文件并將其加入項目文件這時就建立了一個新的C源程序文件,并加入當前的項目文件中。進入圖1-7所示的工作窗口就可以編寫C語言程序了。圖1-7VisualStudio主窗口1.7VisualC++2010Express開發(fā)環(huán)境的使用4.生成C語言源程序文件并將其加入項目文件該窗口有3個子窗口,左側(cè)的子窗口為項目工作區(qū)窗口;右側(cè)上邊的子窗口為源程序編輯窗口,用于輸入或編輯源程序;右側(cè)下邊的窗口為信息輸出窗口,用來顯示出錯信息或調(diào)試程序的信息。1.7VisualC++2010Express開發(fā)環(huán)境的使用5.輸入和編輯C源程序在源程序編輯窗口中輸入C語言的源程序代碼,如圖1-7所示。圖1-7VisualStudio主窗口1.7VisualC++2010Express開發(fā)環(huán)境的使用6.保存C源程序文件執(zhí)行“文件”→“保存”命令,將源程序保存到相應的文件中。1.7VisualC++2010Express開發(fā)環(huán)境的使用7.編譯和連接源程序文件執(zhí)行“生成”→“生成解決方案”命令或按“F7”鍵,將源程序編譯或編譯連接,產(chǎn)生可執(zhí)行文件,系統(tǒng)自動加上文件擴展名“.exe”,如frist.exe。在編譯和連接期間,若出現(xiàn)錯誤,則在信息輸出窗口給出錯誤或警告信息。改正錯誤后,重新編譯或編譯連接源程序,直到?jīng)]有錯誤為止,如圖1-8所示。圖1-8編譯和連接源程序文件1.7VisualC++2010Express開發(fā)環(huán)境的使用8.運行可執(zhí)行文件執(zhí)行“調(diào)試”→“調(diào)試開始執(zhí)行(不調(diào)試)”命令,或按“Ctrl+F5”快捷鍵,進入控制臺窗口查看程序的運行結(jié)果,如圖1-9所示。圖1-9程序執(zhí)行結(jié)果1.7VisualC++2010Express開發(fā)環(huán)境的使用9.打開已存在的項目文件可用兩種方法打開已存在的項目文件。(1)執(zhí)行“文件”→“打開”→“項目/解決方案”命令,然后在彈出的對話框中選擇要打開的項目文件,如圖1-10所示。圖1-10打開已創(chuàng)建的項目文件1.7VisualC++2010Express開發(fā)環(huán)境的使用9.打開已存在的項目文件(2)執(zhí)行“文件”→“最近使用的項目和解決方案”命令,然后選擇相應的項目文件。注意:在調(diào)試一個應用程序時,VisualC++集成環(huán)境一次只能打開一個項目文件。當一個程序調(diào)試完成后,要開始輸入另一個程序時,必須先關(guān)閉當前的項目文件,然后為新源程序建立一個新的項目文件。關(guān)閉當前的項目文件的方法是:執(zhí)行“文件”→“關(guān)閉解決方案”命令。1.7VisualC++2010Express開發(fā)環(huán)境的使用10.退出VisualC++集成環(huán)境注意:在建立C語言源文件時,也可以直接建立.c文件,不需要先建立工程文件,再將.c文件加入。執(zhí)行“文件”→“退出”命令,可以退出VisualC++集成環(huán)境。本章小結(jié)本章介紹了C語言的主要特點、結(jié)構(gòu)、程序書寫規(guī)則等。(1)C語言程序的基本單位是函數(shù),一個C語言程序由一個或多個函數(shù)組成,有且只有一個main()函數(shù)。(2)C語言程序由一條條語句組成,每條語句以“;”(分號)結(jié)束。通常每一行為一句基本語句,由{}括起來的為一復合語句。(3)注意C語言的語法要求,注意關(guān)鍵字、標示符、常量、運算符、分隔符及注釋符的使用。本章小結(jié)本章介紹了C語言的主要特點、結(jié)構(gòu)、程序書寫規(guī)則等。(4)標準C語言有32個關(guān)鍵字,不能重新定義,并有一些標示符,如printf、scanf等已被系統(tǒng)標準庫函數(shù)占用,不能再定義為其他變量名。(5)編寫程序應該規(guī)范,建立良好的程序設(shè)計習慣。(6)C語言程序的編寫,要先輸入、編輯源程序,再對源程序進行編譯、連接,最后才可運行。本章小結(jié)本章介紹了C語言的主要特點、結(jié)構(gòu)、程序書寫規(guī)則等。(7)VisualC++是C語言程序的編輯、編譯、連接和運行的一個環(huán)境,要熟練掌握源程序的編輯、保存、編譯、連接及運行的操作方法,了解程序調(diào)試的基本概念。真題解析1.下列敘述中正確的是()。A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面B.C程序書寫格式嚴謹,要求一行內(nèi)只能寫一個語句C.C程序的書寫格式自由,一個語句可以寫在多行上D.用C語言編寫的程序只能放在一個程序文件中【答案】C【解析】C程序中注釋可以放在任意位置;C語言的語法限制不嚴格,所以可以將多條語句放在同一行上;C程序可以放在多個程序文件中,并使用include語句進行文件包含。故本題答案為C。真題解析2.下列選項中()是由C語言提供的合法關(guān)鍵字。A.swicthB.cherC.defaultD.Case【答案】C【解析】A項和B項為拼寫錯誤,A項應為switch、B項應為char;D項中的大寫字母應為小寫字母。故本題答案為C。真題解析3.下列敘述中正確的是()。A.C程序的基本組成是語句B.C程序中的每一行只能寫一條語句C.簡單C語句必須以分號結(jié)束D.C語句必須在一行內(nèi)寫完【答案】C【解析】函數(shù)是C程序的基本組成單位,C語言規(guī)定一條語句可以寫在多行,C語言允許多條語句寫在同一行。故本題答案為C。真題解析4.C語言規(guī)定,在一個源程序中,main()函數(shù)的位置()。A.必須在最開始B.必須在系統(tǒng)調(diào)用的庫函數(shù)的后面C.可以任意D.必須在最后【答案】C【解析】程序中可以把main()函數(shù)放在任何位置,但程序是從main()函數(shù)開始執(zhí)行的。真題解析5.以下說法正確的是()。A.C程序是從第一個定義的函數(shù)開始執(zhí)行的B.在C程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義C.C程序是從main()函數(shù)開始執(zhí)行的D.C程序中的main()函數(shù)必須放在程序的開始部分【答案】C【解析】C程序總是從程序的main()函數(shù)開始執(zhí)行。main()函數(shù)可以放在C程序的任何位置,包括最前面和最后面。C程序中的函數(shù)可以任意地相互調(diào)用,它們之間的關(guān)系是平等的。自測練習一、選擇題1.以下敘述中,正確的是()。A.C程序的基本組成是語句B.C程序中的每一行只能寫一條語句C.簡單C語句必須以分號結(jié)束D.C語言必須在一行內(nèi)寫完2.C語言規(guī)定,在一個源程序中,main()函數(shù)的位置()。A.必須在最開始B.必須在系統(tǒng)調(diào)用的庫函數(shù)的后面C.可以任意D.必須在最后自測練習二、操作題1.在Windows環(huán)境下,下載并安裝VisualC++2010Express。2.編寫程序,在屏幕上打印輸出“IloveC”。謝謝欣賞Thanks
For
Watching第2章數(shù)據(jù)類型與表達式02數(shù)據(jù)類型是每一種編程語言的基礎(chǔ),C語言不像Python,它對數(shù)據(jù)類型的要求非常嚴格,也因此成為計算機編程入門的必學語言。在C語言中,數(shù)據(jù)類型可分為基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型、指針類型和空類型四大類。本章介紹基本數(shù)據(jù)類型中的整型、浮點型和字符型。構(gòu)造數(shù)據(jù)類型空類型基本數(shù)據(jù)類型指針類型數(shù)據(jù)類型2.1C語言的數(shù)據(jù)類型1.基本數(shù)據(jù)類型基本數(shù)據(jù)類型最主要的特點是,其值不可以再分解為其他類型,也就是說,基本數(shù)據(jù)類型是自我說明的。2.1C語言的數(shù)據(jù)類型2.構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個或多個數(shù)據(jù)類型用構(gòu)造的方法來定義的。也就是說,一個構(gòu)造類型的值可以分解成若干個成員或元素。每個成員都是一個基本數(shù)據(jù)類型或又是一個構(gòu)造類型。在C語言中,構(gòu)造類型有以下幾種:030201
構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體(聯(lián)合)類型2.1C語言的數(shù)據(jù)類型3.指針類型指針是一種特殊的、具有重要作用的數(shù)據(jù)類型,其值用來表示某個變量在內(nèi)存儲器中的地址。雖然指針變量的取值類似于整型量,但這是兩個類型完全不同的量,因此不能混為一談。2.1C語言的數(shù)據(jù)類型4.空類型在調(diào)用函數(shù)值時,通常應向調(diào)用者返回一個函數(shù)值,這個返回的函數(shù)值是具有一定數(shù)據(jù)類型的,應在函數(shù)定義中給予說明。但是有一類函數(shù)調(diào)用后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類型”,其類型說明符為void。2.2常量與變量對于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。它們可與數(shù)據(jù)類型結(jié)合起來分類。例如,可分為整型常量、整型變量、浮點常量、浮點變量、字符常量、字符變量、枚舉常量和枚舉變量。在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。常量變量2.2常量與變量2.2.1常量和符號常量在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量?!ぶ苯映A浚ㄗ置娉A浚??!ふ统A浚?2、0、-3?!嵭统A浚?.6、-1.23。·字符常量:‘a(chǎn)’、‘b’?!俗R符:用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列?!し柍A浚河脴俗R符代表一個常量。在C語言中,可以用一個標識符來表示一個常量,稱為符號常量。2.2常量與變量2.2.1常量和符號常量符號常量在使用之前必須先定義,其一般形式為其中,#define也是一條預處理命令(預處理命令都以“#”開頭),稱為宏定義命令,其功能是把該標識符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標識符的地方均代之以該常量值。2.2常量與變量2.2.2變量在C語言程序運行過程中,其值可以改變的量稱為變量。一個變量應該有一個名字,在內(nèi)存中占據(jù)一定的存儲單元,如圖2-1所示。變量定義必須放在變量使用之前,一般放在函數(shù)體的開頭部分。要區(qū)分變量名和變量值是兩個不同的概念。圖2-1變量及其存儲單元2.3整型數(shù)據(jù)整型常量就是整常數(shù)。在C語言中,使用的整常數(shù)有十進制、八進制和十六進制3種。十進制整常數(shù)十六進八進制2.3.1整型常量的表示方法2.3整型數(shù)據(jù)2.3.1整型常量的表示方法1.十進制整常數(shù)十進制整常數(shù)沒有前綴。其數(shù)碼為0~9。以下各數(shù)是合法的十進制整常數(shù):237、-568、65535、1627。以下各數(shù)不是合法的十進制整常數(shù):023(不能有前導0)、23D(含有非十進制數(shù)碼)。在程序中是根據(jù)前綴來區(qū)分各種進制數(shù)的。因此,在書寫常數(shù)時不要把前綴弄錯造成結(jié)果不正確。2.3整型數(shù)據(jù)2.3.1整型常量的表示方法2.八進制整常數(shù)八進制整常數(shù)必須以0開頭,即以0作為八進制數(shù)的前綴。數(shù)碼取值為0~7。八進制數(shù)通常是無符號數(shù)。以下各數(shù)是合法的八進制數(shù):015(十進制為13)、0101(十進制為65)、0177777(十進制為65535)。以下各數(shù)不是合法的八進制數(shù):256(無前綴0)、03A2(包含了非八進制數(shù)碼)、-0127(出現(xiàn)了負號)。2.3整型數(shù)據(jù)2.3.1整型常量的表示方法3.十六進制整常數(shù)十六進制整常數(shù)的前綴為0X或0x。其數(shù)碼取值為0~9,A~F或a~f。以下各數(shù)是合法的十六進制整常數(shù):0X2A(十進制為42)、0XA0(十進制為160)、0XFFFF(十進制為65535)。以下各數(shù)不是合法的十六進制整常數(shù):5A(無前綴0X)、0X3H(含有非十六進制數(shù)碼)。2.3整型數(shù)據(jù)2.3.1整型常量的表示方法4.整型常數(shù)的后綴在16位字長的機器上,基本整型的長度也為16位,因此表示的數(shù)的范圍也是有限定的。十進制無符號整常數(shù)的范圍為0~65535,有符號數(shù)為-32768~+32767。八進制無符號數(shù)的表示范圍為0~0177777。十六進制無符號數(shù)的表示范圍為0X0~0XFFFF或0x0~0xFFFF。如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L”或“l(fā)”來表示的。2.3整型數(shù)據(jù)2.3.1整型常量的表示方法4.整型常數(shù)的后綴例如:十進制長整常數(shù):158L(十進制為158)、358000L(十進制為358000)。八進制長整常數(shù):012L(十進制為10)、077L(十進制為63)、0200000L(十進制為65536)。十六進制長整常數(shù):0X15L(十進制為21)、0XA5L(十進制為165)、0X10000L(十進制為65536)。2.3整型數(shù)據(jù)2.3.1整型常量的表示方法4.整型常數(shù)的后綴長整數(shù)158L和基本整常數(shù)158在數(shù)值上并無區(qū)別。但對于158L,因為是長整型量,C編譯系統(tǒng)將為它分配4個字節(jié)存儲空間。而對于158,在TurboC2.0中,因為是基本整型,只分配2個字節(jié)的存儲空間;但在VisualC++環(huán)境中,默認的整形int為長整形longint,因此仍然占4個字節(jié)的存儲空間。因此,在運算和輸出格式上要予以注意,避免出錯。本書均以VisualC++系統(tǒng)為例。2.3整型數(shù)據(jù)2.3.1整型常量的表示方法4.整型常數(shù)的后綴無符號數(shù)也可用后綴表示,整型常數(shù)的無符號數(shù)的后綴為“U”或“u”。例如:358u,0x38Au,235Lu均為無符號數(shù)。前綴、后綴可同時使用以表示各種類型的數(shù)。例如:0XA5Lu表示十六進制無符號長整數(shù)A5,其十進制為165。2.3整型數(shù)據(jù)2.3.2整型變量1.整型數(shù)據(jù)在內(nèi)存中的存放形式如果定義了一個整型變量i如下:10用二進制數(shù)表示如下:2.3整型數(shù)據(jù)2.3.2整型變量1.整型數(shù)據(jù)在內(nèi)存中的存放形式例如:求-10的補碼:10的原碼:則數(shù)值是以補碼表示的,具體表現(xiàn)如下:·正數(shù)的補碼和原碼相同?!へ摂?shù)的補碼是將該數(shù)的絕對值的二進制形式按位取反再加1。2.3整型數(shù)據(jù)2.3.2整型變量1.整型數(shù)據(jù)在內(nèi)存中的存放形式取反:再加1,得-10的補碼為:由此可知,左邊的第一位是表示符號的。2.3整型數(shù)據(jù)2.3.2整型變量2.整型變量的分類(1)基本型:類型說明符為int,在內(nèi)存中占4個字節(jié)。(2)短整量:類型說明符為shortint或short,在內(nèi)存中占2個字節(jié)。(3)長整型:類型說明符為longint或long,在內(nèi)存中占4個字節(jié)。(4)無符號型:類型說明符為unsigned。2.3整型數(shù)據(jù)2.3.2整型變量2.整型變量的分類無符號型又可與前三種類型匹配構(gòu)成如下形式:·無符號基本型:類型說明符為unsignedint或unsigned。·無符號短整型:類型說明符為unsignedshort?!o符號長整型:類型說明符為unsignedlong。各種無符號類型量所占的內(nèi)存空間字節(jié)數(shù)與相應的有符號類型量相同。但由于省去了符號位,故不能表示負數(shù)。2.3整型數(shù)據(jù)2.3.2整型變量2.整型變量的分類有符號整型變量:最大表示231-1。無符號整型變量:最大表示232-1。2.3整型數(shù)據(jù)2.3.2整型變量2.整型變量的分類表2-1列出了VisualC++中各類整型變量所分配的內(nèi)存字節(jié)數(shù)及表示范圍。
表2-1各類整型變量所分配的內(nèi)存字節(jié)數(shù)及表示范圍2.3整型數(shù)據(jù)2.3.2整型變量3.整型變量的定義在書寫變量定義時,應注意以下幾點:允許在一個類型說明符后定義多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。01最后一個變量名之后必須以分號結(jié)尾。02變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。032.4實型數(shù)據(jù)2.4.1實型常量的表示方法實型也稱為浮點型,實型常量也稱為實數(shù)或浮點數(shù)。在C語言中,實數(shù)只采用十進制,它有兩種形式:十進制小數(shù)形式和指數(shù)形式。2.4實型數(shù)據(jù)2.4.1實型常量的表示方法1.十進制小數(shù)形式由數(shù)碼0~9和小數(shù)點組成。例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實數(shù)。注意:必須有小數(shù)點。2.4實型數(shù)據(jù)2.4.1實型常量的表示方法2.指數(shù)形式由尾數(shù)、字母e(或E)和指數(shù)3部分組成。例如:·2.1E5(等于2.1×105)。·3.7E-2(等于3.7×10-2)?!?.5E7(等于0.5×107)。·-2.8E-2(等于-2.8×10-2)。2.4實型數(shù)據(jù)2.4.1實型常量的表示方法2.指數(shù)形式以下是不合法的實數(shù):·345(無小數(shù)點)。·E7(階碼標志E之前無數(shù)字)。·-5(無階碼標志)。·53.-E3(負號位置不對)?!?.7E(無階碼)。標準C語言允許浮點數(shù)使用后綴。后綴為“f”或“F”即表示該數(shù)為浮點數(shù),如356f和356.是等價的。2.4實型數(shù)據(jù)2.4.2實型變量1.實型數(shù)據(jù)在內(nèi)存中的存放形式實型數(shù)據(jù)一般占4個字節(jié)(32位)內(nèi)存空間,按指數(shù)形式存儲。實數(shù)3.14159在內(nèi)存中的存放形式如下:(1)小數(shù)部分占的位(bit)數(shù)越多,數(shù)的有效數(shù)字越多,精度越高。(2)指數(shù)部分占的位數(shù)越多,則能表示的數(shù)值范圍越大。2.4實型數(shù)據(jù)2.4.2實型變量2.實型變量的分類實型變量分為單精度(float)型、雙精度(double)型和長雙精度(longdouble)型3類。在VisualC++中實型變量內(nèi)存分配、有效數(shù)字和表示范圍如表2-2所示。表2-2各類實型變量內(nèi)存分配、有效數(shù)字和表示范圍2.4實型數(shù)據(jù)2.4.2實型變量2.實型變量的分類實型變量定義的格式和書寫規(guī)則與整型相同。例如:floatx,y;(x,y為單精度實型變量)。doublea,b,c;(a,b,c為雙精度實型變量)。2.4實型數(shù)據(jù)2.4.3實型常數(shù)的類型實型常數(shù)不分單、雙精度,都按雙精度double型處理。2.5字符型數(shù)據(jù)字符型數(shù)據(jù)包括字符常量和字符變量。字符常量字符變量2.5字符型數(shù)據(jù)2.5.1字符常量字符常量是用單引號括起來的一個字符。例如:‘a(chǎn)’、‘b’、‘=’、‘+’、‘?’都是合法的字符常量。在C語言中,字符常量有以下特點:(1)字符常量只能用單引號括起來,不能用雙引號或其他括號。(2)字符常量只能是單個字符,不能是字符串。(3)字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。例如,‘5’和5是不同的?!?’是字符常量,不能參與運算。2.5字符型數(shù)據(jù)2.5.2轉(zhuǎn)義字符轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線“\”開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。例如,在前面各例題printf函數(shù)的格式串中用到的“\n”就是一個轉(zhuǎn)義字符,其意義是“回車換行”。轉(zhuǎn)義字符主要用來表示用一般字符不便于表示的控制代碼。2.5字符型數(shù)據(jù)2.5.2轉(zhuǎn)義字符廣義地講,C語言字符集中的任何一個字符均可用轉(zhuǎn)義字符來表示。表2-3中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。例如,\101表示字母“A”,\102表示字母“B”,\134表示反斜線,\XOA表示換行等。2.5字符型數(shù)據(jù)2.5.2轉(zhuǎn)義字符表2-3常用的轉(zhuǎn)義字符及其含義2.5字符型數(shù)據(jù)2.5.3字符變量字符變量用來存儲字符常量,即單個字符。字符變量的類型說明符是char。字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:2.5字符型數(shù)據(jù)2.5.4字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法每個字符變量被分配一個字節(jié)的內(nèi)存空間,因此一個字節(jié)只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。例如:x的十進制ASCII碼是120,y的十進制ASCII碼是121。對字符變量a,b賦予'x'和'y'值:2.5字符型數(shù)據(jù)2.5.4字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法實際上是在a,b兩個單元內(nèi)存放120和121的二進制代碼:a:b:2.5字符型數(shù)據(jù)2.5.4字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法所以也可以把它們看成是整型量。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。整型量為四字節(jié)量,字符量為單字節(jié)量,當整型量按字符型量處理時,只有低八位字節(jié)參與處理。2.5字符型數(shù)據(jù)2.5.5字符串常量字符串常量是由一對雙引號括起的字符序列。例如,"CHINA","Cprogram","$12.5"等都是合法的字符串常量。字符串常量和字符常量是不同的量。它們之間主要有以下區(qū)別:(1)字符常量由單引號括起來,字符串常量由雙引號括起來。(2)字符常量只能是單個字符,字符串常量則可以含一個或多個字符。2.5字符型數(shù)據(jù)2.5.5字符串常量(3)可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量,但是可以用一個字符數(shù)組來存放一個字符串常量。(4)字符常量占一個字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個字節(jié)中存放字符"\0"(ASCII碼為0)。這是字符串結(jié)束的標志。2.5字符型數(shù)據(jù)2.5.5字符串常量例如,字符串"Cprogram"在內(nèi)存中所占的字節(jié)為:字符常量‘a(chǎn)’和字符串常量"a"雖然都只有一個字符,但在內(nèi)存中的情況是不同的。a在內(nèi)存中占1個字節(jié),可表示為:"a"在內(nèi)存中占2個字節(jié),可表示為:2.5字符型數(shù)據(jù)2.5.6符號常量符號常量是以標識符形式出現(xiàn)的常量,符號常量一般使用大寫的英文字母表示,以區(qū)別于一般小寫英文字母所表示的變量。符號常量在使用前必須先定義。定義形式為:例如:這里定義PI為符號常量,其值為3.1415926。2.6變量賦初值在程序中常常需要對變量賦初值,以便使用變量。語言程序中可有多種方法為變量提供初值。本節(jié)先介紹在進行變量定義的同時給變量賦以初值的方法。這種方法稱為初始化。在變量定義中賦初值的一般形式為:2.6變量賦初值例如:應注意,在定義中不允許連續(xù)賦值,如a=b=c=5是不合法的。2.7各類數(shù)值型數(shù)據(jù)之間的混合運算變量的數(shù)據(jù)類型是可以轉(zhuǎn)換的。轉(zhuǎn)換的方法有兩種:一種是自動轉(zhuǎn)換,另一種是強制類型轉(zhuǎn)換。強制類型轉(zhuǎn)換自動轉(zhuǎn)換2.7各類數(shù)值型數(shù)據(jù)之間的混合運算1.自動轉(zhuǎn)換自動轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運算時,由編譯系統(tǒng)自動完成。自動轉(zhuǎn)換遵循以下規(guī)則:(1)若參與運算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算。(2)轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進行,以保證精度不降低。例如,int型和long型運算時,先把int量轉(zhuǎn)成long型后再進行運算。(3)所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉(zhuǎn)換成double型,再做運算。2.7各類數(shù)值型數(shù)據(jù)之間的混合運算1.自動轉(zhuǎn)換(4)char型和short型參與運算時,必須先轉(zhuǎn)換成int型。(5)在賦值運算中,賦值號兩邊量的數(shù)據(jù)類型不同時,賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長度比左邊長,那么將丟失一部分數(shù)據(jù),這樣會降低精度,丟失的部分按四舍五入向前舍入。圖2-2所示為數(shù)據(jù)類型自動轉(zhuǎn)換的規(guī)則。圖2-2數(shù)據(jù)類型自動轉(zhuǎn)換的規(guī)則2.7各類數(shù)值型數(shù)據(jù)之間的混合運算2.強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運算來實現(xiàn)的。其一般形式為:其功能是把表達式的運算結(jié)果強制轉(zhuǎn)換成類型說明符所表示的類型。例如:(float)a把a轉(zhuǎn)換為實型(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型2.7各類數(shù)值型數(shù)據(jù)之間的混合運算2.強制類型轉(zhuǎn)換在使用強制類型轉(zhuǎn)換時應注意以下問題:(1)類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y則變成把x轉(zhuǎn)換成int型之后再與y相加了。(2)無論是強制類型轉(zhuǎn)換還是自動轉(zhuǎn)換,都只是為了本次運算的需要而對變量的數(shù)據(jù)長度進行的臨時性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時對該變量定義的類型。2.8基本運算符和表達式C語言的運算符不僅具有不同的優(yōu)先級,而且具有結(jié)合性。在表達式中,各運算量參與運算的先后順序不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結(jié)合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結(jié)合性是其他高級語言的運算符所沒有的,因此也增加了C語言的復雜性。2.8基本運算符和表達式2.8.1C語言運算符簡介C語言的運算符可分為以下幾類:·算術(shù)運算符:+、-、*、/、%、++、--。·關(guān)系運算符:>、<、==、>=、<=、!=?!み壿嬤\算符:&&、、!?!の徊僮鬟\算符:&、、~、^、<<、>>?!べx值運算符:=、+=、-=、*=、/=、%=、&=、=、^=、>>=、<<=。2.8基本運算符和表達式2.8.1C語言運算符簡介·條件運算符:?:?!ざ禾栠\算符:,?!ぶ羔樳\算符:訪問目標運算符*、取地址運算符&。·求字節(jié)數(shù)運算符:sizeof?!ぬ厥膺\算符:括號(),下標[],成員(,.)。2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式1.基本的算術(shù)運算符(1)加法運算符“+”。加法運算符為雙目運算符,即應有兩個量參與加法運算,如a+b,4+8等,具有右結(jié)合性。(2)減法運算符“-”。減法運算符為雙目運算符,但“-”也可作為負值運算符,此時為單目運算,如-x,-5,等具有左結(jié)合性。(3)乘法運算符“*”。乘法運算符為雙目運算,具有左結(jié)合性。2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式1.基本的算術(shù)運算符(4)除法運算符“/”。除法運算符為雙目運算符,具有左結(jié)合性。參與運算量均為整型時,結(jié)果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結(jié)果為雙精度實型。(5)求余運算符(模運算符)“%”。求余運算符為雙目運算符,具有左結(jié)合性。要求參與運算的量均為整型。求余運算的結(jié)果等于兩數(shù)相除后的余數(shù)。2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式2.算術(shù)表達式和運算符的優(yōu)先級及結(jié)合性(1)算術(shù)表達式算術(shù)表達式是由算術(shù)運算符和括號連接數(shù)值型運算對象構(gòu)成的,且符合C語言的語法規(guī)則的式子。運算對象包括常量、變量、函數(shù)等。表達式的值是一個數(shù)值,表達式的類型由參加運算的操作數(shù)確定。2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式2.算術(shù)表達式和運算符的優(yōu)先級及結(jié)合性(1)算術(shù)表達式以下是算術(shù)表達式的例子:·a+b?!ぃ╝*2)/c?!ぃ▁+r)*8-(a+b)/7。·++I?!inx+siny。·(++i)-(j++)+(k--)。2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式2.算術(shù)表達式和運算符的優(yōu)先級及結(jié)合性(2)運算符的優(yōu)先級。表達式求值時,按運算符的優(yōu)先級別高低順序執(zhí)行。算術(shù)運算符的優(yōu)先級別(從高級到低級)如下:小括號()→單目(+、-)→雙目算數(shù)運算符(*、/、%)→雙目算術(shù)運算符(+、-)2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式2.算術(shù)表達式和運算符的優(yōu)先級及結(jié)合性(3)運算符的結(jié)合性。當一個運算對象兩側(cè)的運算符優(yōu)先級別相同時,算術(shù)運算符的結(jié)合方向是“自左向右”,即先左后右。例如,a+b-c,按結(jié)合方向b先于其左邊的加號結(jié)合,執(zhí)行a+b的運算,然后執(zhí)行減c的運算。2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式3.強制類型轉(zhuǎn)換運算符其一般形式為:其功能是把表達式的運算結(jié)果強制轉(zhuǎn)換成類型說明符所表示的類型。例如:(float)a把a轉(zhuǎn)換為實型(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型2.8基本運算符和表達式2.8.2算術(shù)運算符和算術(shù)表達式4.自增、自減運算符自增運算符“++”和自減運算符“--”是C語言所特有的兩個單目算術(shù)運算符。其作用是使變量的值增1或減1,但這兩種運算符都有前置或后置之分?!?+i:i自增1后再參與其他運算。·--i:i自減1后再參與其他運算?!++:i參與運算后,i的值再自增1?!--:i參與運算后,i的值再自減1。2.9賦值運算符和賦值表達式1.賦值運算符賦值運算符就是將一個數(shù)據(jù)賦給一個變量。例如,“a=5”的作用是執(zhí)行一次賦值操作(或稱賦值運算),把常量5賦值給變量a。也可以將一個表達式的值賦值給一個變量。賦值運算符如表2-4所示。表2-4賦值運算符2.9賦值運算符和賦值表達式2.賦值表達式由賦值運算符將一個變量和表達式連接起來的式子稱為賦值表達式。它的一般形式為:例如,“a=5+3”是一個賦值表達式,其處理過程是:先計算賦值號右邊表達式5+3的值,為8,再將8賦給變量a,表達式“a=5+3”的運算結(jié)果包含兩種含義:一是該表達式的值是8,二是變量a的值也是8。2.10逗號運算符和逗號表達式在C語言中逗號也是一種運算符,稱為逗號運算符“,”。其功能是把兩個表達式連接起來組成一個表達式,稱為逗號表達式。其一般形式為:其求值過程是分別求兩個表達式的值,并以表達式2的值作為整個逗號表達式的值。本章小結(jié)(1)本章主要介紹了基本類型中的char、int、long、float、double等幾種。char為字符型,占用1字節(jié);int為整形數(shù)據(jù),占用4字節(jié);long型數(shù)據(jù)占用4字節(jié);float占用4字節(jié),精度為7位;double占用8字節(jié),精度為15位。(2)常量是指在程序運行過程中不變的量,常量分為整形常量、實型常量、字符常量、字符串常量和符號常量5種。(3)標識符只能是由字母、數(shù)字或下劃線組成的字符序列,且必須以字母或下劃線開頭。C語言的32個關(guān)鍵字不能作為標識符。本章小結(jié)(4)C語言的變量必須先定義后使用。變量名一般用小寫字母表示。(5)C語言的運算符從功能上可分為算術(shù)、邏輯、關(guān)系、賦值、逗號、自增等幾種;使用運算符時,應特別注意不同運算符的優(yōu)先等級及其結(jié)合性。(6)不同數(shù)據(jù)類型間的轉(zhuǎn)換有自動轉(zhuǎn)換(在不同類型數(shù)據(jù)的混合運算中,由系統(tǒng)自動實現(xiàn)轉(zhuǎn)換,由少字節(jié)類型向多字節(jié)類型轉(zhuǎn)換)、強制類型轉(zhuǎn)換(由強制轉(zhuǎn)換運算符完成轉(zhuǎn)換)。真題解析1.下面選項中,均是不合法的用戶標識符的選項是()。A.AP0doB.floatla0_AC.b-agotointD.._123tempint【答案】C【解析】合法的標識符只能由字母、數(shù)字或下劃線組成,且首字符不能是數(shù)字。C項中b-a出現(xiàn)非法字符“-”,goto和int均為關(guān)鍵字。故本題答案為C。真題解析2.以下選項中()是不合法的標識符。A.printB.FORC.&aD.__00【答案】C【解析】合法的標識符只能由字母、數(shù)字或下劃線組成。C項中&a出現(xiàn)非法字符“&”。故本題答案為C。真題解析3.下列選項中,可作為合法標識符的是()。A.1mB.DataC.str+D.i-1【答案】B【解析】在編寫程序時,標識符的作用是為函數(shù)、變量等命名。標識符的命名規(guī)則如下:(1)合法的標識符只能由字母、數(shù)字或下劃線組成。(2)標識符的第一個字符必須是字母或下劃線,不能是數(shù)字。(3)要區(qū)分字母的大小寫,如q和Q是兩個不同的變量。真題解析4.在C語言程序中,可以作為用戶標識符的是()。A.voiddefineWorDB.as_b3.224ElseC.Switch-wercaseD.4bDOSIG【答案】B【解析】A項中的void是C語言的關(guān)鍵字。C項中的wer前邊的字符是減號,而case是關(guān)鍵字。D項中的4b是以數(shù)字開頭。真題解析5.以下選項中不屬于字符常量的是()。A.CB."C"C.\xCC
D.\072【答案】B【解析】在C語言程序中,用單引號把一個字符或反斜杠后跟一個特定的字符括起來表示一個字符常量。A、C、D項為正確的字符常量。而B項是用雙引號括起來的字符,表示一個字符串常量。故本題答案為B。真題解析6.以下選項中不能作為C語言合法常量的是()。A.ed
B.0.1e+6C."\a"D.\011【答案】A【解析】在C語言程序中,用單引號把一個字符或反斜杠后跟一個特定的字符括起來表示一個字符常量。A項中單引號里面有2個字符,所以A項錯誤。真題解析7.下列選項中,正確的整型常量是()。A.34.1B.-80C.2,000D.123【答案】B【解析】本題是考查C語言的十進制整型常量。A項后邊有小數(shù)點,所以不對。C項和D項在數(shù)字間有逗號和空格,也顯然不對。真題解析8.若函數(shù)中有定義語句“intk;”,則()。A.系統(tǒng)將自動給k賦初值0B.這時k中的值無意義C.系統(tǒng)將自動給k賦值-1D.這時k中無任何值【答案】B【解析】用int方法定義變量時,編譯器僅為變量開辟存儲單元,并沒有在存儲單元中存放任何值,此時變量中的值是不確定的,稱變量值“無意義”。故本題答案為B。真題解析9.下列選項中,正確的定義語句是()。A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;【答案】C【解析】定義變量a和變量b為double類型,并對其賦初值。變量之間應該以“,”分隔,定義關(guān)鍵字與變量名之間應以空格分隔,語句應以“;”結(jié)尾。真題解析10.C語言中,int類型變量所占字節(jié)數(shù)是()。A.1B.2C.3D.4【答案】B【解析】C語言中int類型變量占兩個字節(jié),數(shù)值范圍是-32768~+32767。真題解析11.在C語言中定義了一個變量,該變量代表內(nèi)存中的一個()。A.區(qū)域B.單元C.地址D.容量【答案】C【解析】C語言中定義的一個變量代表內(nèi)存中的一個地址,也就是在內(nèi)存中分配給這個變量一個單元,用來存放變量的值,這個內(nèi)存單元的大小根據(jù)變量的類型不同而不同。自測練習一、選擇題1.以下敘述中,不正確的是()。A.在C程序中,%是只能用于整數(shù)運算的運算符B.在C程序中,無論是整數(shù)還是實數(shù),都能被準確無誤地表示C.若a是實型變量,C程序中a=20是正確的,因此實型變量允許被整型數(shù)賦值D.前綴和后綴運算符作為表達式有不同的作用2.若變量x、y、z均為double類型且已正確賦值,不能正確表示x/yxz的C語言表達式是()。A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z自測練習3.設(shè)a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為()。A.0B.1C.2D.34.設(shè)w、x、y、z、m均為int型變量,有以下程序段:則該程序運行后m的值是()。A.4B.3C.2D.1自測練習5.以下程序的輸出結(jié)果是()。A.5B.4C.6D.不確定6.在C語言中,如果下面的變量都是int類型,則輸出的結(jié)果是()。A.7B.6C.5D.4自測練習7.以下程序的輸出結(jié)果是()。A.11,10B.9,10C.010.9D.10,98.已知“inti;floatf;”,以下選項中正確的語句是()。A.(intf)%i;B.int(f)%i;C.int(f%i);D.(int)f%i自測練習9.若有定義“intx=3,y=2;floata=2.5,b=3.5;”,則下面表達式的值為()。(x+y)%2+(int)a/(int)bA.1.0B.1C.2.0D.210.假設(shè)所有變量均為整型,則表達式“(a=2,b=5,a++,b++,a+b)”的值為()。A.7B.8C.9D.10自測練習11.有以下程序:
程序運行后的輸出結(jié)果是()。A.-1112B.-6-13C.1224D.112212.若已定義x和y為double類型,則表達式“x=1,y=x+3/2”的值是()。A.1B.2C.2.0D.2.5自測練習二、改錯題下列給定程序中函數(shù)fun()的功能是:輸入一圓,其直徑為n,求出周長。請改正程序中的錯誤,使其得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序如下:謝謝欣賞Thanks
For
Watching第3章結(jié)構(gòu)程序設(shè)計033.1認識語句C程序的語句根據(jù)其在程序中所起的作用不同分為數(shù)據(jù)結(jié)構(gòu)描述語句和可執(zhí)行語句兩部分。其中,數(shù)據(jù)結(jié)構(gòu)描述語句一般由變量、數(shù)組、指針等數(shù)據(jù)屬性定義及函數(shù)說明等實現(xiàn)。例如,前面學習的“intx,y;”語句。本章學習的是C語言的可執(zhí)行語句,這些C語言語句可以分為以下五類:表達式語句、空語句、復合語句、函數(shù)調(diào)用語句和流程控制語句。數(shù)據(jù)結(jié)構(gòu)描述語句可執(zhí)行語句3.1認識語句1.表達式語句表達式語句由表達式加上分號“;”組成。例如:i=i+3/*表達式*/i=i+3;/*表達式語句*/3.1認識語句2.空語句C語言中的空語句只有一個分號“;”??照Z句執(zhí)行時不做任何事情,即編譯時不產(chǎn)生任何指令,在運行時不產(chǎn)生任何動作。在循環(huán)體中,空語句常起延時作用。3.1認識語句3.復合語句在C語言程序中用大括號“{}”括起來的若干語句稱為復合語句。其一般形式為:3.1認識語句4.函數(shù)調(diào)用語句與表達式語句相同,在一個函數(shù)的后面加一個分號就構(gòu)成了一個函數(shù)調(diào)用語句。例如:3.1認識語句5.流程控制語句流程控制語句主要是對程序的走向起控制作用。C語言有9種流程控制語句。(1)if().else…——條件語句。(2)for()…——循環(huán)語句。(3)while()…——循環(huán)語句。(4)do…while()——循環(huán)語句。(5)continue——結(jié)束本次循環(huán)語句。3.1認識語句5.流程控制語句(6)break——中止執(zhí)行switch語句或循環(huán)語句。(7)switch——多分支選擇語句。(8)goto——轉(zhuǎn)向語句。(9)return——從函數(shù)返回語句。上述語句中()表示一個條件,“…”表示一個內(nèi)嵌語句。3.2順序程序設(shè)計3.2.1賦值語句賦值語句是由賦值表達式再加上分號構(gòu)成的表達式語句。其一般形式為:賦值語句的功能和特點都與賦值表達式相同。它是程序中使用最多的語句之一。在賦值語句的使用中需要注意以下幾點:(1)在賦值符“=”右邊的表達式也可以是一個賦值表達式。例如:3.2順序程序設(shè)計3.2.1賦值語句按照賦值運算符的右結(jié)合性,因此實際上等效于:3.2順序程序設(shè)計3.2.1賦值語句(2)給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其他同類變量之間仍必須用逗號間隔,而賦值語句則必須用分號結(jié)尾。例如:(3)在變量說明中,不允許連續(xù)給多個變量賦初值。例如,下列說明是錯誤的:必須寫為而賦值語句允許連續(xù)賦值。3.2順序程序設(shè)計3.2.1賦值語句(4)注意賦值表達式和賦值語句的區(qū)別。賦值表達式是一種表達式,它可以出現(xiàn)在任何允許表達式出現(xiàn)的地方,而賦值語句則不能。①下述語句是合法的:其功能是:若表達式“x=y+5”大于0,則z=x。②下述語句是非法的:因為“x=y+5;”是語句,不能出現(xiàn)在表達式中。3.2順序程序設(shè)計3.2.2數(shù)據(jù)輸入/輸出的概念及在C語言中的實現(xiàn)在C語言中,所有的數(shù)據(jù)輸入、輸出都是由庫函數(shù)完成的。在調(diào)用標準輸入/輸出庫函數(shù)時,源程序文件應由以下編譯命令開頭:C編譯系統(tǒng)以scanf()和printf()為默認的輸入、輸出函數(shù),在使用這兩個函數(shù)時可不加#include<stdio.h>或#include"stdio.h"命令。3.2順序程序設(shè)計3.2.3字符數(shù)據(jù)的輸入/輸出C語言提供專門用于單個字符輸入/輸出的函數(shù)getchar()和putchar()。在使用該函數(shù)時,在程序的首部必須寫入編譯預處理命令:#include<stdio.h>或#include"stdio.h"。3.2順序程序設(shè)計3.2.3字符數(shù)據(jù)的輸入/輸出1.getchar函數(shù)(單個字符輸入函數(shù))(1)一般格式:getchar();/*getchar()是一個無參函數(shù)*/(2)功能:從標準輸入設(shè)備(通常是鍵盤)輸入一個字符。3.2順序程序設(shè)計3.2.3字符數(shù)據(jù)的輸入/輸出2.putchar函數(shù)(單個字符輸出函數(shù))(1)一般格式:(2)功能:向終端屏幕輸出一個字符。例如:3.2順序程序設(shè)計3.2.4格式輸入與輸出1.scanf()函數(shù)(格式輸入函數(shù))(1)scanf()的格式。scanf()函數(shù)的一般形式為:(2)功能。程序執(zhí)行到scanf()函數(shù)暫停,等待用戶從鍵盤上輸入數(shù)據(jù),完成數(shù)據(jù)輸入后程序繼續(xù)向下執(zhí)行。例如:3.2順序程序設(shè)計3.2.4格式輸入與輸出1.scanf()函數(shù)(格式輸入函數(shù))(3)注意事項。①格式控制字符串。格式控制字符串的一般形式為:格式說明符是說明輸入數(shù)據(jù)格式的一種符號,為小寫的英文字母。常見的格式說明符和意義如表3-1所示,修飾符功能如表3-2所示。表3-1scanf()格式說明符和意義3.2順序程序設(shè)計3.2.4格式輸入與輸出1.scanf()函數(shù)(格式輸入函數(shù))表3-2scanf()修飾符功能3.2順序程序設(shè)計3.2.4格式輸入與輸出1.scanf()函數(shù)(格式輸入函數(shù))②輸入項地址表列。輸入項地址表列是由若干個地址組成的表列,可以是變量的地址或字符串的首地址,多個參數(shù)地址之間用“,”分隔?!?”為地址運算符,就是在變量名前加“&”,并應注意輸入類型與變量類型一致。例如:3.2順序程序設(shè)計3.2.4格式輸入與輸出1.scanf()函數(shù)(格式輸入函數(shù))③輸入多個數(shù)據(jù)時數(shù)據(jù)流的分割問題。在格式控制字符串中無普通分隔符時,用空格、Enter鍵、Tab鍵進行數(shù)據(jù)分隔。在格式控制字符串中,除了格式說明以外還有其字符時,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符。例如:則鍵盤輸入格式為3,4↙3.2順序程序設(shè)計3.2.4格式輸入與輸出1.scanf()函數(shù)(格式輸入函數(shù))④在使用格式說明符%c輸入一個字符時,凡從鍵盤輸入的字符,包括空格等均作為有效字符接收。例如:若輸入:原意圖是把字符‘A’賦給字符型變量c1,把字符‘B’賦給字符型變量c2,而結(jié)果卻并非如此。事實上,賦予變量c2的不是字符‘B’,而是字符’A‘和字符‘B’之間的間隔符空格。3.2順序程序設(shè)計3.2.4格式輸入與輸出2.printf函數(shù)(格式輸出函數(shù))(1)printf()的格式。printf()函數(shù)的一般形式為(2)功能。按照格式控制字符串規(guī)定的格式,向計算機的終端(顯示器)或標準輸出設(shè)備輸出一個或多個任意類型的數(shù)據(jù)。例如:3.2順序程序設(shè)計3.2.4格式輸入與輸出2.printf函數(shù)(格式輸出函數(shù))(3)注意事項。①格式控制字符串。格式控制字符串是用雙引號括起來的字符串,它包括3類不同含義的字符,分別是格式說明符、轉(zhuǎn)義字符和普通字符。格式說明符普通字符轉(zhuǎn)義字符3.2順序程序設(shè)計3.2.4格式輸入與輸出2.printf函數(shù)(格式輸出函數(shù))a.格式說明符。格式說明符規(guī)定了輸出項的輸出格式,修飾符(可選)用于確定數(shù)據(jù)輸出的寬度、精度、小數(shù)位數(shù)及對齊方式等,用于產(chǎn)生更規(guī)范整齊的輸出。printf()格式說明符功能、修飾符功能如表3-3和表3-4所示。3.2順序程序設(shè)計3.2.4格式輸入與輸出2.printf函數(shù)(格式輸出函數(shù))表3-3printf()格式說明符功能表3-4printf()修飾符功能3.2順序程序設(shè)計3.2.4格式輸入與輸出2.printf函數(shù)(格式輸出函數(shù))b.轉(zhuǎn)義字符。在例1.1輸出“helloworld”程序中,“\n”輸出時產(chǎn)生一個“換行”操作。這種字符稱為轉(zhuǎn)義字符,意思是將反斜杠(\)后面的字符轉(zhuǎn)變成另外的意義。表3-5列出了常見的轉(zhuǎn)義字符。表3-5常見的轉(zhuǎn)義字符3.2順序程序設(shè)計3.2.4格式輸入與輸出2.printf函數(shù)(格式輸出函數(shù))c.普通字符。普通字符指格式說明符和轉(zhuǎn)義符之外的其他字符,它將在相應位置被原樣輸出。②輸出項表列。輸出項表列是需要輸出的一些數(shù)據(jù),可以是表達式。如果表列中有多少個數(shù)據(jù)項,則用逗號分隔。輸出項與其前的格式說明符一一對應。例如:其中,格式說明符“%d”控制數(shù)據(jù)項a的輸出,“%f”控制數(shù)據(jù)項b的輸出。3.3分支結(jié)構(gòu)程序3.3.1關(guān)系運算符和表達式在程序中經(jīng)常需要比較兩個量的大小關(guān)系,以決定程序下一步的工作。比較兩個量的運算符稱為關(guān)系運算符。3.3分支結(jié)構(gòu)程序3.3.1關(guān)系運算符和表達式1.關(guān)系運算符在C語言中有以下關(guān)系運算符:(1)<(小于)。(2)<=(小于等于)。(3)>(大于)。(4)>=(大于等于)。(5)==(等于)。(6)!=(不等于)。關(guān)系運算符都是雙目運算符,其結(jié)合性均為左結(jié)合。關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,高于賦值運算符。在6個關(guān)系運算符中,<、<=、>、>=的優(yōu)先級相同,高于==和!=;==和!=的優(yōu)先級相同。3.3分支結(jié)構(gòu)程序3.3.1關(guān)系運算符和表達式2.關(guān)系表達式關(guān)系表達式的一般形式為:例如:3.3分支結(jié)構(gòu)程序3.3.1關(guān)系運算符和表達式1.關(guān)系運算符以上都是合法的關(guān)系表達式。由于表達式可以是關(guān)系表達式,因此允許出現(xiàn)嵌套的情況。例如:關(guān)系表達式的值分為真和假,用1和0表示。例如:5>0的值為真,即為1。(a=3)>(b=5),由于3>5不成立,故其值為假(0)。3.3分支結(jié)構(gòu)程序3.3.2邏輯運算符和表達式1.邏輯運算符及其優(yōu)先次序C語言中提供了3種邏輯運算符:(1)&&(與運算)。(2)||(或運算)。(3)!(非運算)。與運算符&&和或運算符||均為雙目運算符,具有左結(jié)合性。非運算符!為單目運算符,具有右結(jié)合性。邏輯運算符與其他運算符優(yōu)先級的關(guān)系如圖3-1所示。圖3-1邏輯運算符與其他運算符優(yōu)先級的關(guān)系3.3分支結(jié)構(gòu)程序3.3.2邏輯運算符和表達式2.邏輯運算的值邏輯運算的值分為真和假兩種,用1和0表示。其求值規(guī)則如下:(1)與運算&&。參與運算的兩個量都為真時,結(jié)果才為真,否則為假。例如:因為5>0為真,4>2也
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北生態(tài)溫室施工方案
- 鐵嶺水源井施工方案
- 鋼渣施工方案
- 預制水磨石樓地面施工方案
- 六安鋼纖維窨井蓋施工方案
- 綠化種植工程施工方案
- 云南學校草坪施工方案
- 青浦區(qū)老舊廠房施工方案
- 鋪設(shè)水泥路面基礎(chǔ)施工方案
- 蘇州螺旋風管安裝施工方案
- 樹木栽培與養(yǎng)護合同樣本2025
- 人教PEP版(2024)三年級下冊英語Unit3 Learning better單元整體教學設(shè)計(共6課時)
- 2025河南中煙漯河卷煙廠招聘7人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年安徽工貿(mào)職業(yè)技術(shù)學院單招職業(yè)適應性測試題庫(有一套)
- 2025年哈爾濱傳媒職業(yè)學院單招職業(yè)技能測試題庫完整
- 2025年河南林業(yè)職業(yè)學院單招職業(yè)技能測試題庫完整版
- 地理-浙江省強基聯(lián)盟2025年2月高三年級聯(lián)考試題和答案
- 糧食儲運與質(zhì)量安全基礎(chǔ)知識單選題100道及答案
- (必刷)湖南省醫(yī)學院校高職單招職業(yè)技能測試必會題庫(含往年真題)
- 廣東廣州歷年中考語文現(xiàn)代文閱讀之非連續(xù)性文本閱讀7篇(截至2024年)
- 做自己的英雄主題班會
評論
0/150
提交評論