C語言程序設(shè)計活頁式教程 課件全套 張勁波 01創(chuàng)建C語言程序 -06使用指針處理數(shù)據(jù)_第1頁
C語言程序設(shè)計活頁式教程 課件全套 張勁波 01創(chuàng)建C語言程序 -06使用指針處理數(shù)據(jù)_第2頁
C語言程序設(shè)計活頁式教程 課件全套 張勁波 01創(chuàng)建C語言程序 -06使用指針處理數(shù)據(jù)_第3頁
C語言程序設(shè)計活頁式教程 課件全套 張勁波 01創(chuàng)建C語言程序 -06使用指針處理數(shù)據(jù)_第4頁
C語言程序設(shè)計活頁式教程 課件全套 張勁波 01創(chuàng)建C語言程序 -06使用指針處理數(shù)據(jù)_第5頁
已閱讀5頁,還剩648頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C語言程序設(shè)計活頁式教程項目一創(chuàng)建C語言程序項目任務(wù)知識目標(biāo)學(xué)習(xí)目標(biāo)任務(wù)1初識C語言任務(wù)2創(chuàng)建HelloWorld程序(1)了解程序語言的發(fā)展歷程。(2)了解C語言的發(fā)展和特點(diǎn)。(3)了解應(yīng)用程序的分類。(4)掌握C語言開發(fā)環(huán)境的搭建。(5)能夠創(chuàng)建最簡單的C語言程序,并編譯運(yùn)行。任務(wù)準(zhǔn)備任務(wù)實(shí)施任務(wù)描述任務(wù)1初識C語言任務(wù)描述本任務(wù)主要介紹程序語言的發(fā)展、C語言的發(fā)展和特點(diǎn)、各種類型的應(yīng)用程序等,重點(diǎn)講解用C語言開發(fā)項目的過程,讓學(xué)生對C語言有一個全面的認(rèn)識。任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)準(zhǔn)備1.程序語言的發(fā)展程序設(shè)計語言的發(fā)展經(jīng)歷了以下幾個階段:(1)機(jī)器語言(2)匯編語言(3)高級語言高級語言的發(fā)展經(jīng)歷了約三個階段:(1)非結(jié)構(gòu)化的語言階段(2)結(jié)構(gòu)化的語言階段(3)面向?qū)ο蟮恼Z言階段任務(wù)準(zhǔn)備2.C語言的發(fā)展和特點(diǎn)美國貝爾實(shí)驗室的丹尼斯·M·里奇在B語言的基礎(chǔ)上設(shè)計出了一種新的語言,取名為C語言,并試著以C語言編寫UNIX操作系統(tǒng)。1972年,丹尼斯·M·里奇完成了C語言的設(shè)計,并成功地利用C語言編寫出了操作系統(tǒng),從而降低了操作系統(tǒng)的修改難度。任務(wù)準(zhǔn)備C語言具有如下特點(diǎn):(1)語法簡單,使用方便、靈活。C語言有31個常用關(guān)鍵字,9種控制語句,程序書寫形式自由靈活。(2)數(shù)據(jù)類型豐富。C語言的數(shù)據(jù)類型有整型、實(shí)型、字符型、枚舉型和各種構(gòu)造類型,還允許用戶自定義類型。利用這些數(shù)據(jù)類型可以實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。(3)運(yùn)算符豐富。C語言共有44種運(yùn)算符,運(yùn)算類型極其豐富,表達(dá)式類型多樣。(4)語言處理能力強(qiáng)。由于C語言中引入了指針、地址、結(jié)構(gòu)、位運(yùn)算等功能,與匯編語言十分接近,大大提高了語言的處理能力。(5)生成的目標(biāo)代碼質(zhì)量高,運(yùn)行效率高。(6)C語言程序可移植性好。C語言程序中,沒有直接依賴于硬件的語句。與硬件有關(guān)的操作,如數(shù)據(jù)的輸入、輸出都是通過調(diào)用系統(tǒng)提供的庫函數(shù)來實(shí)現(xiàn)的,而這些庫函數(shù)本身并不是C語言的組成部分。因此編寫的程序很容易由一個系統(tǒng)移植到另一個系統(tǒng)中。(7)C語言是一種結(jié)構(gòu)化語言。用C語言開發(fā)軟件時,可以軟件功能進(jìn)行模塊劃分,將大的功能模塊劃分成一些單一的功能模塊,再用函數(shù)實(shí)現(xiàn)模塊的功能。當(dāng)然,C語言也有很多不足之處。例如,C語言對數(shù)據(jù)類型的檢查不嚴(yán)格,不檢查數(shù)組下標(biāo)越界,運(yùn)算符較多且優(yōu)先級與結(jié)合性難掌握等等。任務(wù)準(zhǔn)備3.各種類型的應(yīng)用程序(1)控制臺應(yīng)用程序控制臺應(yīng)用程序是為了兼容DOS程序而設(shè)立的,這種程序運(yùn)行時會出現(xiàn)一個DOS窗口,沒有可視化的界面,只是通過字符串來顯示或者監(jiān)控程序。像Windows系統(tǒng)自帶的“ping.exe”、“shutdown.exe”、“ipconfig.exe”等文件都是控制臺應(yīng)用程序,它們通常位于“C:\Windows\System32”路徑下。在Windows自帶的命令提示符中運(yùn)行“ipconfig.exe”程序,會出現(xiàn)如圖1-1所示的界面。圖1-1程序ipconfig.exe的運(yùn)行結(jié)果任務(wù)準(zhǔn)備3.各種類型的應(yīng)用程序(2)Windows應(yīng)用程序Windows應(yīng)用程序是Windows環(huán)境下的窗口程序,運(yùn)行時一般會啟動一個窗口界面。界面呈矩形,界面是可以顯示一些信息,也可以有能與用戶交互的菜單、按鈕、文本框、圖表等。例如Windows自帶的計算器程序就是一個Windows應(yīng)用程序,它的界面如圖1-2所示,用戶可以使用它進(jìn)行復(fù)雜的數(shù)學(xué)運(yùn)算。本書所使用的開發(fā)工具Dev-C++也是一個Windows應(yīng)用程序,包括標(biāo)題欄、菜單欄、工具欄、可編輯區(qū)域和狀態(tài)欄等,可以用來編寫、編譯和運(yùn)行C程序。圖1-2計算器程序界面任務(wù)準(zhǔn)備3.各種類型的應(yīng)用程序(3)Web應(yīng)用程序Web應(yīng)用程序是一種可以通過瀏覽器訪問的軟件,而瀏覽器是用于瀏覽互聯(lián)網(wǎng)的應(yīng)用程序。Web應(yīng)用程序使用服務(wù)器端腳本和客戶端腳本的組合來呈現(xiàn)信息,通常需要身份驗證。此外,Web應(yīng)用程序還需要服務(wù)器來管理來自用戶的請求。常見Web應(yīng)用程序的示例包括在線表單、購物車、視頻流、社交媒體、游戲和電子郵件等。用于開發(fā)Web應(yīng)用程序的語言或技術(shù)有ASP、PHP、HTML和JAVA等。圖1-4智慧校園登錄界面任務(wù)準(zhǔn)備3.各種類型的應(yīng)用程序(4)手機(jī)應(yīng)用程序手機(jī)應(yīng)用程序又稱手機(jī)APP,主要指安裝在智能手機(jī)上的軟件。手機(jī)APP拓展了手機(jī)的功能,為用戶提供更豐富的使用體驗。手機(jī)APP的運(yùn)行需要有相應(yīng)的手機(jī)系統(tǒng),市場常用的手機(jī)系統(tǒng)有蘋果公司的iOS、谷歌公司的Android系統(tǒng)、華為公司的鴻蒙系統(tǒng)等。以阿里巴巴集團(tuán)旗下的手機(jī)APP淘寶為例,用戶可以在手機(jī)上通過淘寶APP購買心儀的商品,完成瀏覽商品、添加到購物車、下訂單、支付、物流查看、確認(rèn)收貨、評價商品、退貨等行為,它的界面如1-6所示。圖1-6淘寶APP界面任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)實(shí)施【任務(wù)1】如何用C語言開發(fā)一個軟件項目?1.任務(wù)分析C語言是一個被廣泛使用的、功能強(qiáng)大的編程語言,它主要應(yīng)用于系統(tǒng)軟件編程、嵌入式系統(tǒng)開發(fā)和應(yīng)用程序開發(fā)。在用C語言開發(fā)一個軟件項目時,必須有一套規(guī)范的開發(fā)流程,它能確保軟件項目的順利進(jìn)行、高質(zhì)量交付以及后續(xù)可行的維護(hù)。本任務(wù)將詳細(xì)介紹C語言項目的開發(fā)流程,包括需求分析、設(shè)計、編碼、測試和維護(hù)。任務(wù)實(shí)施【任務(wù)1】如何用C語言開發(fā)一個軟件項目?2.任務(wù)實(shí)現(xiàn)C語言采用結(jié)構(gòu)化程序設(shè)計思想,它的基本原理是將程序劃分為多個模塊,每個模塊負(fù)責(zé)完成一個特定的任務(wù),并通過適當(dāng)?shù)目刂平Y(jié)構(gòu)(分為順序、選擇和循環(huán)結(jié)構(gòu))將這些模塊組織起來。結(jié)構(gòu)化程序設(shè)計強(qiáng)調(diào)程序的模塊化、可讀性和可維護(hù)性,使得程序更易于理解和修改。模塊一般指完成特定功能的一段代碼,它可以接受數(shù)據(jù)的輸入、處理數(shù)據(jù)、產(chǎn)生輸出。模塊化設(shè)計將程序劃分為多個模塊,每個模塊負(fù)責(zé)完成一個特定的功能,提高了程序的可讀性和可維護(hù)性。在C語言中,一個實(shí)現(xiàn)特定功能的模塊對應(yīng)一個函數(shù)。模塊之間也可以相互調(diào)用,通過函數(shù)來實(shí)現(xiàn)。一個模塊可以調(diào)用其他模塊的函數(shù),以實(shí)現(xiàn)功能的組合和重用。可以根據(jù)功能、數(shù)據(jù)流、控制流等原則來劃分模塊。合理的模塊劃分可以提高程序的可讀性、可維護(hù)性和重用性。從軟件工程的角度,開發(fā)一個軟件項目一般要經(jīng)過需求分析、設(shè)計、編碼、測試和維護(hù)這五個過程。任務(wù)實(shí)施【任務(wù)1】如何用C語言開發(fā)一個軟件項目?3.任務(wù)總結(jié)一個科學(xué)的開發(fā)流程是確保軟件項目成功的關(guān)鍵。通過明確的需求分析、詳盡的設(shè)計、規(guī)范的編碼、全面的測試和持續(xù)的維護(hù),開發(fā)團(tuán)隊可以創(chuàng)建高質(zhì)量、可維護(hù)的C語言項目。不管在何種開發(fā)領(lǐng)域,良好的開發(fā)流程都是取得成功的關(guān)鍵。任務(wù)準(zhǔn)備任務(wù)實(shí)施任務(wù)描述任務(wù)2創(chuàng)建HelloWorld程序任務(wù)描述本任務(wù)主要介紹C語言程序的開發(fā)過程和開發(fā)工具,重點(diǎn)講解C語言項目的創(chuàng)建、程序的結(jié)構(gòu)等,讓學(xué)生能用Dev-cpp工具創(chuàng)建并運(yùn)行最簡單的HelloWorld程序。任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)準(zhǔn)備1.C語言程序的開發(fā)過程用C語言開發(fā)程序一般會經(jīng)歷編寫、編譯、鏈接和運(yùn)行共四個階段。(1)編寫源程序(2)編譯(3)鏈接(4)運(yùn)行任務(wù)準(zhǔn)備2.C語言程序的開發(fā)工具可以用來開發(fā)C語言程序的工具有很多,如Turboc、Dev-Cpp、MicrosoftVisualC++等,開發(fā)人員使用這些工具可以方便地編寫、編譯、鏈接和運(yùn)行C語言程序。本書使用Dev-cpp作為開發(fā)工具,所有項目的源代碼都在Dev-cpp中編譯通過。任務(wù)準(zhǔn)備(1)Dev-cpp的下載和安裝下載文件“Dev-cpp5.4.0.zip”后解壓出來,文件目錄如圖1-7所示:第一次雙擊運(yùn)行“devcpp.exe”程序,會彈出如圖1-8所示的對話框,用來對開發(fā)工具做初始配置。用戶可以設(shè)置開發(fā)工具的默認(rèn)語言,然后點(diǎn)擊“Next”去到下一步。圖1-7Dev-cpp5.4.0文件目錄圖1-8設(shè)置工具默認(rèn)的語言任務(wù)準(zhǔn)備來到第二個對話框,選擇“Onlycachethesefilesandtheirincludes:”,默認(rèn)將當(dāng)前文件以及它所使用的頭文件緩存,然后點(diǎn)擊“Next”去到下一個對話框,點(diǎn)擊“OK”后結(jié)束配置。配置結(jié)束后會彈出“每日提示”對話框,一般會勾選“啟動時不顯示提示”,然后關(guān)閉對話框。對話框關(guān)閉后,默認(rèn)顯示Dev-cpp的界面,如圖1-10所示。圖1-9緩存設(shè)置圖1-10Dev-cpp默認(rèn)界面任務(wù)準(zhǔn)備(2)在Dev-cpp中創(chuàng)建C語言項目用Dev-cpp開發(fā)軟件,一般從創(chuàng)建項目開始。一個C語言項目一般包含多個C語言文件,但只有一個文件中包含名為main的函數(shù),將該項目編譯后運(yùn)行,程序?qū)膍ain函數(shù)開始執(zhí)行。在開發(fā)工具Dev-cpp中依次選擇菜單“文件”→“新建”→“項目”,在彈出的對話框的Basic選項卡中,選擇代表控制臺程序類型的“ConsoleApplication”,勾選“C項目”,輸入項目名稱后確定,將所有項目文件保存在某個文件夾下。彈出的對話框如圖1-11所示。圖1-11創(chuàng)建C語言項目對話框任務(wù)準(zhǔn)備C語言項目創(chuàng)建好后,會默認(rèn)打開一個名為main.c的C語言文件,如圖1-12所示。開發(fā)人員需要將該文件保存到項目文件夾中,保存的同時還可以重命名該文件。

開發(fā)人員還可以在界面左側(cè)的項目名稱上右鍵,選擇“新建單元”來創(chuàng)建文件,并將文件保存為擴(kuò)展名為.c的C語言文件。圖1-12項目默認(rèn)打開界面任務(wù)準(zhǔn)備(3)編譯運(yùn)行C語言項目C語言項目必須編譯成功后能才運(yùn)行。將main.c文件的源代碼修改成如下代碼,該代碼的功能是輸出1~10的十個整數(shù),并以逗號隔開。#include<stdio.h>intmain(intargc,char*argv[]){ inti; for(i=1;i<=10;i++) printf("%d,",i); return0;}任務(wù)準(zhǔn)備將修改后的main.c文件保存后,可以通過菜單“運(yùn)行”→“編譯”來編譯文件,也可以通過工具欄按鈕來編譯文件,生成目標(biāo)文件main.o和可執(zhí)行文件Pro01.exe,其中main是C語言文件名,Pro01是項目名。項目經(jīng)過編譯,項目中的C語言文件如果沒有詞法或語法錯誤,即編譯通過,則會彈出如圖1-13所示的對話框。編譯通過后,再通過菜單“運(yùn)行”→“運(yùn)行”或工具欄按鈕來運(yùn)行程序,得到項目的運(yùn)行結(jié)果如圖1-13所示。圖1-13編譯通過對話框圖1-14項目運(yùn)行結(jié)果任務(wù)準(zhǔn)備也可以將編譯、運(yùn)行合并成一個步驟,如通過菜單“運(yùn)行”→“編譯運(yùn)行”或工具欄按鈕來同時編譯和運(yùn)行程序。如果項目中某個C語言文件有詞法或語法錯誤,Dev-cpp就會在源代碼窗口顯示哪一行報錯,在底部窗口顯示錯誤信息,如“[Error]'x'undeclared”,編譯不通過的情況如圖1-15所示。開發(fā)人員可以根據(jù)錯誤信息來定位和修改源代碼。如果整個項目編譯通過,Dev-cpp就會彈出窗口顯示程序的運(yùn)行結(jié)果。圖1-15編譯不通過任務(wù)準(zhǔn)備3.C語言程序的結(jié)構(gòu)以輸出1~10的十個整數(shù)的C語言代碼為例。#include<stdio.h>intmain(intargc,char*argv[]){ inti; for(i=1;i<=10;i++) /*從1循環(huán)到10*/ printf("%d,",i); /*輸出*/ return0;}一個簡單的C語言代碼由預(yù)編譯命令、函數(shù)、變量和常量、語句和表達(dá)式、注釋等組成。任務(wù)準(zhǔn)備#include<>是一條預(yù)編譯命令,聲明該程序使用了頭文件stdio.h中的內(nèi)容,因為程序中使用了標(biāo)準(zhǔn)庫函數(shù)printf(),而它就是在頭文件stdio.h中定義的。C程序由函數(shù)構(gòu)成,函數(shù)是C程序的基本單位。整個C語言項目中有且只能有一個main()函數(shù)。main()函數(shù)也稱主函數(shù),不管它在程序文件中的哪個位置,C程序都從main()函數(shù)處開始執(zhí)行。用{}括起來的是main()函數(shù)的函數(shù)體,所有的語句都放在{}中,每條語句以分號結(jié)束。變量和常量用于記錄數(shù)據(jù),變量的值可以不斷修改,常量不能修改。上述代碼中的i就是一個變量,通過for循環(huán)來修改它的值,讓變量i的取值從1遞增到10。上述代碼中的“inti;”、“for(){…}”和“return0;”都是語句,它們以分號線束。而表達(dá)式是語句的一部分,如“i++”。注釋是一種編寫代碼時用來解釋程序的作用和用途的特殊語句,可以提高代碼的可讀性和可維護(hù)性,讓代碼更易于理解和修改。在C語言中,注釋有兩種基本類型,分別為單行注釋和多行注釋。單行注釋是一行以//開頭的注釋語句。在單行注釋中,從//開始到行末的所有內(nèi)容都被視為注釋,不會被編譯器編譯。多行注釋是一對以/*和*/包圍的注釋語句,中間的內(nèi)容都被視為注釋,不會被編譯器編譯。任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)實(shí)施【任務(wù)1】創(chuàng)建HelloWorld程序。1.任務(wù)分析本任務(wù)將詳細(xì)介紹用Dev-cpp開發(fā)最簡單的HelloWorld程序的過程,包括項目創(chuàng)建、代碼編寫、項目編譯和運(yùn)行。2.任務(wù)實(shí)現(xiàn)在開發(fā)工具Dev-cpp中依次選擇菜單“文件”→“新建”→“項目”,在彈出的對話框的Basic選項卡中,選擇代表控制臺程序類型的“ConsoleApplication”,勾選“C項目”,輸入項目名稱Pro02后確定,將所有項目文件保存在D:\Pro02文件夾下。在默認(rèn)打開main.c文件中輸入如下代碼,并將文件保存在D:\Pro02文件夾下,保存時將文件名main.c修改成t01.c。#include<stdio.h>intmain(intargc,char*argv[]){ printf("HelloWorld"); return0;}任務(wù)實(shí)施點(diǎn)擊工具欄上的按鈕編譯文件t01.c,生成目標(biāo)文件t01.o和可執(zhí)行文件Pro02.exe。編譯成功后,目錄D:\Pro02下的文件列表如圖1-16所示。編譯通過后,再通過菜單“運(yùn)行”→“運(yùn)行”或工具欄按鈕來運(yùn)行程序,得到項目的運(yùn)行結(jié)果如圖1-17所示。圖1-16編譯成功后的文件列表圖1-17程序運(yùn)行結(jié)果任務(wù)實(shí)施3.任務(wù)總結(jié)一個C語言項目中可以有多個C語言文件,但只能有一個C語言文件中有main()函數(shù),運(yùn)行項目時只會執(zhí)行main()函數(shù)中的代碼。在后續(xù)的項目中,為每一個任務(wù)創(chuàng)建一個C語言項目,將“任務(wù)準(zhǔn)備”中的實(shí)例代碼、“任務(wù)實(shí)施”中的任務(wù)實(shí)現(xiàn)代碼都保存在該C語言項目中,每個實(shí)例和任務(wù)代碼中都有一個main()函數(shù)。由于C語言項目中有多個main()函數(shù)時無法編譯通過,為了C語言項目能編譯運(yùn)行,必須確保項目中只有一個main()函數(shù)。因此,在編寫某個實(shí)例或任務(wù)的代碼時,會將其它C語言文件中的main()函數(shù)重命名為“mainsl01()”或“mainrw01()”等形式。謝謝!C語言程序設(shè)計活頁式教程項目二:存儲不同類型的數(shù)據(jù)項目任務(wù)知識目標(biāo)學(xué)習(xí)目標(biāo)任務(wù)1:用5個變量存儲學(xué)生信息任務(wù)2:用運(yùn)算符統(tǒng)計成績?nèi)蝿?wù)3:輸入和輸出任務(wù)4:用結(jié)構(gòu)體變量存儲學(xué)生信息任務(wù)5:認(rèn)識指針、枚舉、共用體和空類型(1)了解信息在計算機(jī)內(nèi)的存儲形式。(2)了解標(biāo)識符的意義和命名規(guī)則。(3)掌握常見的數(shù)據(jù)類型。(4)掌握常量和變量的定義和使用。(5)能夠選擇合適的數(shù)據(jù)類型變量,來存儲相關(guān)數(shù)據(jù)。任務(wù)準(zhǔn)備任務(wù)實(shí)施任務(wù)描述任務(wù)1用5個變量存儲學(xué)生信息任務(wù)描述本任務(wù)要求定義5個變量存儲學(xué)生的學(xué)號、姓名、性別、年齡、身高信息。要完成本任務(wù),必須了解C語言中的變量、常量、數(shù)據(jù)類型等概念,因此,本任務(wù)將花大量篇幅講解標(biāo)識符、變量、常量、數(shù)據(jù)類型、運(yùn)算符等基礎(chǔ)知識,讓學(xué)生初步具備用C語言操作常見數(shù)據(jù)的能力。任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)準(zhǔn)備1.標(biāo)識符標(biāo)識符是指用來標(biāo)識某個實(shí)體(如變量名、常量名、函數(shù)名、數(shù)組名、數(shù)據(jù)類型名等)的一個符號。標(biāo)識符的命名規(guī)則如下:(1)標(biāo)識符只能由英文字母、數(shù)字和下劃線組成,并且不能以數(shù)字開頭。(2)標(biāo)識符是區(qū)分大小寫的,如XYZ與xyz、Xyz、xYZ是不同標(biāo)識符。(3)自定義標(biāo)識符不能使用系統(tǒng)的關(guān)鍵字。(4)標(biāo)識符的長度是任意的,不同編譯器要求不同。(5)標(biāo)識符命名應(yīng)該做到“見名知意”,最好用英文字母命名,切忌用中文命名。書寫有大小寫混排(如getAge)、小寫加下劃線(如get_age)等風(fēng)格。任務(wù)準(zhǔn)備關(guān)鍵字又稱保留字,是指被C語言編譯器所預(yù)定義的、具有特殊含義的標(biāo)識符。這些關(guān)鍵字不能用作變量名、函數(shù)名或其他標(biāo)識符的名稱。下表是C語言中的全部32個關(guān)鍵字:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile表2-1C語言的關(guān)鍵字任務(wù)準(zhǔn)備2.數(shù)據(jù)類型C語言程序中的變量、常量、函數(shù)都需要指定數(shù)據(jù)類型。不同類型的數(shù)據(jù)在數(shù)據(jù)的存儲形式、取值范圍、占用內(nèi)存大小及可參與的運(yùn)算種類等方面都有所不同。C語言提供的數(shù)據(jù)類型分類如圖2-1所示,主要有四種數(shù)據(jù)類型:基本類型、構(gòu)造類型、指針類型和空類型。任務(wù)準(zhǔn)備基本類型是不可再分的數(shù)據(jù)類型,包括整型、浮點(diǎn)型、字符型。基本類型的常量或變量通常代表單個數(shù)據(jù)。構(gòu)造類型是由已知的基本類型通過一定的構(gòu)造方法構(gòu)造出來的類型,包括數(shù)組類型、結(jié)構(gòu)體類型、枚舉類型、共用體類型等。構(gòu)造類型的常量或變量通常代表一批數(shù)據(jù)。指針類型實(shí)際上是地址類型,指針類型的數(shù)據(jù)就是內(nèi)存中某個存儲單元的地址。指針類型用于構(gòu)造更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如鏈表、樹等。空類型代表無類型,意味著該數(shù)據(jù)類型不包含任何可用值。它通常用于表示不返回值的函數(shù)、不指向任何地址的指針變量以及一些特殊的應(yīng)用場景。任務(wù)準(zhǔn)備(1)字符型字符型數(shù)據(jù)描述單個字符,它的類型名是char。字符型常量是用一對單引號括起來的字符,如'a'、'A'、'+'、'$'、'?'、'\n'都是合法的字符常量。在C語言中,字符型數(shù)據(jù)有以下特點(diǎn):①字符常量是用單引號括起來的單個字符或轉(zhuǎn)義字符,用雙引號括起來的零個或多個字符是字符串常量。②每個字符數(shù)據(jù)在內(nèi)存中占用1個字節(jié),用于存儲它的ASCII碼值。③字符數(shù)據(jù)具有數(shù)值特征,可以像整數(shù)一樣參加運(yùn)算,此時相當(dāng)于對它的ASCII碼值進(jìn)行運(yùn)算。④字符'9'與整數(shù)9是不同的,字符'9'的ASCII碼值是57。'9'-9的值是48,'9'-'0'的值是9。⑤小寫字母的ASCII碼值比大寫字母的ASCII碼值大32,字符'a'的ASCII碼值是97,字符'A'的ASCII碼值是65,'a'-'A'的值是32,'z'-'a'的值是25。⑥轉(zhuǎn)義字符用于表示控制符(如回車、換行等)和不可見字符,以'\'開頭,后面跟一個字符或用八進(jìn)制數(shù)、十六進(jìn)制數(shù)表示的ASCII碼值。'\'的作用是改變后面的字符或ASCII碼值的原有意義,轉(zhuǎn)義為另外的含義。任務(wù)準(zhǔn)備常用轉(zhuǎn)義字符及其含義如表2-2所示。字符含義字符含義'\n'換行'\a'響鈴報警'\r'回車(指來到行首位置)'\"'一個雙引號'\0'空字符,用作字符串結(jié)束標(biāo)志'\''單引號'\t'水平制表符'\\'一個反斜杠'\v'垂直制表符'\?'問號'\b'退格'\f'走紙換頁'\ddd'1~3位八進(jìn)制ASCII碼值所代表的字符'\xhh'1~2位十六進(jìn)制ASCII碼值所代表的字符表2-2常見轉(zhuǎn)義字符任務(wù)準(zhǔn)備(2)整型整型類型用于描述整數(shù)。在C語言中,整型又可分為短整型、整型、長整型、無符號短整型、無符號整型和無符號長整型六種,其中整型最常用。C語言標(biāo)準(zhǔn)沒有規(guī)定各類整型數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù),各種類型的數(shù)據(jù)所占內(nèi)存的大小隨編譯系統(tǒng)的不同而有差異,可以使用sizeof運(yùn)算符計算某種數(shù)據(jù)類型占用內(nèi)存的大小。在devcpp環(huán)境下,各種整型的關(guān)鍵字、占用內(nèi)存字節(jié)數(shù)和取值范圍如表2-3所示。整型常量即整數(shù),包括正整數(shù)、零和負(fù)整數(shù)。在C語言中,整型常量可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù)表示。十進(jìn)制數(shù)由數(shù)字0~9和正負(fù)號組成,如255、-864等。十進(jìn)制數(shù)的特點(diǎn)是“逢十進(jìn)一”。八進(jìn)制數(shù)以數(shù)字0為前綴,由數(shù)字0~7組成,如0173、045等。八進(jìn)制數(shù)的特點(diǎn)是“逢八進(jìn)一”。十六進(jìn)制數(shù)以0X或0x為前綴,由數(shù)字0~9、A、B、C、D、E、F(字母大小寫均可,其中A~F分別代表10~15)組成,如0x45DE、0XA8C等。十六進(jìn)制數(shù)的特點(diǎn)是“逢十六進(jìn)一”。任務(wù)準(zhǔn)備各種整型類型及其特點(diǎn)如表2-3所示。表2-3各種整型類型關(guān)鍵字類型占字節(jié)數(shù)取值范圍shortint短整型2-32768~32767(-215~215-1)int整型4-2147483648~2147483647(-231~231-1)long長整型4-2147483648~2147483647(-231~231-1)unsignedshort無符號短整型20~65535(0~216-1)unsignedint無符號整型40~4294967295(0~232-1)unsignedlong無符號長整型40~4294967295(0~232-1)任務(wù)準(zhǔn)備(3)浮點(diǎn)型浮點(diǎn)型也稱為實(shí)型,是一種用于表示帶有小數(shù)部分?jǐn)?shù)值的數(shù)據(jù)類型,它可以存儲非整數(shù)的數(shù)值,包括小數(shù)形式、指數(shù)形式的數(shù)值等。小數(shù)形式的浮點(diǎn)型數(shù)據(jù)由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成,如12.345、-0.23等。指數(shù)形式的浮點(diǎn)型數(shù)據(jù)由尾數(shù)部分、字母e或E、指數(shù)部分組成,如5.79e-4、3.14E+5分別表示5.79×10-4、3.14×105。常見的浮點(diǎn)型數(shù)據(jù)類型有單精度浮點(diǎn)型(float)和雙精度浮點(diǎn)型(double)。單精度浮點(diǎn)型使用4個字節(jié)共32位存儲,可以表示約7位有效數(shù)字的數(shù)值,取值范圍是-3.4e-38~3.4e+38。雙精度浮點(diǎn)型使用8個字節(jié)共64位存儲,可以表示約16位有效數(shù)字的數(shù)值,取值范圍是-1.7e-308~1.7e+308。在C語言中,浮點(diǎn)型常量默認(rèn)是double型,如果要使用float型常量,請在數(shù)值后面加字母f或F,如12.345f、-0.23F等。與整型表示一個準(zhǔn)確的數(shù)值不同,浮點(diǎn)型數(shù)值在計算機(jī)上是近似表示的,單精度浮點(diǎn)型的近似程度比較低,而雙精度型的近似得度比較高。任務(wù)準(zhǔn)備浮點(diǎn)型數(shù)據(jù)在計算機(jī)編程中廣泛應(yīng)用于需要處理小數(shù)的場景,例如科學(xué)計算、金融計算、圖形處理等。由于浮點(diǎn)數(shù)的存儲方式和精度限制,它們可能存在一些精度損失和舍入誤差的問題。在進(jìn)行浮點(diǎn)數(shù)計算時,需要注意避免由于精度問題導(dǎo)致的計算錯誤。單精度浮點(diǎn)型與雙精度浮點(diǎn)型的區(qū)別如表2-4所示。表2-4常見浮點(diǎn)型關(guān)鍵字類型占字節(jié)數(shù)取值范圍常量舉例float單精度浮點(diǎn)型4-3.4×10-38~3.4×103812.345f-1.7e4Fdouble雙精度浮點(diǎn)型8-1.7×10-308~1.7×1030812.3455.79e-4任務(wù)準(zhǔn)備(4)數(shù)組類型數(shù)組類型是一種構(gòu)造類型,數(shù)組是相同類型數(shù)據(jù)的有序集合,數(shù)據(jù)類型可以是整型、浮點(diǎn)型、字符型這樣的基礎(chǔ)類型,也可以是結(jié)構(gòu)體、指針等復(fù)雜類型。數(shù)組中的每個數(shù)據(jù)我們稱之為“元素”,數(shù)組元素在內(nèi)存中是連續(xù)存儲的。一維數(shù)組的定義形式為:

數(shù)據(jù)類型數(shù)組名[數(shù)組長度];在定義數(shù)組時給數(shù)組元素集體賦值,稱為數(shù)組的初始化。數(shù)組的初始化只能在定義數(shù)組時進(jìn)行,之后只能給單個元素賦值。一維數(shù)組初始化的形式如下:

數(shù)據(jù)類型數(shù)組名[數(shù)組長度]={初值表};任務(wù)準(zhǔn)備常見類型的數(shù)組定義和初始化如下:inta[10];intb[10]={0,1,2,3,4,5,6,7,8,9};doublec[6]={1.23,0.5,-4.3,5.55,3.14,6.3};charch1[5]={'a','b','c','d','e'};charch2[10]="abcde";/*直接用字符串常量給字符數(shù)組賦初值*/charch3[]="abcde";上述數(shù)組代碼中,int、double、char都是基礎(chǔ)類型,[]是數(shù)組的標(biāo)志,a、b、c、ch1、ch2、ch3都是數(shù)組的名稱。數(shù)組a是能存儲10個整型數(shù)據(jù)的數(shù)組,但這10個整型數(shù)據(jù)是隨機(jī)值;數(shù)組b能存儲10個整型數(shù)據(jù),它們分別是0~9;數(shù)組c能存儲6個雙精度浮點(diǎn)型數(shù)據(jù),它們分別是1.23、0.5、-4.3、5.55、3.14、6.3;數(shù)組ch1能存儲5個字符,它們分別是a、b、c、d、e;數(shù)組ch2能存儲10個字符,它可以在定義時用字符串常量"abcde"賦初值,并自動在末尾添加'\0'作為字符串的結(jié)束標(biāo)志,因此ch2還有4個元素沒有賦值;數(shù)組ch3沒有給出能存儲的字符個數(shù),它的存儲空間大小由初始值"abcde"來決定。一般用字符數(shù)組來存儲字符串,而且要求該字符數(shù)組的空間足夠大。本任務(wù)中學(xué)生的學(xué)號、姓名就是字符串,用字符數(shù)組來存儲。任務(wù)準(zhǔn)備3.常量在C語言中有三種形式的常量,它們分別是直接常量、符號常量和const常量。(1)直接常量直接常量又分字符型常量、整型常量、浮點(diǎn)型常量和字符串常量。字符型常量是用單引號括起來的單個字符或轉(zhuǎn)義字符,可以是'a'、'A'、'+'、'$'、'?'、'\n'等。整型常量可以是十進(jìn)制整數(shù)255、-864,也可以是八進(jìn)制整數(shù)0173、045,還可以是十六進(jìn)制整數(shù)0x45DE、0XA8C。浮點(diǎn)型常量可以是單精度浮點(diǎn)數(shù)12.345f、-0.23f、-1.7e4F,也可以是雙精度浮點(diǎn)數(shù)12.345、-3.14、5.79e-4。因為浮點(diǎn)數(shù)默認(rèn)是雙精度浮點(diǎn)型,所以單精度浮點(diǎn)數(shù)后面要加f或F來區(qū)分。字符串常量是用雙引號括起來在的零個或多個字符,如""、"abcde"都是字符串常量,它們存儲在內(nèi)存中時會自動在末尾添加'\0'作為結(jié)束標(biāo)志。通常用字符數(shù)組來存儲字符串常量,因此,可以像訪問數(shù)組元素一樣訪問字符串中的每一個字符。需要注意的是,在C語言中只有字符串常量,沒有字符串變量。任務(wù)準(zhǔn)備(2)符號常量符號常量也稱宏常量,是指用一個標(biāo)識符代表一個常量,這時該標(biāo)識符與常量等價。符號常量在使用之前必須先定義,一般形式為:#define標(biāo)識符常量值其中,“#define”是C語言的一個預(yù)處理指令,“define”為宏定義命令,“標(biāo)識符”為所定義的宏名,三個組成部分均用空格隔開。#define的作用類似于替換,用“標(biāo)識符”替換“常量值”。例如:#definePRICE20#definePI3.14159#definePI23.14159;上述代碼中,符號常量PRICE的值是20,程序中該命令之后出現(xiàn)的所有標(biāo)識符PRICE均用20代替。符號常量PI的值是“3.14159”,而符號常量PI2的值卻是“3.14159;”,因此,除非特殊需要,符號常量的值一般不出現(xiàn)分號。任務(wù)準(zhǔn)備(3)const常量const是C語言的關(guān)鍵字,用const修飾的標(biāo)識符為常量。const常量只能在定義時賦初值,在程序中只能讀取它的值,不能修改。const常量的定義形式為:

const數(shù)據(jù)類型常量名=常量值;例如:constdoublePI=3.14159;constintLEN=25;在之后的程序代碼中,無法修改常量PI和LEN的值,只能讀取。當(dāng)程序中多次用到某個常量值,后續(xù)修改時需要修改很多處代碼,這時就可以考慮將該常量值定義成const常量或符號常量。const常量與#define定義的符號常量也有區(qū)別:const常量有數(shù)據(jù)類型,會對常量值的類型進(jìn)行檢查,還可以對const常量進(jìn)行調(diào)試;而符號常量只進(jìn)行字符串替換,不進(jìn)行類型檢查,且不能對符號常量進(jìn)行調(diào)試。任務(wù)準(zhǔn)備3.變量變量是指在程序運(yùn)行期間其值可以發(fā)生變化的量。變量用于從外部接數(shù)據(jù)、保存一些不斷變化的值、保存中間結(jié)果及最終結(jié)果,而這些都無法用常量來實(shí)現(xiàn)。一個變量應(yīng)該有一個名字即變量名,在內(nèi)存中占據(jù)一定的存儲單元,在該存儲單元中存放變量的值。程序在編譯時由系統(tǒng)給變量分配一定的內(nèi)存空間,程序中對變量進(jìn)行處理時,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存空間,讀取或修改其中的數(shù)據(jù),也就是變量的值。在C語言中,變量必須遵循“先定義后使用”的原則,即每個變量在使用之前都要先定義,在定義時指明該變量的數(shù)據(jù)類型。變量定義語句有如下幾種形式:數(shù)據(jù)類型變量名;數(shù)據(jù)類型變量名=初始值;數(shù)據(jù)類型變量名1,變量名2,…,變量名n;數(shù)據(jù)類型變量名1,變量名2=初始值2,…,變量名n;定義單個變量時,要給出數(shù)據(jù)類型和變量名,中間用逗號隔開;在定義變量時可以賦初值,在變量名后面用等號連接初始值;多個同類型的變量可以一起定義,變量名中間用逗號隔開;多個同類型的變量一起定義時,也可以給部分變量名賦初值。任務(wù)準(zhǔn)備【實(shí)例1】定義一個char變量、int變量、float變量、double變量和char數(shù)組并賦初值,然后輸出到屏幕。#include<stdio.h>intmain(){ charch1='\n',ch2='A'; intx=100; floatf=1.78F; doubled=3.14; charname[20]="zhangsan"; printf("ch1=%c,ch2=%c,x=%d,f=%f,d=%lf,name=%s",ch1,ch2,x,f,d,name); return1;}編譯運(yùn)行結(jié)果如圖2-2所示:圖2-2實(shí)例1運(yùn)行結(jié)果任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)實(shí)施【任務(wù)1】用5個變量存儲學(xué)生信息:學(xué)號10001、姓名zhangsan、性別m或f、年齡19、身高1.75,然后輸出學(xué)生信息。1.任務(wù)分析本任務(wù)考查不同類型數(shù)據(jù)的存儲、變量的定義和輸出。學(xué)生的學(xué)號、姓名、性別、年齡和身高數(shù)據(jù),分別對應(yīng)C語言中不同數(shù)據(jù)類型,因此本任務(wù)首先要確定學(xué)生信息所對應(yīng)的類型。任務(wù)實(shí)施學(xué)生的學(xué)號、姓名的值是字符串常量,用字符數(shù)組存儲,并且要求字符數(shù)組的容量足夠大。初學(xué)者很容易將由數(shù)字組成的數(shù)據(jù)都?xì)w為整數(shù)類型或浮點(diǎn)數(shù)類型,而實(shí)際上學(xué)號、身份證號、電話號碼、準(zhǔn)考證號等都由數(shù)字組成,但它們并不代表大小,也不參與算術(shù)運(yùn)算,這些數(shù)字只是組成一定意義的字符串。因此,在編程中常用字符數(shù)組來存儲表示學(xué)號、身份證號、電話號碼、準(zhǔn)考證號的字符串常量。一些號碼如果用整型變量存儲會引起歧義甚至導(dǎo)致編譯錯誤,如果準(zhǔn)考證號“0004321”被賦值給整型變量,它會被編譯系統(tǒng)認(rèn)為是一個八進(jìn)制整數(shù),與字符串“0004321”完全不同。學(xué)生的性別用char類型變量來存儲,值只能是字符“M”或“F”,分別表示Male(男性的)和Female(女性的)。在C語言中,char類型數(shù)據(jù)占1個字節(jié),而漢字“男”占2個字節(jié),因此性別的值不能是漢字“男”或“女”。但在Java語言中,char類型占2個字節(jié),可以存儲一個漢字。學(xué)生的年齡用int型變量存儲,身高用浮點(diǎn)型變量存儲,單精度或雙精度均可。任務(wù)實(shí)施2.任務(wù)實(shí)現(xiàn)本任務(wù)的實(shí)現(xiàn)代碼如下,請將代碼中定義變量的類型補(bǔ)充完整。#include<stdio.h>intmain(){

xh[20]="10001"; /*學(xué)號不超過20個字符*/

xm[50]="zhangsan"; /*姓名不超過50個字符*/

xb='m'; /*性別是一個字符,用單引號*/

nl=19; /*年齡*/

sg=1.75f; /*身高*/ printf("學(xué)號:%s,姓名:%s,性別:%c,年齡:%d,身高:%.2f\n",xh,xm,xb,nl,sg); return100;}編譯運(yùn)行的結(jié)果如圖2-3所示:圖2-3輸出學(xué)生信息任務(wù)實(shí)施3.任務(wù)總結(jié)本任務(wù)要求學(xué)號不超過20個字符,姓名不起過50個字符。用庫函數(shù)printf()輸出時,格式字符串(即第1個參數(shù))中的%s、%s、%c、%d、%.2f分別對應(yīng)字符數(shù)組xh、字符數(shù)組xm、字符變量xb、整型變量nl、單精度浮點(diǎn)型變量sg的值,其中%.2f表示輸出的浮點(diǎn)型數(shù)據(jù)精確到小數(shù)點(diǎn)后兩位。任務(wù)準(zhǔn)備任務(wù)實(shí)施任務(wù)描述任務(wù)2:用運(yùn)算符統(tǒng)計成績?nèi)蝿?wù)描述本任務(wù)要求用數(shù)組存儲某學(xué)生的語文、數(shù)學(xué)、英語、物理、化學(xué)課程的成績,統(tǒng)計五門課程的平均分,并判斷平均分是否及格。完成本任務(wù)需要定義數(shù)組,掌握下標(biāo)運(yùn)算符、算術(shù)運(yùn)算符、強(qiáng)制轉(zhuǎn)換運(yùn)算符、條件運(yùn)算符的使用。因此,本任務(wù)將講解算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、位運(yùn)算符、條件運(yùn)算符、逗號運(yùn)算符、指針運(yùn)算符、求字節(jié)數(shù)運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符、分量運(yùn)算符、下標(biāo)運(yùn)算符的基礎(chǔ)知識,讓學(xué)生初步具備用使用運(yùn)算符操作數(shù)據(jù)的能力。任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)準(zhǔn)備1.算術(shù)運(yùn)算符算術(shù)運(yùn)算符有+、-、*、/、%,它們分別對應(yīng)數(shù)學(xué)運(yùn)算的加、減(或取反)、乘、除、取余,其中“-”即是減法運(yùn)算符(雙目),也是取反運(yùn)算符(單目)。兩個整數(shù)進(jìn)行算術(shù)運(yùn)算的結(jié)果仍是整數(shù),例如7+3得10,7-3得4,7*3得21,7/3得2,7%3得1。用算術(shù)運(yùn)算符將操作數(shù)連接起來的式子,稱為算術(shù)表達(dá)式。在C語言中兩個整數(shù)相除的結(jié)果仍然是整數(shù),沒有小數(shù)部分。只有將某個操作數(shù)先變成小數(shù)再參與除法運(yùn)算,才能得到小數(shù)的結(jié)果。因此,欲得到7/3的小數(shù)結(jié)果,可以采用7.0/3、1.0*7/3或(double)7/3運(yùn)算,其中(double)7是將整數(shù)7強(qiáng)制轉(zhuǎn)換成雙精度浮點(diǎn)數(shù)7.0。參與取余運(yùn)算(%)的兩個操作數(shù)必須是整數(shù),運(yùn)算的結(jié)果是整除后所得的余數(shù)。例如7%3的結(jié)果是1,12%7的結(jié)果是5。任務(wù)準(zhǔn)備各算術(shù)運(yùn)算符中,-(取反)的優(yōu)先級最高,其次是*、/、%,最后是+、-(減法)。在同優(yōu)先級的算術(shù)運(yùn)算符中,運(yùn)算順序是從左向右。詳細(xì)說明如表2-5所示。表2-5算術(shù)運(yùn)算符的優(yōu)先級和結(jié)合性運(yùn)算符類型優(yōu)先級結(jié)合性備注-單目高

低從右向左計算取反*/%雙目從左向右計算乘除取余+-雙目從左向右計算加減任務(wù)準(zhǔn)備【實(shí)例1】給定一個圓的半徑,求出該圓的面積,然后輸出到屏幕。#include<stdio.h>#definePI3.14159intmain(){ doubler=5,s; s=PI*r*r; printf("半徑為%lf的圓面積是:%lf\n",r,s); return1;}編譯運(yùn)行結(jié)果如圖2-4所示:圖2-4求圓的面積任務(wù)準(zhǔn)備2.關(guān)系運(yùn)算符C語言提供了<、<=、>、>=、==、!=共6種關(guān)系運(yùn)算符,它們分別對應(yīng)小于、小于等于、大于、大于等于、等于、不等于共6種關(guān)系。用關(guān)系運(yùn)算符將操作數(shù)連接起來的式子,稱為關(guān)系表達(dá)式。例如a>b、m==0、x!=5、y<=10等都是關(guān)系表達(dá)式,它們大多用作判斷條件。關(guān)系表達(dá)式的結(jié)果是“真”或“假”,代表條件成立或不成立。在C語言中,用0表示“假”,用1表示“真”,任何非零值都能夠被系統(tǒng)解釋為“真”。關(guān)系表達(dá)式大多用在if語句、for語句和while語句中,例如:if(x>0){……} /*如果x>0成立,則執(zhí)行{}中的代碼*/for(i=0;i<10;i++){……} /*重復(fù)執(zhí)行{}中代碼的條件是i<10成立*/while(i<10){……} /*重復(fù)執(zhí)行{}中代碼的條件是i<10成立*/任務(wù)準(zhǔn)備3.邏輯運(yùn)算符邏輯運(yùn)算也稱布爾運(yùn)算,C語言提供了&&、||、!三種邏輯運(yùn)算符,它們分別是邏輯與、邏輯或、邏輯非。用邏輯運(yùn)算符將操作數(shù)連接起來的式子,稱為邏輯表達(dá)式。邏輯與運(yùn)算連接兩個條件表達(dá)式,表達(dá)“并且”的含義。當(dāng)兩個條件表達(dá)式都成立時,邏輯與表達(dá)式的結(jié)果為真(即成立);只要有一個條件表達(dá)式不成立,邏輯與表達(dá)式的結(jié)果為假(即不成立)。例如,數(shù)學(xué)式子0<x<100對應(yīng)的邏輯表達(dá)式是:(x>0)&&(x<100)由于>、<運(yùn)算符的優(yōu)先級比&&運(yùn)算符高,因此該邏輯表達(dá)式也可以寫成這樣:x>0&&x<100又如,判斷字符變量ch的值是不是小寫字母的邏輯表達(dá)式是:ch>='a'&&ch<='z'任務(wù)準(zhǔn)備邏輯或運(yùn)算連接兩個條件表達(dá)式,表達(dá)“或者”的含義。只要有一個條件表達(dá)式成立,邏輯或表達(dá)式的結(jié)果為真(即成立);當(dāng)兩個條件表達(dá)式都不成立時,邏輯或表達(dá)式的結(jié)果為假(即不成立)。例如,表達(dá)x<0或者y>100的邏輯表達(dá)式是: x<0||y>100又如,判斷字符變量ch的值是不是字母(包含大寫字母和小寫字母)的邏輯表達(dá)式是: (ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')上述式子表達(dá)的是“ch是小寫字母或者ch是大寫字母”,因此||運(yùn)算符兩側(cè)的小括號不能省略。再如判斷某一年year是否是閏年,必須滿足下列兩個條件之一:①年份能被4整除,但不能被100整除。②年份能被400整除。由于==、!=運(yùn)算符的優(yōu)先級比&&、||運(yùn)算符高,因此證明year是閏年的邏輯表達(dá)式可以寫成: (year%4==0&&year%100!=0)||year%400==0任務(wù)準(zhǔn)備邏輯非運(yùn)算是單目運(yùn)算符,只需要一個操作數(shù)。所有單目運(yùn)算符的優(yōu)先級都比其他運(yùn)算符的優(yōu)先級高,因此,運(yùn)算符!的優(yōu)先級最高,其次是&&,再次是||。例如,假設(shè)整型變量x=5,則!x得到0;假設(shè)整型變量y=0,則!y得到1。即對非零值進(jìn)行邏輯非運(yùn)算會得到0,對0進(jìn)行邏輯非運(yùn)算會得到1。邏輯非表達(dá)式常用在if語句中作條件,如if(!x)表達(dá)的是“如果x等于0”,與if(x==0)是同樣的意思;而if(x)表達(dá)的是“如果x不等于0”,與if(x!=0)是同樣的意思。任務(wù)準(zhǔn)備4.賦值運(yùn)算符賦值運(yùn)算是指將一個數(shù)據(jù)賦給一個變量,賦值運(yùn)算符用“=”表示。賦值運(yùn)算的操作是有方向性的,它將等號右側(cè)表達(dá)式的值賦給左側(cè)的變量,等號左側(cè)不允許是表達(dá)式。由賦值運(yùn)算符和操作數(shù)組成的表達(dá)式稱為賦值表達(dá)式,其一般形式為:變量名=表達(dá)式;例如,x=25是將常量25賦值給變量x;y=y+1是將變量y的值加1后,再賦值給變量y;而x+y=z則是錯誤的賦值表達(dá)式,因為等號左側(cè)不能是x+y這樣的表達(dá)式。由于賦值運(yùn)算符比算術(shù)、關(guān)系、邏輯等運(yùn)算符的優(yōu)先級都要低,所以賦值表達(dá)式會先執(zhí)行等號右側(cè)的運(yùn)算,再將運(yùn)算結(jié)果賦值給等號左側(cè)的變量。因此,x=y=z=a+25也是正確的賦值表達(dá)式的寫法。但在C語言中,“=”代表賦值,“==”代表比較是否相等,使用時要注意區(qū)分。任務(wù)準(zhǔn)備C語言中還有一種特殊形式的賦值運(yùn)算符,稱為復(fù)合賦值運(yùn)算符。常見的復(fù)合賦值運(yùn)算符有+=、-=、*=、/=和%=,它們表示將左側(cè)變量的值與右側(cè)表達(dá)式的值進(jìn)行相應(yīng)的運(yùn)算后,再賦值給左側(cè)的變量。例如,x+=5表示x=x+5;y/=a+3表示y=y/(a+3)。此外,增1運(yùn)算符++和減1運(yùn)算符--也暗含賦值操作。例如,x++和++x等價于賦值表達(dá)式x=x+1,x--和--x等價于賦值表達(dá)式x=x-1。但++x表示先將x加1,再進(jìn)行其它操作,如y=++x表示先執(zhí)行x=x+1,再執(zhí)行y=x。而x++表示先執(zhí)行其它操作,再將x加1,如y=x++表示先執(zhí)行y=x,再執(zhí)行x=x+1。減1運(yùn)算也是同樣的流程。假設(shè)有int型變量x的值為3,對它分別執(zhí)行增1運(yùn)算和減1運(yùn)算后賦值給int型變量y,x與y之間的關(guān)系如表2-6所示。關(guān)于增1和減1運(yùn)算符,有些教材上會出現(xiàn)一些令人費(fèi)解的寫法,如y=-x++、y=a+++b等。建議初學(xué)者不要寫類似的代碼,可以考慮將y=-x++寫成:y=-x;x++; /*或者x=x+1*/可以將y=a+++b寫成:y=a+b;a++;任務(wù)準(zhǔn)備語句等價的語句執(zhí)行語句后的y值執(zhí)行語句后的x值y=x++;y=x;x=x+1;34y=++x;x=x+1;y=x;44y=x--;y=x;x=x-1;32y=--x;x=x-1;y=x;22表2-6增1和減1運(yùn)算任務(wù)準(zhǔn)備5.位運(yùn)算符位運(yùn)算是一種對二進(jìn)制數(shù)進(jìn)行操作的運(yùn)算方法。C語言提供了豐富的位運(yùn)算符號,可用于對二進(jìn)制數(shù)進(jìn)行各種運(yùn)算。位運(yùn)算只能用于整型變量和字符型變量,不能用于浮點(diǎn)型變量。C語言提供了六個位運(yùn)算符號,分別是按位取反~、按位與&、按位或|、按位異或^、左移位<<、右移位>>。按位取反運(yùn)算符“~”是單目運(yùn)算符,其功能是對操作數(shù)的每個二進(jìn)制位取反,即1變?yōu)?,0變?yōu)?。按位與運(yùn)算符“&”是雙目運(yùn)算符,其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)制位相與。對應(yīng)的兩個二進(jìn)制位只要有一個為0時,結(jié)果位就會為0;只有對應(yīng)的兩個二進(jìn)制位都為1時,結(jié)果位才為1。參與運(yùn)算的兩個數(shù)均以補(bǔ)碼出現(xiàn)。按位或運(yùn)算符“|”是雙目運(yùn)算符,其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)制位相或。只要對應(yīng)的兩個二進(jìn)制位有一個為1時,結(jié)果位就為1,其它情況結(jié)果位為0。當(dāng)參與運(yùn)算的是負(fù)數(shù)時,參與兩個數(shù)均以補(bǔ)碼出現(xiàn)。任務(wù)準(zhǔn)備按位異或運(yùn)算符“^”是雙目運(yùn)算符,其功能是將參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)制位相異或。只要對應(yīng)的兩個二進(jìn)制位不同,結(jié)果位就為1,相同則結(jié)果位為0。當(dāng)參與運(yùn)算的是負(fù)數(shù)時,參與兩個數(shù)均以補(bǔ)碼出現(xiàn)。按位左移運(yùn)算符“<<”是雙目運(yùn)算符,其功能將一個運(yùn)算對象的各二進(jìn)制位全部左移若干位,左邊的二進(jìn)制位丟棄,右邊補(bǔ)0。每左移一位,相當(dāng)于該數(shù)乘以2。例如,x<<n表示把x的每一位向左平移n位,右邊空位補(bǔ)0。按位右移運(yùn)算符“>>”是雙目運(yùn)算符,其功能將一個運(yùn)算對象的各二進(jìn)制位全部右移若干位,右邊的二進(jìn)制位丟棄,正數(shù)左邊空位補(bǔ)0,負(fù)數(shù)左邊空位補(bǔ)1。每右移一位,相當(dāng)于該數(shù)除以2。例如,x>>n表示把x的每一位向右平移n位,正數(shù)左邊補(bǔ)0,負(fù)數(shù)左邊補(bǔ)1。任務(wù)準(zhǔn)備【實(shí)例2】給定兩個char類型的數(shù)據(jù),對它們進(jìn)行六種位運(yùn)算并輸出結(jié)果。intmain(){ unsignedchara=60; /*二進(jìn)制:00111100*/ unsignedcharb=9; /*二進(jìn)制:00001001*/ unsignedcharc=~a; /*二進(jìn)制:11000011*/ unsignedchard=a<<1; /*二進(jìn)制:01111000*/ unsignedchare=a>>1; /*二進(jìn)制:00011110*/ unsignedcharf=a&b; /*二進(jìn)制:00001000*/ unsignedcharg=a|b; /*二進(jìn)制:00111101*/ unsignedcharh=a^b; /*二進(jìn)制:00110101*/ printf("60按位取反:%d\n",c); printf("60左移1位:%d\n",d); printf("60右移1位:%d\n",e);圖2-5各種位運(yùn)算的結(jié)果 printf("60與9按位與:%d\n",f); printf("60與9按位或:%d\n",g); printf("60與9按位異或:%d\n",h); return1;}任務(wù)準(zhǔn)備6.條件運(yùn)算符條件運(yùn)算符是C語言中唯一的一個三目運(yùn)算符,它用?和:將三個操作數(shù)分開。條件運(yùn)算符的語法格式為:

表達(dá)式1?表達(dá)式2:表達(dá)式3表達(dá)式1為關(guān)系表達(dá)式,結(jié)果為真或假。如果表達(dá)式1為真,則返回表達(dá)式2的值,否則返回表達(dá)式3的值。在條件運(yùn)算符中,表達(dá)式2和表達(dá)式3必須是同種數(shù)據(jù)類型,否則編譯器將會自動進(jìn)行類型轉(zhuǎn)換。條件運(yùn)算符通常用在賦值語句中,可以根據(jù)條件進(jìn)行不同的賦值操作。條件運(yùn)算符經(jīng)常作為if語句的簡捷形式來使用。例如,求兩個整數(shù)中的最大值,可以使用以下代碼:intx=32;inty=17;intz=(x>y)?x:y;如果x大于y,條件表達(dá)式“(x>y)?x:y”返回x的值,否則返回y的值。不管x與y的是怎樣的大小關(guān)系,該條件表達(dá)式都返回它們中的最大值。任務(wù)準(zhǔn)備7.逗號運(yùn)算符逗號運(yùn)算符是指逗號“,”,它將多個表達(dá)式連接起來構(gòu)成逗號表達(dá)式,它的作用是實(shí)現(xiàn)對各個表達(dá)式的順序求值。逗號表達(dá)式的一般形式為:

表達(dá)式1,表達(dá)式2,…,表達(dá)式n逗號表達(dá)式先從左到右依次計算每個表達(dá)式的值,并把最后一個表達(dá)式的值作為整個逗號表達(dá)式的值。例如逗號表達(dá)式“x=2,y=3,z=x+y”,先計算x=2的值,再計算y=3的值,最后計算z=x+y的值,結(jié)果為5,則整個逗號表達(dá)式的值為5。再如表達(dá)式“y=(x=2,3*x)”中,括號內(nèi)的“x=2,3*x”就是一個逗號表達(dá)式,它先計算x=2的值,再計算3*x的值,得結(jié)果6,最后將6賦值給變量y。逗號表達(dá)式還用于for語句,用于同時對多個循環(huán)變量賦初值和修改多個循環(huán)變量。例如“for(i=0,j=10;i<j;i++,j--){}”中的“i=0,j=10”和“i++,j--”就是逗號表達(dá)式。但定義多個同類型變量的語句“intx,y,z”就不是逗號表達(dá)式。任務(wù)準(zhǔn)備8.指針運(yùn)算符指針就是地址,在C語言中有兩個關(guān)于指針的運(yùn)算符:取地址運(yùn)算符&和指針運(yùn)算符*。&是取地址運(yùn)算符,&x即是變量x在內(nèi)存中的實(shí)際地址。*是指針運(yùn)算符,它返回其操作數(shù)(即一個指針)所指向的對象的值,*tp即是地址變量tp所指向的存儲單元中的數(shù)值。任務(wù)準(zhǔn)備9.求字節(jié)數(shù)運(yùn)算符sizeof是C語言的一種單目運(yùn)算符,它返回操作數(shù)所占內(nèi)存的字節(jié)數(shù)。操作數(shù)可以是一個常量、變量、類型名、數(shù)組名等,操作數(shù)的存儲大小由操作數(shù)的類型決定。例如,如果x是int型變量,則sizeof(x)和sizeof(int)都返回4;sizeof(3.14)返回double類型數(shù)據(jù)所占的字節(jié)數(shù)8;如果有數(shù)組inta[10],則sizeof(a)返回40,因為數(shù)組a占據(jù)10個int型數(shù)據(jù)的空間。sizeof運(yùn)算符多用在申請內(nèi)存空間時,計算存儲某類型數(shù)據(jù)所需要的字節(jié)數(shù)。任務(wù)準(zhǔn)備10.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符類型轉(zhuǎn)換是指將一種數(shù)據(jù)類型的值轉(zhuǎn)換為另一種數(shù)據(jù)類型的過程。在C語言中,不同類型的數(shù)據(jù)在一起運(yùn)算時,要先將這些數(shù)據(jù)轉(zhuǎn)換成相同的類型,再進(jìn)行運(yùn)算。通常類型轉(zhuǎn)換發(fā)生在字符型、整型和浮點(diǎn)型之間,分自動類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。將不同類型的數(shù)據(jù)一起運(yùn)算時,編譯系統(tǒng)會自動進(jìn)行類型轉(zhuǎn)換,會把占用內(nèi)存空間少的類型向占用空間多的類型轉(zhuǎn)換,以保證運(yùn)算結(jié)果的精度。當(dāng)不同類型的數(shù)據(jù)在一起運(yùn)算時,自動轉(zhuǎn)換的規(guī)則為:①float型數(shù)據(jù)自動轉(zhuǎn)換成double型;②char與short型數(shù)據(jù)自動轉(zhuǎn)換成int型;③int型數(shù)據(jù)自動轉(zhuǎn)換成double型;④int型數(shù)據(jù)自動轉(zhuǎn)換成unsigned型;⑤int型數(shù)據(jù)自動轉(zhuǎn)換成long型。任務(wù)準(zhǔn)備強(qiáng)制類型轉(zhuǎn)換是將某種類型的數(shù)據(jù)強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類型,強(qiáng)制類型轉(zhuǎn)換表達(dá)式的一般形式為:

(類型名)(表達(dá)式)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符形如“(類型名)”,其后跟一個表達(dá)式,作用是將該表達(dá)式的結(jié)果轉(zhuǎn)換成指定的數(shù)據(jù)類型。當(dāng)表達(dá)式是一個變量或常量時,表達(dá)式不需要加小括號。將整型數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為浮點(diǎn)型,數(shù)據(jù)的大小不變。如“(double)5”將得到double型數(shù)據(jù)5.000000,原先占4個字節(jié)的整數(shù)5變成了占8個字節(jié)的雙精度浮點(diǎn)型數(shù)5.000000。因此,當(dāng)想讓兩個整數(shù)相除后得到小數(shù)結(jié)果時,可以考慮將其中一個整數(shù)強(qiáng)制轉(zhuǎn)換成浮點(diǎn)型,如“(double)5/3”或“5/(double)3”都能得出結(jié)果為1.666667。將浮點(diǎn)型數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為整型,會損失數(shù)據(jù)的精度。如“(int)3.14”將得到int型數(shù)據(jù)3,原先占8個字節(jié)的雙精度浮點(diǎn)型數(shù)3.14變成了占4個字節(jié)的整型數(shù)3。C語言還提供了幾個類型轉(zhuǎn)換的庫函數(shù),如函數(shù)atof()的功能是把字符串轉(zhuǎn)換成浮點(diǎn)數(shù),函數(shù)atoi()的功能是把字符串轉(zhuǎn)換成整型數(shù),函數(shù)atol()的功能是把字符串轉(zhuǎn)換成長整型數(shù),函數(shù)gcvt()的功能是把浮點(diǎn)數(shù)轉(zhuǎn)換成字符串,函數(shù)strtod()的功能是把字符串轉(zhuǎn)換為double型值,函數(shù)strtol()的功能是把字符串轉(zhuǎn)換為長整型數(shù)。任務(wù)準(zhǔn)備11.分量運(yùn)算符分量運(yùn)算符包括“.”和“->”,它們用于訪問結(jié)構(gòu)體變量中的成員。引用結(jié)構(gòu)體變量的成員用“.”運(yùn)算符,引用結(jié)構(gòu)體指針的成員用“->”運(yùn)算符。假如一個指針變量p指向結(jié)構(gòu)體變量,則“結(jié)構(gòu)體變量.成員名”、“(*p).成員名”、“p->成員名”這三種訪問形式是等價的。關(guān)于結(jié)構(gòu)體類型將在后續(xù)章節(jié)講解。任務(wù)準(zhǔn)備12.下標(biāo)運(yùn)算符下標(biāo)運(yùn)算符由一對中括號[]組成,它有兩個操作數(shù),一個是數(shù)組名,另一個是下標(biāo)。它與數(shù)組名和下標(biāo)一起使用,作用是獲取數(shù)組的某個元素。下標(biāo)運(yùn)算符的語法格式如下:數(shù)組名[下標(biāo)]下標(biāo)是數(shù)組元素的編號,在C語言中下標(biāo)是從0開始計數(shù)的。例如,用“inta[10]”定義一個能存儲10個整數(shù)的數(shù)組,它的10個元素的下標(biāo)是0~9,這10個元素分別是a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]??梢酝ㄟ^“a[i]”形式讀取或修改下標(biāo)為i的元素的值。任務(wù)準(zhǔn)備13.運(yùn)算符優(yōu)先級和結(jié)合性只有掌握了運(yùn)算符的優(yōu)先級和結(jié)合性,才能正確地使用運(yùn)算符。當(dāng)一個表達(dá)式中出現(xiàn)不同類型的運(yùn)算符時,先對優(yōu)先級高的運(yùn)算符進(jìn)行運(yùn)算,再對優(yōu)先級低的運(yùn)算符進(jìn)行運(yùn)算。當(dāng)幾個運(yùn)算符的優(yōu)先級相同時,則根據(jù)運(yùn)算符的結(jié)合性確定運(yùn)算順序。運(yùn)算符的結(jié)合性規(guī)定了運(yùn)算時的結(jié)合方向:左結(jié)合和右結(jié)合。左結(jié)合規(guī)定從左向右計算,右結(jié)合規(guī)定從右向左計算。任務(wù)準(zhǔn)備表2-7運(yùn)算符的優(yōu)先級和結(jié)合性優(yōu)先級運(yùn)算符含義運(yùn)算類型結(jié)合方向1()[]->.圓括號數(shù)組下標(biāo)指向結(jié)構(gòu)體成員引用結(jié)構(gòu)體成員初等運(yùn)算符自左向右2!~-++--*&(類型名)sizeof邏輯非按位取反求負(fù)自增自減取指針內(nèi)容取地址強(qiáng)制類型轉(zhuǎn)換長度運(yùn)算單目運(yùn)算符從右向左優(yōu)先級運(yùn)算符含義運(yùn)算類型結(jié)合方向3*/%相乘相除取余算術(shù)運(yùn)算符自左向右4+-相加相減5<<

>>

左移右移位運(yùn)算符6>

<

>=<=大于小于大于等于小于等于關(guān)系運(yùn)算符7==!=等于不等于8&按位與位運(yùn)算符9^按位異或10|按位或11&&邏輯與邏輯運(yùn)算符12||邏輯或13?:條件運(yùn)算三目運(yùn)算符自右向左14=+=-=*=/=%=&=^=|=>>=<<=賦值運(yùn)算復(fù)合賦值運(yùn)算賦值運(yùn)算符15,逗號運(yùn)算逗號運(yùn)算符從左到右任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)實(shí)施【任務(wù)1】用數(shù)組存儲某學(xué)生的語文、數(shù)學(xué)、英語、物理、化學(xué)課程的成績(整數(shù)),統(tǒng)計這五門課程的平均分,并判斷平均分是否及格。1.任務(wù)分析本任務(wù)考查數(shù)組的定義和初始化,以及下標(biāo)運(yùn)算符、算術(shù)運(yùn)算符、強(qiáng)制轉(zhuǎn)換運(yùn)算符、條件運(yùn)算符的使用。任務(wù)要求五門課程的成績必須是整數(shù),所以可以用整型數(shù)組存儲。這五門課程的平均分可能是小數(shù),所以可以用浮點(diǎn)型變量存儲,單精度和雙精度均可。求五門課的總成績,要用下標(biāo)運(yùn)算符訪問每一個數(shù)組元素,用算術(shù)運(yùn)算符將五個成績相加。由于兩個整數(shù)相除只能得到整數(shù)結(jié)果,所以需要先將總成績強(qiáng)制轉(zhuǎn)換成小數(shù),再除以5,才能得到保留小數(shù)部分的平均分。最后在條件運(yùn)算表達(dá)式中比較平均分與60的大小,判斷平均分是否及格。任務(wù)實(shí)施2.任務(wù)實(shí)現(xiàn)本任務(wù)的實(shí)現(xiàn)代碼如下,請將代碼中空白處補(bǔ)充完整。#include<stdio.h>intmain(){ /*語文數(shù)學(xué)英語物理化學(xué)*/ intcj[5]={75,48,92,78,80}; /*定義數(shù)組并初始化*/ intzf; doublepjf; zf=

; /*求總分*/ pjf=

; /*求平均分*/ printf("平均分:%.2lf\n",pjf); printf("%s\n",

?"及格":"不及格");/*條件表達(dá)式*/ return0;}編譯運(yùn)行的結(jié)果如圖2-6:圖2-6求平均分任務(wù)實(shí)施3.任務(wù)總結(jié)第二個輸出語句中的條件表達(dá)式的結(jié)果是"及格"或"不及格",是字符串常量,因此用printf()函數(shù)輸出該結(jié)果時用“%s”格式。任務(wù)準(zhǔn)備任務(wù)實(shí)施任務(wù)描述任務(wù)3輸入和輸出任務(wù)描述本任務(wù)要求輸入學(xué)生的學(xué)號、姓名、性別、年齡、身高,用5個變量存儲,然后輸出學(xué)生信息。要完成本任務(wù),必須熟練掌握輸入函數(shù)scanf()和輸出函數(shù)printf()的用法。因此,本任務(wù)將講解C語言常見的輸入輸出函數(shù)的用法,讓學(xué)生具備輸入和輸出常見數(shù)據(jù)的能力。本任務(wù)主要涉及字符串型、字符型、整型、浮點(diǎn)型數(shù)據(jù)的輸入、存儲和輸出。任務(wù)準(zhǔn)備任務(wù)實(shí)施Part

1Part

2Part

3任務(wù)描述任務(wù)準(zhǔn)備1.getchar()和putchar()函數(shù)getchar()函數(shù)用于從鍵盤緩沖區(qū)讀取一個字符并返回該字符,它沒有參數(shù),一般將返回的字符存入字符變量或輸出。輸入內(nèi)容以回車鍵作為結(jié)束標(biāo)志。putchar()函數(shù)用于將參數(shù)中的字符數(shù)據(jù)輸出到屏幕。它們在頭文件stdio.h中定義,常見用法如下:charch=getchar();putchar(ch);任務(wù)準(zhǔn)備【實(shí)例1】輸入兩個字符并存儲,再輸出這兩個字符。#include<stdio.h>intmain(){ charch1,ch2; printf("請輸入兩個字符:");/*原樣輸出字符串內(nèi)容*/ ch1=getchar(); /*讀取輸入的一個字符*/ ch2=getchar(); printf("它們是:"); putchar(ch1); /*輸出一個字符*/ printf("%c",ch2); /*putchar(ch2);*/ return1;}編譯運(yùn)行結(jié)果如圖2-7所示:圖2-7字符的輸入和輸出任務(wù)準(zhǔn)備實(shí)例代碼中,putchar(ch)與printf("%c",ch)的功能相同,都能輸出一個字符。用戶的輸入以回車鍵表示結(jié)束,getchar()會依次讀取輸入內(nèi)容中的一個字符。當(dāng)需要讀取兩個輸入字符時,可以連續(xù)輸入兩個字符再回車,如輸入“AD”后回車,字符A和D就會分別被兩個getchar()函數(shù)讀取到。如果輸入“A”后回車,再輸入“D”后回車,則不會得到想要的結(jié)果,因為第一個getchar()函數(shù)會讀取到字符A,第二個getchar()函數(shù)會把第一個回車符當(dāng)作字符讀入,而不是字符D。因此,在連續(xù)輸入多個數(shù)據(jù)時,要避免字符數(shù)據(jù)讀入錯誤。任務(wù)準(zhǔn)備2.printf()函數(shù)printf()函數(shù)用于在標(biāo)準(zhǔn)輸出設(shè)備(屏幕)輸出數(shù)據(jù),其一般調(diào)用格式為:printf("格式控制字符串");printf("格式控制字符串",輸出值參數(shù)表);輸出值參數(shù)表是要輸出的數(shù)據(jù),這些數(shù)據(jù)可以是常量、變量或表達(dá)式,它們以逗號隔開。格式控制字符串也稱格式字符串,它表示想要輸出的格式。格式字符串可以包括兩部分:普通字符和格式轉(zhuǎn)換說明符。格式字符串中的普通字符會原樣輸出,而格式轉(zhuǎn)換說明符則將對應(yīng)的輸出值參數(shù)按指定的格式輸出,其以%開頭,后面跟具有特定意義的字符。輸出值參數(shù)必須與格式轉(zhuǎn)換說明符在類型、個數(shù)和位置上一一對應(yīng)。格式轉(zhuǎn)換說明符能控制輸出數(shù)據(jù)的類型、對齊方式、長度、小數(shù)位數(shù)等,如%d對應(yīng)輸出int型數(shù)據(jù),%5d對應(yīng)輸出占5個字符位置并靠右對齊的int型數(shù)據(jù),%-5d對應(yīng)輸出占5個字符位置并靠左對齊的int型數(shù)據(jù),%f對應(yīng)輸出float型和double型數(shù)據(jù),%6.2f對應(yīng)輸出占8個字符位置并且小數(shù)點(diǎn)后保留2位的浮點(diǎn)型數(shù)據(jù)。任務(wù)準(zhǔn)備printf()函數(shù)的格式轉(zhuǎn)換說明符及其含義如表2-8所示。格式轉(zhuǎn)換說明符含義%d或%i輸出帶符號的十進(jìn)制整數(shù),正數(shù)的符號省略。%md輸出帶符號的十進(jìn)制整數(shù),右對齊,占m位,不足m位補(bǔ)空格,超過m位則原樣輸出。%-md輸出帶符號的十進(jìn)制整數(shù),左對齊,占m位,不足m位補(bǔ)空格,超過m位則原樣輸出。%0md輸出帶符號的十進(jìn)制整數(shù),右對齊,占m位,不足m位補(bǔ)0,超過m位則原樣輸出。%u以無符號的十進(jìn)制整數(shù)形式輸出%o以無符號的八進(jìn)制整數(shù)形式輸出,不輸出前導(dǎo)符0。%x以無符號的十六進(jìn)制整數(shù)形式(小寫)輸出,不輸出前導(dǎo)符0x。%X以無符號的十六進(jìn)制整數(shù)形式(大寫)輸出,不輸出前導(dǎo)符0X。%f以十進(jìn)制小數(shù)形式輸出浮點(diǎn)型數(shù)據(jù),包括單精度和雙精度浮點(diǎn)型。%m.nf以十進(jìn)制小數(shù)形式輸出浮點(diǎn)型數(shù)據(jù),占m位,小數(shù)點(diǎn)后保留n位。%e或%E以指數(shù)形式輸出浮點(diǎn)型數(shù)據(jù),指數(shù)部分為e或E%c輸出一個字符,包含轉(zhuǎn)義字符。%s輸出字符串。%p輸出變量的地址。%%輸出百分號%。表2-8printf()函數(shù)的格式轉(zhuǎn)換說明符任務(wù)準(zhǔn)備【實(shí)例2】用printf()函數(shù)輸出字符、整數(shù)、浮點(diǎn)數(shù)、字符串和變量地址。intmain(){ charch='A'; intx=15; doubley=31.459; charstr[100]="abcdefg"; printf("ch=%c\n",ch); printf("x=%d,x=%-5d,x=%05d\n",x,x,x); printf("x=%o,x=%x,x=%X\n",x,x,x); printf("y=%f,y=%8.2f,y=%e\n",y,y,y); printf("str=%s\n",str); pr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論