![C語(yǔ)言程序設(shè)計(jì) 課件全套 于紅 模塊1-5 編程技術(shù)基礎(chǔ) - - 控制類實(shí)戰(zhàn)項(xiàng)目_第1頁(yè)](http://file4.renrendoc.com/view14/M0B/20/1C/wKhkGWcGG8WATi8xAAF8S-TU3B0459.jpg)
![C語(yǔ)言程序設(shè)計(jì) 課件全套 于紅 模塊1-5 編程技術(shù)基礎(chǔ) - - 控制類實(shí)戰(zhàn)項(xiàng)目_第2頁(yè)](http://file4.renrendoc.com/view14/M0B/20/1C/wKhkGWcGG8WATi8xAAF8S-TU3B04592.jpg)
![C語(yǔ)言程序設(shè)計(jì) 課件全套 于紅 模塊1-5 編程技術(shù)基礎(chǔ) - - 控制類實(shí)戰(zhàn)項(xiàng)目_第3頁(yè)](http://file4.renrendoc.com/view14/M0B/20/1C/wKhkGWcGG8WATi8xAAF8S-TU3B04593.jpg)
![C語(yǔ)言程序設(shè)計(jì) 課件全套 于紅 模塊1-5 編程技術(shù)基礎(chǔ) - - 控制類實(shí)戰(zhàn)項(xiàng)目_第4頁(yè)](http://file4.renrendoc.com/view14/M0B/20/1C/wKhkGWcGG8WATi8xAAF8S-TU3B04594.jpg)
![C語(yǔ)言程序設(shè)計(jì) 課件全套 于紅 模塊1-5 編程技術(shù)基礎(chǔ) - - 控制類實(shí)戰(zhàn)項(xiàng)目_第5頁(yè)](http://file4.renrendoc.com/view14/M0B/20/1C/wKhkGWcGG8WATi8xAAF8S-TU3B04595.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
模塊一編程技術(shù)基礎(chǔ)任務(wù)1.1編譯器的安裝與使用C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入
國(guó)際化的中國(guó),出國(guó)旅游變得十分便捷,要想體驗(yàn)當(dāng)?shù)氐娘L(fēng)土人情,除了看風(fēng)景還要與當(dāng)?shù)厝私涣?,交流的時(shí)候遇到語(yǔ)言障礙,將無(wú)法清晰的表達(dá)我們的想法。如果有一位翻譯陪伴,就十分方便。如果我們到不同語(yǔ)種的國(guó)家,就需要一種能夠適應(yīng)多種語(yǔ)言翻譯的翻譯人員或者翻譯機(jī)器。在C語(yǔ)言中,我們?cè)谂c機(jī)器交流的時(shí)候,也需要一種軟件,能夠?qū)⑽覀兊淖匀徽Z(yǔ)言翻譯成機(jī)器能識(shí)別的機(jī)器語(yǔ)言,這就是編譯器。那么常用的編譯器有哪些呢?他們都有什么特別的地方呢?張璐04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問(wèn)題引入05技能點(diǎn)檢測(cè)二技能點(diǎn)分析1.能夠安裝VC集成開(kāi)發(fā)環(huán)境2.能夠用VC編譯器創(chuàng)建工程學(xué)習(xí)目標(biāo)1.什么是編譯器?主要的功能是什么?2.C語(yǔ)言常用的編譯器有哪些?3.簡(jiǎn)述編譯器創(chuàng)建C語(yǔ)言項(xiàng)目的步驟?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問(wèn)題引入05技能點(diǎn)檢測(cè)三技能點(diǎn)詳解——VS2010VisualStudio(簡(jiǎn)稱VS)是一款經(jīng)典集成開(kāi)發(fā)環(huán)境。VisualC++(簡(jiǎn)稱VC)是VS里面的C/C++開(kāi)發(fā)環(huán)境,VC2010Express的中文名稱為VC2010學(xué)習(xí)版,按照以下步驟進(jìn)行安裝及配置VC2010Express。1.安裝VisualC++2010Express2.安裝VisualStudio2010ServicePack13.注冊(cè)VisualC++2010Express4.VC2010的必要設(shè)置5.創(chuàng)建范例程序測(cè)試VC2010是否安裝正確6.根據(jù)個(gè)人使用習(xí)慣調(diào)整VC2010的工具欄及按鈕三技能點(diǎn)詳解—安裝
VisualC++2010ExpressVC2010
Express
的安裝方式分為兩種:在線安裝、離線安裝。其中,在線安裝包體積小(3M),安裝時(shí)僅聯(lián)網(wǎng)下載所需組件,在Win10
系統(tǒng)下的下載量小于100M;離線安裝包體積大,英文版694M,中文版1.8G,1)下載
下載的離線安裝包是ISO
光盤鏡像,直接雙擊,就可以將該鏡像虛擬成光盤。在文件管理器中找到新增加的光盤,啟動(dòng)光盤內(nèi)的安裝程序。也可以采用解壓模式,將虛擬文件解壓后,找到Setup.hta程序,打開(kāi)運(yùn)行,VC2010
Express
三技能點(diǎn)詳解—安裝
VisualC++2010Express2)離線安裝三技能點(diǎn)詳解—安裝
VisualC++2010Express3)注冊(cè)
VisualC++2010ExpressVC2010Express
版是免費(fèi)的,但是需要注冊(cè)一下,否則會(huì)有30天的試用期限。啟動(dòng)VC2010,菜單Help->RegisterProduct,打開(kāi)產(chǎn)品注冊(cè)窗口。在過(guò)去,點(diǎn)擊"Obtainaregistrationkeyonline"
即可在線獲取注冊(cè)密鑰。但是對(duì)VC2010
這個(gè)早期產(chǎn)品,微軟已經(jīng)不再維護(hù)了,點(diǎn)這個(gè)按鈕并不能獲取到注冊(cè)密鑰。三技能點(diǎn)詳解—VC2010
的必要設(shè)置1)設(shè)置幫助系統(tǒng)VC2010
的離線幫助已經(jīng)無(wú)法通過(guò)網(wǎng)絡(luò)直接下載了,因此建議直接使用在線瀏覽幫助。設(shè)置步驟:?jiǎn)?dòng)VC2010,幫助菜單。2)設(shè)置為“專家設(shè)置”VC2010
默認(rèn)是基本設(shè)置,切換為專家設(shè)置:菜單
工具->設(shè)置->專家設(shè)置。切換后,可以看到菜單項(xiàng)增加了一些。這些增加的菜單項(xiàng),在后續(xù)編程學(xué)習(xí)中很有用三技能點(diǎn)詳解—VC2010
的必要設(shè)置3)取消加載“調(diào)試符號(hào)模塊”
在
VC
的調(diào)試階段如果需要使用所依賴dll
的調(diào)試信息,就需要調(diào)試符號(hào)模塊,通常可以在線下載或手動(dòng)安裝。由于一些網(wǎng)絡(luò)訪問(wèn)調(diào)試符號(hào)服務(wù)器非常慢,這就導(dǎo)致了VC
啟動(dòng)慢的問(wèn)題。其實(shí)這個(gè)調(diào)試符號(hào)對(duì)絕大多數(shù)程序員來(lái)說(shuō)都沒(méi)多大意義,可以關(guān)閉加載調(diào)試符號(hào)模塊的功能。三技能點(diǎn)詳解—VC2010
的必要設(shè)置4)調(diào)整VC2010
的工具欄VC2010
的工具欄的定制性很強(qiáng),可以根據(jù)自己的習(xí)慣做相應(yīng)的調(diào)整。例如,編譯和執(zhí)行程序缺少工具欄按鈕,如果覺(jué)得不方便,可以相應(yīng)調(diào)整。在工具欄的空白區(qū)域右擊鼠標(biāo),勾選“調(diào)試”、“生成”和“文本編輯”三技能點(diǎn)詳解—VC2010
的必要設(shè)置三技能點(diǎn)詳解—VC2010項(xiàng)目創(chuàng)建1)創(chuàng)建新項(xiàng)目。點(diǎn)工具欄第一個(gè)按鈕,或者菜單文件->創(chuàng)建->項(xiàng)目...,或者按快捷鍵Ctrl+Shift+N,幾種方式都可以2)在"新建項(xiàng)目"
窗口選擇項(xiàng)目模版,選擇常規(guī)->空項(xiàng)目,
填寫:test(根據(jù)自己的需求,為項(xiàng)目命名)Location
填寫:E:\C_project(根據(jù)自己的習(xí)慣,選擇一個(gè)保存自己項(xiàng)目的路徑),確定三技能點(diǎn)詳解—VC2010項(xiàng)目創(chuàng)建3)添加新文件。在解決方案資源管理器
欄,選中test
項(xiàng)目,點(diǎn)工具欄第二個(gè)按鈕,或者右擊項(xiàng)目test
選擇菜單添加->新建項(xiàng)...,或者按快捷鍵Ctrl+Shift+A,幾種方式都可以。在"添加新文件"
窗口中,文件類型選擇:C++File(.cpp),Name
填寫:test.c(根據(jù)自己的需求,為文件命名),Location
暫時(shí)無(wú)需修改三技能點(diǎn)詳解—VC2010項(xiàng)目創(chuàng)建4)在新文件
test.c中輸入以下測(cè)試代碼:/********************************內(nèi)容簡(jiǎn)述:我的第一行代碼*******************************/#include
<stdio.h>#include
<stdlib.h>
voidmain(void){printf("******************\n");printf("歡迎進(jìn)入C語(yǔ)言的世界\n");printf("*****************\n");
system("pause");}三技能點(diǎn)詳解—VC2010項(xiàng)目創(chuàng)建5)編譯項(xiàng)目。點(diǎn)菜單生成->生成解決方案,或按快捷鍵F7,或者采用快捷圖標(biāo),三種方式都可以。然后在
輸出
窗口會(huì)看到編譯過(guò)程,最后一行可以看到提示"=======生成:成功1個(gè),失敗0個(gè),最新0個(gè),跳過(guò)0個(gè)=======",注意里面的失敗0個(gè),表示沒(méi)有編譯錯(cuò)誤。否則,必須修正錯(cuò)誤,再進(jìn)行下一步三技能點(diǎn)詳解—VC2010項(xiàng)目創(chuàng)建6)執(zhí)行程序。點(diǎn)菜單調(diào)試->開(kāi)始執(zhí)行(不調(diào)試),或者開(kāi)始執(zhí)行圖標(biāo),或按快捷鍵Ctrl+F5,三種方式都可以。然后會(huì)看到一個(gè)窗口內(nèi)顯示程序運(yùn)行結(jié)果三技能點(diǎn)詳解—VC2010項(xiàng)目創(chuàng)建1.安裝錯(cuò)誤采用vs2010professional安裝包安裝軟件的時(shí)候,如果出現(xiàn)如圖1.1.15所示的錯(cuò)誤提示,可以采用一下兩種方法進(jìn)行解決。一種是安裝包有問(wèn)題,可以從官網(wǎng)重新下載安裝包,重新安裝。另外一種是網(wǎng)絡(luò)問(wèn)題,通過(guò)以下步驟進(jìn)行設(shè)置。1)開(kāi)始---運(yùn)行---cmd--鍵入net
stop
WuAuServ回車(停止windows
update服務(wù))2)開(kāi)始---運(yùn)行--鍵入%windir%回車(打開(kāi)系統(tǒng)目錄)3)將SoftwareDistribution文件夾重命名為SDold4)開(kāi)始---運(yùn)行---cmd---鍵入net
start
WuAuServ回車三技能點(diǎn)詳解—VC2010錯(cuò)誤排查2.結(jié)果窗口閃過(guò)
點(diǎn)擊“開(kāi)始執(zhí)行(不調(diào)試)”按鈕(Ctrl+F5),運(yùn)行結(jié)果窗口一閃而過(guò)的解決辦法。一種方法是,在main函數(shù)的return前添加system("Pause"),同時(shí)添加頭文件“stdlib.h”;但是這種方法需要對(duì)每個(gè)程序添加此代碼。另一種方法是通過(guò)對(duì)vs進(jìn)行設(shè)置,三技能點(diǎn)詳解—VC2010錯(cuò)誤排查04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問(wèn)題引入05技能點(diǎn)檢測(cè)(1)KeiluVision5.18MDK版軟件簡(jiǎn)介:KeiluVision5.18MDK版是專注的編程軟件,一款由美國(guó)知名軟件公司Keil(現(xiàn)已被ARM公司收購(gòu))開(kāi)發(fā)的微控制器軟件開(kāi)發(fā)平臺(tái)。在業(yè)界有著廣大的好評(píng),KeilMDK:也稱uVision5(老版本為uVision4和uVision3)等。最新的KeilMDK5依然提供了編譯器、編譯器、安裝包和調(diào)試跟蹤,主要新增包管理器功能,支持LWIP,其SWD下載速度也是KEIL4的5倍。(2)KeiluVision5.18MDK版軟件下載:[軟件全稱]:KeiluVision5.18MDK版[軟件大小]:299MB[軟件語(yǔ)言]:中文[安裝環(huán)境]:Win7/Win8/Win10/Win11四技能點(diǎn)拓展——1.keil5的安裝與應(yīng)用04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問(wèn)題引入05技能點(diǎn)檢測(cè)五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線提交;完成技能檢測(cè),在線提交;模塊一編程技術(shù)基礎(chǔ)任務(wù)1.2
進(jìn)制及進(jìn)制轉(zhuǎn)換C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.2進(jìn)制及進(jìn)制轉(zhuǎn)換01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入
傳統(tǒng)算盤為上二下五珠,上面一粒表示“5”,下面一粒表示“1”,在用算盤進(jìn)行計(jì)算時(shí)采用“五升十進(jìn)制”。
在時(shí)間上用子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥表示一天的十二個(gè)時(shí)辰。
在易經(jīng)八卦采用“太極生兩儀,兩儀生四象,四象生八卦”的二進(jìn)制計(jì)數(shù)方式。
在稱重系統(tǒng)中,采用十六兩為一斤的十六進(jìn)制計(jì)量方式。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.2進(jìn)制及進(jìn)制轉(zhuǎn)換二技能點(diǎn)分析1.了解進(jìn)制的概念2.掌握進(jìn)制轉(zhuǎn)換的方法3.能夠完成二進(jìn)制,十進(jìn)制,十六進(jìn)制之間的轉(zhuǎn)換學(xué)習(xí)目標(biāo)1.什么是進(jìn)制?常用的進(jìn)制有哪些?2.什么是二進(jìn)制,十進(jìn)制,十六進(jìn)制,他們的數(shù)碼分別是哪些?3.十進(jìn)制轉(zhuǎn)二進(jìn)制的方法是什么?二進(jìn)制轉(zhuǎn)十進(jìn)制的方法是什么?4.十六進(jìn)制轉(zhuǎn)二進(jìn)制的方法是什么?二進(jìn)制轉(zhuǎn)十六進(jìn)制的方法是什么?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.2進(jìn)制及進(jìn)制轉(zhuǎn)換三技能點(diǎn)詳解——1數(shù)制
進(jìn)制也就是進(jìn)制位,我們常用的進(jìn)制包括:二進(jìn)制、八進(jìn)制、十進(jìn)制與十六進(jìn)制,它們之間區(qū)別在于數(shù)運(yùn)算時(shí)是逢幾進(jìn)一位。
數(shù)制概念:
數(shù)的表示規(guī)則稱為數(shù)制。十、十六、六十進(jìn)制,數(shù)制之間的關(guān)系如。
基數(shù)概念:
一個(gè)記數(shù)制包含的數(shù)字符號(hào)的個(gè)數(shù)稱為該數(shù)制的基數(shù)。權(quán)(位值)概念:某進(jìn)制中由位置決定的值叫位值或權(quán)。位權(quán)展開(kāi)概念:某進(jìn)制數(shù)的值都可以表示為各位數(shù)碼本身的值與其權(quán)的乘積之和。10進(jìn)制:
數(shù)碼:0,1,2,3,4,5,6,7,8,9權(quán):100,101,102,…(逢10進(jìn)位)2進(jìn)制:
數(shù)碼:0,1權(quán):20,21,22,…(逢2進(jìn)位)8進(jìn)制:
數(shù)碼:0,1,2,3,4,5,6,7權(quán):80、81、82(逢8進(jìn)位)16進(jìn)制:
數(shù)碼:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F權(quán):160、161、162…(逢16進(jìn)位)三技能點(diǎn)詳解——1數(shù)制三技能點(diǎn)詳解——2數(shù)制轉(zhuǎn)換二進(jìn)制轉(zhuǎn)十進(jìn)制的方法:位權(quán)展開(kāi)多項(xiàng)式之和口訣:1.數(shù)位數(shù)n。2.該位數(shù)碼乘以2n-13.加起來(lái)。三技能點(diǎn)詳解——2數(shù)制轉(zhuǎn)換十進(jìn)制轉(zhuǎn)二進(jìn)制的方法:短除法口訣:1.倒著除2取余數(shù)2.商和余數(shù)倒序排三技能點(diǎn)詳解——2數(shù)制轉(zhuǎn)換二進(jìn)制轉(zhuǎn)十六進(jìn)制的方法:以小數(shù)點(diǎn)位置為中心:向左,四位一段,不足四位,左補(bǔ)0;向右,四位一段,不足四位,右補(bǔ)0。將每段中的四位二進(jìn)制數(shù)轉(zhuǎn)化為一位十六進(jìn)數(shù)。三技能點(diǎn)詳解——2數(shù)制轉(zhuǎn)換十六進(jìn)制轉(zhuǎn)二進(jìn)制的方法:將一位十六進(jìn)制數(shù)轉(zhuǎn)化為四位二進(jìn)制數(shù),不足四位二進(jìn)制數(shù)時(shí),統(tǒng)一左補(bǔ)零。案例1.2.3二進(jìn)制轉(zhuǎn)十六進(jìn)制將二進(jìn)制數(shù)(110100110)轉(zhuǎn)為十六進(jìn)制數(shù)是多少?二進(jìn)制數(shù)轉(zhuǎn)十六進(jìn)制數(shù)方法為:取四合一,4位二進(jìn)制轉(zhuǎn)成十六進(jìn)制是從右到左開(kāi)始轉(zhuǎn)換,不足時(shí)補(bǔ)0三技能點(diǎn)詳解——案例案例1.2.4十六進(jìn)制轉(zhuǎn)二進(jìn)制將十六進(jìn)制數(shù)(1A6)轉(zhuǎn)為二進(jìn)制數(shù)是多少?十六進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)的方法為:十六進(jìn)制數(shù)通過(guò)除2取余法,得到二進(jìn)制數(shù),對(duì)每個(gè)十六進(jìn)制為4個(gè)二進(jìn)制,不足時(shí)在最左邊補(bǔ)零,三技能點(diǎn)詳解——案例04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.2進(jìn)制及進(jìn)制轉(zhuǎn)換四技能點(diǎn)拓展——1電腦計(jì)算器四技能點(diǎn)拓展——1電腦計(jì)算器四技能點(diǎn)拓展——2手機(jī)計(jì)算器04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.2進(jìn)制及進(jìn)制轉(zhuǎn)換五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線提交;完成技能檢測(cè),在線提交;C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入
數(shù)據(jù)是事實(shí)或觀察的結(jié)果,是對(duì)客觀事物的邏輯歸納,是用于表示客觀事物的未經(jīng)加工的原始素材。
數(shù)據(jù)是信息的表現(xiàn)形式和載體,可以是符號(hào)、文字、數(shù)字、語(yǔ)音、圖像、視頻等。在大數(shù)據(jù)的時(shí)代,所有數(shù)據(jù)都可以存儲(chǔ)到計(jì)算機(jī)系統(tǒng)中,那么數(shù)據(jù)在計(jì)算機(jī)系統(tǒng)內(nèi)是如何存儲(chǔ)的呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換二技能點(diǎn)分析1.了解C語(yǔ)言中的基本數(shù)據(jù)類型;2.掌握C語(yǔ)言中數(shù)據(jù)類型存儲(chǔ)格式;3.掌握運(yùn)算過(guò)程中數(shù)據(jù)類型轉(zhuǎn)換規(guī)律。學(xué)習(xí)目標(biāo)1.什么是數(shù)據(jù)類型?它有哪些種類?2.自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換的規(guī)則是什么?3.強(qiáng)制類型轉(zhuǎn)換的格式是什么?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換三技能點(diǎn)詳解——1數(shù)據(jù)類型C語(yǔ)言中的數(shù)據(jù)類型可分為基本類型、構(gòu)造類型、指針類型和空類型四大類,其中基本類型、構(gòu)造類型又可細(xì)分,如圖1.3.1所示。圖1.3.1數(shù)據(jù)類型的分類三技能點(diǎn)詳解——2數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換就是將數(shù)據(jù)(變量、數(shù)值、表達(dá)式的結(jié)果等)從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。類型轉(zhuǎn)換分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。1)自動(dòng)類型轉(zhuǎn)換
在不同類型的混合運(yùn)算或賦值運(yùn)算中,編譯器會(huì)按照一定規(guī)則自動(dòng)地轉(zhuǎn)換數(shù)據(jù)類型,將參與運(yùn)算的所有數(shù)據(jù)先轉(zhuǎn)換為同一種類型,然后再進(jìn)行計(jì)算或賦值。這種類型轉(zhuǎn)換是不需要程序員干預(yù),由編譯器自動(dòng)執(zhí)行,我們把它稱為自動(dòng)類型轉(zhuǎn)換。圖1.3.1數(shù)據(jù)類型的分類三技能點(diǎn)詳解——2數(shù)據(jù)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換的規(guī)則是:(1)轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低。如int型和long型運(yùn)算時(shí),先把int量轉(zhuǎn)成long型后再進(jìn)行運(yùn)算。(2)所有的浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精度量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再作運(yùn)算。(3)char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。三技能點(diǎn)詳解——2數(shù)據(jù)類型轉(zhuǎn)換在不同類型的賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換的規(guī)則是:賦值號(hào)兩邊量的數(shù)據(jù)類型不同時(shí),賦值號(hào)右邊量的類型將轉(zhuǎn)換為左邊量的類型。例如:
/*100是int類型的數(shù)據(jù),需要先轉(zhuǎn)換為float類型才能賦值給變量f。*/floatf=100;
如果右邊量的數(shù)據(jù)類型長(zhǎng)度左邊長(zhǎng)時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四舍五入向前舍入。所以說(shuō),自動(dòng)類型轉(zhuǎn)換并不一定是安全的。對(duì)于不安全的類型轉(zhuǎn)換,編譯器一般會(huì)給出警告。三技能點(diǎn)詳解——2數(shù)據(jù)類型轉(zhuǎn)換2)強(qiáng)制類型轉(zhuǎn)換
自動(dòng)類型轉(zhuǎn)換是編譯器根據(jù)代碼的上下文環(huán)境自行判斷的結(jié)果,但有時(shí)并不是那么“智能”,不能滿足所有的需求,這時(shí)就需要程序員使用強(qiáng)制類型轉(zhuǎn)換來(lái)實(shí)現(xiàn)所需的轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換是顯式的,程序員通過(guò)在代碼中使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符來(lái)指定類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換的一般格式為:(新類型符號(hào))表達(dá)式例如:(double)a;//將變量a強(qiáng)制轉(zhuǎn)換為double類型(int)(x+y);//把表達(dá)式x+y
的結(jié)果強(qiáng)制轉(zhuǎn)換為int整型(float)100;//將數(shù)值100(默認(rèn)為int類型)強(qiáng)制轉(zhuǎn)換為float類型三技能點(diǎn)詳解——2數(shù)據(jù)類型轉(zhuǎn)換在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題:(1)類型說(shuō)明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫成(int)x+y
則成了把x轉(zhuǎn)換成int型之后再與y相加了。(2)無(wú)論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說(shuō)明時(shí)對(duì)該變量定義的類型。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換四技能點(diǎn)拓展——1Typedef自定義數(shù)據(jù)類型typedef
unsigned
int
my_type;
通過(guò)這種方式定義,程序后面就可以向使用unsignedint一樣的使用my_type。如果,在不同平臺(tái)上移植一段代碼,采用typedef格式能夠?qū)崿F(xiàn)一個(gè)自定義數(shù)據(jù)類型在不同平臺(tái)上代表不同的數(shù)據(jù)類型,實(shí)現(xiàn)跨平臺(tái)移植。例如,在A平臺(tái)上
typedef
unsigned
int
my_type;
My_typea;//a的范圍是0-65536在B平臺(tái)上定義
typedef
unsigned
char
my_type;
My_typea;//a的范圍是0-256Typedef自定義數(shù)據(jù)類型的格式:四技能點(diǎn)拓展——1define宏定義數(shù)據(jù)類型Typedef自定義數(shù)據(jù)類型的一般形式為:
#define
標(biāo)識(shí)符
常量
//注意,最后沒(méi)有分號(hào)………#undef
標(biāo)識(shí)符
//解除對(duì)應(yīng)的宏定義例如:#definePI3.1415926//用PI定義3.1415926,實(shí)現(xiàn)其功能………#undefPI//解除對(duì)應(yīng)的宏定義
就是將PI定義為后面的3.1415926,在不需要定義的位置,增加#undefPI,解除宏定義。我們采用宏定義的這種特性對(duì)數(shù)據(jù)類型進(jìn)行縮寫,簡(jiǎn)化。例如:
#define
uint
unsigned
int
//用uint定義為unsignedint,實(shí)現(xiàn)其功能#defineu8unsigned
char
//用u8定義為unsigned插入,實(shí)現(xiàn)其功能案例1.3.1數(shù)據(jù)的存儲(chǔ)本案例為了得到某個(gè)類型或某個(gè)變量在特定平臺(tái)上的準(zhǔn)確大小,可以使用
sizeof
運(yùn)算符。/********************************************************************內(nèi)容簡(jiǎn)述:計(jì)算不同類型的存儲(chǔ)空間*******************************************************************/#include
<stdio.h>
//函數(shù)頭文件#include
<limits.h>
intmain(void)//主程序入口{
printf("char存儲(chǔ)大小:%u\n",sizeof(char));//輸出字符型的存儲(chǔ)字節(jié)數(shù)
printf("short存儲(chǔ)大小:%u\n",sizeof(short));//輸出短整型的存儲(chǔ)字節(jié)數(shù)
printf("int存儲(chǔ)大小:%u\n",sizeof(int));//輸出整型的存儲(chǔ)字節(jié)數(shù)
printf("long存儲(chǔ)大小:%u\n",sizeof(long));//輸出長(zhǎng)整型的存儲(chǔ)字節(jié)數(shù)/*************輸出單精度型的存儲(chǔ)字節(jié)數(shù)*************/
printf("float存儲(chǔ)大小:%u\n",sizeof(float));/***********輸出雙精度型的存儲(chǔ)字節(jié)數(shù)*************/
printf("double存儲(chǔ)大小:%u\n",sizeof(double));
return0;}四技能點(diǎn)拓展——案例案例1.3.2數(shù)據(jù)的運(yùn)算求整型量10與字符’a’的和,并將它賦給浮點(diǎn)型變量輸出。/************************************************內(nèi)容簡(jiǎn)述:求整型量10與字符’a’的和,并輸出************************************************/#include
<stdio.h>
intmain(void){
int
i=10;
chara='a';//ascii值是97
floatsum;sum=i+a;
printf("Valueofsum:%f\n",sum);
return0;}四技能點(diǎn)拓展——案例案例1.3.3數(shù)據(jù)的轉(zhuǎn)換某高校一學(xué)生在一周內(nèi)的總生活費(fèi)為200元,通過(guò)編程求該生的平均生活費(fèi)為多少元/天?/*****************************************************內(nèi)容簡(jiǎn)述:某高校一學(xué)生在一周內(nèi)的總生活費(fèi)為200元*通過(guò)編程求該生的平均生活費(fèi)為多少元/天?*****************************************************/#include
<stdio.h>
intmain(void){
intsum=200;//總生活費(fèi)
intcount=7;//總天數(shù)
doubleaverage;//平均數(shù)
average=(double)sum/count;
printf("Averageis%.2f\n",average);
return0;}四技能點(diǎn)拓展——案例案例1.3.4
數(shù)據(jù)的比較在本案例中,假設(shè)圓的半徑r=2,根據(jù)圓的面積公式s=πr2編寫程序計(jì)算該圓的面積,并將面積存于整型變量s1和浮點(diǎn)型變量s2中。/********************************************內(nèi)容簡(jiǎn)述:假設(shè)圓的半徑r=2,根據(jù)圓的面積公式*s=πr2編寫程序計(jì)算該圓的面積********************************************/#include<stdio.h>
intmain(void){
floatpi=3.14159;//定義浮點(diǎn)型變量pi存放圓周率,圓周率取值為3.14159
ints1,r=2;//定義整型變量s1和r分別存放面積和半徑值
doubles2;//定義雙精度浮點(diǎn)型變量s2存放面積
s1=r*r*pi;//計(jì)算面積并賦給s1s2=r*r*pi;//計(jì)算面積并賦給s2
printf("s1=%d,s2=%f\n",s1,s2);//打印輸出s1,s2
return0;}四技能點(diǎn)拓展——案例04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線提交;完成技能檢測(cè),在線提交;C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.4變量與常量C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.4變量與常量01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入
唯物辯證法告訴我們:無(wú)論是自然界、人類社會(huì)還是人的思維都是在不斷地運(yùn)動(dòng)、變化和發(fā)展的,事物的發(fā)展具有普遍性和客觀性。在人類社會(huì)發(fā)展的歷史長(zhǎng)河中,變化的是推動(dòng)社會(huì)發(fā)展的建設(shè)者,不變的是向前發(fā)展的方向;我國(guó)在堅(jiān)持中國(guó)特色社會(huì)主義發(fā)展道路中,變化的是不同時(shí)代中國(guó)共產(chǎn)黨領(lǐng)導(dǎo)的全國(guó)人民的奮斗歷程,不變的是中國(guó)共產(chǎn)黨的道路自信和初心使命。在大千世界中,存在許多變和不變的量,那么在計(jì)算機(jī)編程中如何使用這些量呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.4變量與常量二技能點(diǎn)分析1、了解變量及變量的數(shù)據(jù)類型;2、了解常量及常量的數(shù)據(jù)類型;3、掌握變量的定義和使用方法。學(xué)習(xí)目標(biāo)1.變量是什么?定義變量的格式是什么?2.變量命名必須遵守哪些規(guī)則?3.定義常量方式有哪些?各個(gè)方式定義的格式是什么?4.字符常量和字符串常量有何區(qū)別?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.4變量與常量三技能點(diǎn)詳解——1變量C語(yǔ)言代碼是從前往后依次執(zhí)行,變量在使用之前必須定義或者聲明。變量定義就是要告訴編譯器要?jiǎng)?chuàng)建的這個(gè)變量存儲(chǔ)什么類型的數(shù)據(jù),以便編譯器給該類型數(shù)據(jù)分配相應(yīng)大?。ㄗ止?jié)數(shù))的內(nèi)存空間,并對(duì)該內(nèi)存空間命名(即變量名)。三技能點(diǎn)詳解——1變量1)變量的定義在變量定義時(shí),需要指定一個(gè)數(shù)據(jù)類型,并包含了該類型的一個(gè)或多個(gè)變量名的列表,定義格式為:
數(shù)據(jù)類型
變量名1[,變量名2,變量名3…];例如:
intsum;
floata2,A2,_a2;變量命名必須遵守以下C標(biāo)識(shí)符命名規(guī)則:(1)第1個(gè)字符必須是字母或下劃線;(2)其余字符可以是字母、下劃線和數(shù)字;(3)字母區(qū)分大小寫;(4)用戶自定義標(biāo)識(shí)符不能與C語(yǔ)言的保留字或預(yù)定義標(biāo)識(shí)符同名,并應(yīng)盡量做到“見(jiàn)名知意”,以增加程序的可讀性。三技能點(diǎn)詳解——1變量C語(yǔ)言中只有32個(gè)保留字(關(guān)鍵字),如表1.4.1所示。表1.4.1C語(yǔ)言中的保留字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile例如,有效的變量名:inta;int_ab;inta30;無(wú)效的變量名:int2a;intab;intshort;2)變量的賦值變量定義后,就可以向變量代入值即變量賦值,在程序中,變量賦值可以用賦值語(yǔ)句來(lái)實(shí)現(xiàn),其格式為:
變量名=值的表達(dá)式;其中:“=”是賦值運(yùn)算符,將“=”右邊的“變量的值”代入到左邊的變量中存儲(chǔ),關(guān)于賦值運(yùn)算符的詳細(xì)內(nèi)容將在后續(xù)任務(wù)中講解?!爸档谋磉_(dá)式”可以是某一常數(shù)值或某一變量名或表達(dá)式。三技能點(diǎn)詳解——1變量三技能點(diǎn)詳解——1變量例如:
My_family_name='張';//向變量
My_family_name
賦值字符‘張’
My_age=19;//向變量
My_age
賦值19
i=a;//將儲(chǔ)存在變量a中的值賦給變量
i
Sum=8+10;//將8加上10的結(jié)果18賦給變量Sumtemp=a+6;//將變量a的值加上6的結(jié)果賦給變量temp程序中首次向變量中代入值稱為變量賦初值或變量的初始化。如:int
i,j;i=0;j=5;變量定義的同時(shí)也可進(jìn)行變量的初始化,如上面的代碼可寫成:int
i=0,j=5;三技能點(diǎn)詳解——1變量3)變量的作用域C語(yǔ)言中變量的作用域是指一個(gè)變量在程序中起作用的區(qū)域,一般可以理解為變量所在的{}的包圍區(qū)域。所有的變量都有自己的作用域,變量按照作用域的范圍可分為:局部變量和全局變量。決定變量作用域的是變量定義的位置。在程序塊(一個(gè){}內(nèi))定義的變量(稱為局部變量或內(nèi)部變量),只在該程序塊{}中起作用。也就是說(shuō),一個(gè)變量從被定義的位置開(kāi)始,到包含該變量定義的程序塊最后的大括號(hào)為止,這一區(qū)間內(nèi)是起作用的。例如:voidmain(void){ intx=2;//定義內(nèi)部變量x,只在main函數(shù)中有效}三技能點(diǎn)詳解——1變量
而在C程序的所有函數(shù)外部定義的變量(稱為全局變量或外部變量),從定義位置開(kāi)始,到該整個(gè)程序的結(jié)尾都是起作用的。例如:intx=2;//定義外部變量x,整個(gè)程序中有效voidmain(void){ ……}C語(yǔ)言規(guī)定在同一作用域中不能定義同名的變量,也就是說(shuō)在不同的作用域中可以定義同名變量,但在實(shí)際編程中不推薦這樣做。三技能點(diǎn)詳解——1變量4)變量的聲明變量在程序中必須先聲明后使用,變量的聲明是用于向程序表明變量的類型和名字,但聲明不一定引起內(nèi)存的分配。定義也是聲明,當(dāng)定義變量時(shí)我們聲明了它的類型和名字。如果在一個(gè)程序源文件函數(shù)內(nèi)想使用該文件的外部變量或一個(gè)源文件使用另一個(gè)源文件中定義的外部變量,則應(yīng)該在使用之前用關(guān)鍵字extern對(duì)該變量作“外部變量聲明”,表示該變量是一個(gè)已經(jīng)定義的外部變量。有了此聲明,就可以從“聲明”處起,合法地使用該外部變量。外部變量聲明的格式為:
extern數(shù)據(jù)類型外部變量名;三技能點(diǎn)詳解——1變量例如,引用同一個(gè)文件中的變量:voidfunc(void){
extern
intx;//聲明后面定義的外部變量xx=2;}intx;//定義外部變量x,
引用另一個(gè)文件中的變量:main.c:#include
<stdio.h>
voidmain(void){
extern
intx;//聲明func.c中定義的外部變量x
printf("main.cx=%d\n",x);}func.c:#include
<stdio.h>
intx=2;//定義外部變量x并初始化為2
void
func(void){
printf("func.cx=%d\n",x);}三技能點(diǎn)詳解——2常量
常量是固定值,在程序執(zhí)行期間不會(huì)改變。這些固定的值,又叫做字面量。常量可以是任何的基本數(shù)據(jù)類型,比如整數(shù)常量、浮點(diǎn)常量、字符常量,或字符串字面值,也有枚舉常量。常量就像是常規(guī)的變量,只不過(guò)常量的值在定義后不能進(jìn)行修改。1)整數(shù)常量整數(shù)常量可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制的常量。前綴指定基數(shù):0x或0X表示十六進(jìn)制,O表示八進(jìn)制,不帶前綴則默認(rèn)表示十進(jìn)制。三技能點(diǎn)詳解——2常量
整數(shù)常量也可以帶一個(gè)后綴,后綴是U和L的組合,U表示無(wú)符號(hào)整數(shù)(unsigned),L表示長(zhǎng)整數(shù)(long)。后綴可以是大寫,也可以是小寫,U和L的順序任意。下面列舉幾個(gè)整數(shù)常量的實(shí)例: 213//十進(jìn)制數(shù)213 O213//八進(jìn)制數(shù)213,等于十進(jìn)制數(shù)139 215u//無(wú)符號(hào)的整數(shù)215 0xFeeL//十六進(jìn)制的長(zhǎng)整數(shù)Fee 0xFF03aul//十六進(jìn)制的無(wú)符號(hào)長(zhǎng)整數(shù)FF03a 078//非法的:8不是八進(jìn)制的數(shù)字
032UU//非法的:不能重復(fù)后綴
2)浮點(diǎn)常量
浮點(diǎn)常量由整數(shù)部分、小數(shù)點(diǎn)、小數(shù)部分和指數(shù)部分組成。您可以使用小數(shù)形式或者指數(shù)形式來(lái)表示浮點(diǎn)常量。
當(dāng)使用小數(shù)形式表示時(shí),必須包含整數(shù)部分、小數(shù)部分,或同時(shí)包含兩者。當(dāng)使用指數(shù)形式表示時(shí),必須包含小數(shù)點(diǎn)、指數(shù),或同時(shí)包含兩者。帶符號(hào)的指數(shù)是用e或E引入的。下面列舉幾個(gè)浮點(diǎn)常量的實(shí)例: 3.14159//合法的 314159E-5L//合法的 510E//非法的:不完整的指數(shù)
210f//非法的:沒(méi)有小數(shù)或指數(shù)
.e55//非法的:缺少整數(shù)或分?jǐn)?shù)
三技能點(diǎn)詳解——2常量三技能點(diǎn)詳解——2常量3)字符常量字符常量是括在單引號(hào)中,如'2'、'a'、'E'、''等,每個(gè)字符占一個(gè)字節(jié),可以存儲(chǔ)在
char
類型的簡(jiǎn)單變量中。在計(jì)算機(jī)中,字符按ASCII值存放,上述對(duì)應(yīng)的4個(gè)字符的ASCII值為50、97、69、32等,字符常量可以是一個(gè)普通的字符(例如'x')、一個(gè)轉(zhuǎn)義序列(例如'\t')。在C中,有一些特定的字符,當(dāng)它們前面有反斜杠時(shí),它們就具有特殊的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符,例如,在前面的案例printf函數(shù)的格式串中用到的“\n”就是一個(gè)轉(zhuǎn)義字符,其意義是“換行”。常用轉(zhuǎn)義字符如表1.4.2所示。三技能點(diǎn)詳解——2常量表1.4.2常用轉(zhuǎn)義字符表轉(zhuǎn)義序列含義轉(zhuǎn)義序列含義\\\字符\n換行\(zhòng)''字符\r回車\""字符\t水平制表\??字符\v垂直制表\a警報(bào)鈴聲\ooo一到三位的八進(jìn)制數(shù)\b退格\xhh…一個(gè)或多個(gè)數(shù)字的十六進(jìn)制數(shù)\f換頁(yè)%%百分號(hào)%三技能點(diǎn)詳解——2常量4)字符串常量字符串字面值或常量是括在雙引號(hào)""中的,如"Hello,world!",它們?cè)趦?nèi)存中是按照每個(gè)字符的ASCII碼連續(xù)存放的,并在結(jié)尾處添加了一結(jié)束標(biāo)志'\0',對(duì)應(yīng)的ASCII值為0,這樣n個(gè)字符組成的字符串需占用n+1個(gè)字節(jié)。這里需注意的是:(1)字符串中包含有雙引號(hào)字符時(shí),字符雙引號(hào)必須用轉(zhuǎn)義字符表示;(2)一個(gè)字符串需占用兩行時(shí),需采用兩對(duì)雙引號(hào),如"Thisstring""istoolong!";案例1.4.1變量的作用域在變量的不同作用域中定義同名變量,并通過(guò)在各個(gè)作用域中輸出變量值檢驗(yàn)變量的作用域范圍。/***********************************************內(nèi)容簡(jiǎn)述:檢驗(yàn)同名變量在不同作用域的作用范圍***********************************************/#include
<stdio.h>
intx=1;//定義外部變量x,在以下程序代碼中有效void
func(void){
printf("funcx=%d\n",x);}voidmain(void){
intx=2;//x位于main函數(shù)下的{}中,是內(nèi)部變量,只在main函數(shù)中有效
func();//調(diào)用函數(shù)func(),即執(zhí)行func()下面的{}中的printf
printf("mainx=%d\n",x); {
intx=3;//x位于{}中的程序塊,只在該塊中有效
printf("blockx=%d\n",x);}}
三技能點(diǎn)詳解——案例案例1.4.2字符運(yùn)算與轉(zhuǎn)義字符字符常量在內(nèi)存中存儲(chǔ)和運(yùn)算時(shí)都是以ASCII碼形式進(jìn)行的,同時(shí)在使用printf()函數(shù)在屏幕輸出時(shí)需要使用一些轉(zhuǎn)義字符或格式控制字符來(lái)獲得所需的輸出格式/************************************************內(nèi)容簡(jiǎn)述:求’A’+1的結(jié)果并將結(jié)果以字符和整數(shù)
兩種格式輸出以及幾種轉(zhuǎn)義字符的使用***********************************************/#include
<stdio.h>
main(){
charc='A';//定義字符型變量c并初始化為'A'c=c+1;//c+1的結(jié)果賦給c
printf("\n%c\t%d\n",c,c);//以字符和整數(shù)格式輸出變量c的值
printf("ThetokenofRMBis:\n\t\tY\b=\n");}三技能點(diǎn)詳解——案例案例1.4.3extern聲明外部變量本案例是說(shuō)明在一個(gè)函數(shù)內(nèi)部如何聲明引用外部變量。/********************************************************內(nèi)容簡(jiǎn)述:
使用extern關(guān)鍵字在同文件的函數(shù)中引用聲明外部變量*******************************************************/#include
<stdio.h>
//函數(shù)外定義變量x和y
intx=10;//定義外部變量xinty=20;//定義外部變量y
int
addtwonum(void){
extern
intx;//函數(shù)內(nèi)聲明變量x和y為外部變量
extern
inty;//給外部變量(全局變量)x和y賦值x=1;y=2;}voidmain(void){intresult;addtwonum();//調(diào)用函數(shù)result=x+y;
printf("result為:%d\n",result);}三技能點(diǎn)詳解——案例04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.4變量與常量四技能點(diǎn)拓展——1#define定義標(biāo)識(shí)符常量
使用#define預(yù)處理指令定義符號(hào)常量的格式為:#define
標(biāo)識(shí)符常量
例如:#definePI3.1415926
這里標(biāo)識(shí)符通常使用“見(jiàn)名知義”的大寫英文字符串或英文單詞表示。例如:
編寫程序求不同大小的長(zhǎng)方形課桌面的面積。我們知道課桌有大有小,長(zhǎng)寬不一,假設(shè)某一課桌的長(zhǎng)為1.2m,寬為0.6m,求桌面的面積,程序如下:四技能點(diǎn)拓展——1#define定義標(biāo)識(shí)符常量#include
<stdio.h>
#defineLENGTH1.2//使用#define定義標(biāo)識(shí)符常量LENGTH代替實(shí)型常量1.2#defineWIDTH0.6//使用#define定義標(biāo)識(shí)符常量WIDTH代替0.6#defineNEWLINE'\n'//使用#define定義標(biāo)識(shí)符常量NEWLINE代替'\n'
voidmain(void){
floatarea;//定義浮點(diǎn)型變量area來(lái)存儲(chǔ)面積
area=LENGTH*WIDTH;//利用長(zhǎng)X寬求面積
printf("課桌面的面積:%f",area);
printf("%c",NEWLINE);}運(yùn)行結(jié)果:四技能點(diǎn)拓展——2
const定義常量使用
const
關(guān)鍵字定義常量的一般格式為:const
數(shù)據(jù)類型
變量名=常量;例如:const
intvar=7;//表示變量
var中保存7,不可改變這里需注意的是使用const關(guān)鍵字定義常量時(shí)必須初始化,且在同一語(yǔ)句中完成,如上面的語(yǔ)句不能寫成:const
intvar;var=7;四技能點(diǎn)拓展——2
const定義常量本案例使用const關(guān)鍵字方式定義常量求案例1.4.2中所述的課桌面面積,程序如下:#include
<stdio.h>
voidmain(void){
const
floatLENGTH=1.2;//使用const關(guān)鍵字定義常量LENGTH代替1.2
const
floatWIDTH=0.6;//WIDTH代替0.6
const
charNEWLINE='\n';//NEWLINE代替'\n'
floatarea;
area=LENGTH*WIDTH;
printf("課桌面的面積:%.2f",area);
printf("%c",NEWLINE);}運(yùn)行結(jié)果:04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.4變量與常量五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線提交;完成技能檢測(cè),在線提交;C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.5運(yùn)算符與表達(dá)式C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.5運(yùn)算符與表達(dá)式01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入
計(jì)算機(jī)處理的基本對(duì)象是數(shù)據(jù)。變量和常量則是程序的最基本的數(shù)據(jù)形式,將它們用操作符(也稱為運(yùn)算符)連接起來(lái),便構(gòu)成了表達(dá)式。
在應(yīng)用程序中,經(jīng)常會(huì)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算,為此,C語(yǔ)言提供了多種類型的運(yùn)算符,即專門用于告訴程序執(zhí)行特定運(yùn)算或邏輯操作的符號(hào)。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.5運(yùn)算符與表達(dá)式二技能點(diǎn)分析1、了解運(yùn)算符的基本類型;2、能夠運(yùn)用運(yùn)算符完成運(yùn)算。學(xué)習(xí)目標(biāo)1.C語(yǔ)言中支持哪些種類的運(yùn)算符?2.a(chǎn)++與++a有何區(qū)別?3.當(dāng)由多個(gè)不同運(yùn)算符和運(yùn)算數(shù)組成較為復(fù)雜的表達(dá)式時(shí),其運(yùn)算符計(jì)算順序如何確定?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.5運(yùn)算符與表達(dá)式三技能點(diǎn)詳解——1算術(shù)運(yùn)算符C語(yǔ)言中算術(shù)運(yùn)算符有加“+”、減“
”、乘“*”、除“/”、求余(模)“%”、“++”、“
”7個(gè),其中+、
、*、/、%是二元運(yùn)算符,++、
是一元運(yùn)算符。+、--、*、/都能對(duì)整數(shù)或?qū)崝?shù)進(jìn)行運(yùn)算。在同一級(jí)別運(yùn)算時(shí),按左結(jié)合規(guī)則進(jìn)行。算術(shù)運(yùn)算符的操作功能描述如表1.5.1所示,其中假設(shè)整型變量a的值為2,變量b的值為5。運(yùn)算符描述實(shí)例+把兩個(gè)操作數(shù)相加a+b將得到7-從第一個(gè)操作數(shù)中減去第二個(gè)操作數(shù)a-b將得到-3*把兩個(gè)操作數(shù)相乘a*b將得到10/分子除以分母b/a將得到2.5%取模運(yùn)算符,整除后的余數(shù)b%a將得到1++自增運(yùn)算符,整數(shù)值增加1a++或++a將得到3--自減運(yùn)算符,整數(shù)值減少1a--或--a將得到11)求余運(yùn)算符%
求余運(yùn)算符%只能對(duì)整型數(shù)據(jù)進(jìn)行,若表1.5.1所示,5%2的值為1。
若在計(jì)算“a%b”時(shí),如果a、b中至少有一個(gè)為負(fù)數(shù),此時(shí)運(yùn)算結(jié)果如何呢?C語(yǔ)言中規(guī)定:余數(shù)與a的符號(hào)相同,而絕對(duì)值不變。因此表達(dá)式5%3、5%-3、-5%3、-5%-3的值分別為2、2、-2、-2。三技能點(diǎn)詳解——1算術(shù)運(yùn)算符三技能點(diǎn)詳解——1算術(shù)運(yùn)算符2)++、--運(yùn)算符++、--只能對(duì)整型變量進(jìn)行運(yùn)算,如表1.5.1所示,a為整型變量。++、--運(yùn)算符可寫在變量的前面或變量的后面,寫在變量的前面稱為前綴(或前置)運(yùn)算符,寫在變量的后面稱為后綴(或后置)運(yùn)算符,在使用前綴運(yùn)算與后綴運(yùn)算時(shí)要注意如下兩點(diǎn):(1)++a與a++單獨(dú)構(gòu)成表達(dá)式時(shí),兩者使用時(shí)沒(méi)有區(qū)別;(2)++a與a++不是單獨(dú)構(gòu)成表達(dá)式時(shí),前綴運(yùn)算表示先加后用,后綴運(yùn)算表示先用后加。三技能點(diǎn)詳解——2關(guān)系運(yùn)算符關(guān)系運(yùn)算又稱為比較大小運(yùn)算,它有6個(gè)運(yùn)算符:>、>=、<、<=、==、!=,它們的結(jié)合規(guī)則都是自左向右的。關(guān)系運(yùn)算的結(jié)果為邏輯真或邏輯假,關(guān)系成立時(shí)為邏輯真(值為1),關(guān)系不成立時(shí)為邏輯假(值為0)。表1.5.2列出了各個(gè)關(guān)系運(yùn)算符的功能描述與實(shí)例,其中假設(shè)a的值為2,b的值為5。運(yùn)算符描述實(shí)例==檢查兩個(gè)操作數(shù)的值是否相等,相等為真,不等為假。(a==b)為假。!=檢查兩個(gè)操作數(shù)的值是否相等,不等為真,相等為假。(a!=b)為真。>
檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是則條件為真。(a>b)為假。<
檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是則條件為真。(a<b)為真。>=檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是則條件為真。(a>=b)為假。<=檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是則條件為真。(a<=b)為真。三技能點(diǎn)詳解——3邏輯運(yùn)算符C語(yǔ)言中邏輯運(yùn)算符有:邏輯與“&&”、邏輯或“||”、邏輯非“!”。邏輯與表達(dá)式a&&b表示a與b中只要有一個(gè)條件不滿足(值為0),其運(yùn)算結(jié)果為0。邏輯或表達(dá)式a||b表示a與b中只要有一個(gè)條件滿足(值為1),其運(yùn)算結(jié)果為1。邏輯非表達(dá)式!a,當(dāng)a為1時(shí),結(jié)果為0,當(dāng)a為0時(shí),結(jié)果為1。邏輯運(yùn)算真值表如表1.5.3所示。aba&&ba||b!a11110100100101100001表1.5.3邏輯運(yùn)算真值表三技能點(diǎn)詳解——3邏輯運(yùn)算符
在C語(yǔ)言邏輯運(yùn)算中,任何非0值都當(dāng)作邏輯值1處理,因此表達(dá)式0.1||0的結(jié)果值為1。從邏輯與運(yùn)算a&&b的真值表中,我們可以看出,只要a值為0,不管b值如何,其運(yùn)算結(jié)果都為0,因此,在進(jìn)行邏輯與運(yùn)算時(shí),只要計(jì)算a值為0,我們不需計(jì)算b值,這種情況,我們稱之為邏輯與優(yōu)化。同樣,對(duì)于邏輯或運(yùn)算a||b,只要a值為1,不需計(jì)算b值,此時(shí)表達(dá)式值恒為1,這種情況稱之為邏輯或優(yōu)化。三技能點(diǎn)詳解——4位運(yùn)算符位運(yùn)算符作用于位,并逐位執(zhí)行操作。位運(yùn)算符有&、|、^、~、>>、<<等6個(gè),表1.5.4列出了C語(yǔ)言中所有位運(yùn)算符及其運(yùn)算實(shí)例,其中假設(shè)變量a的值為26,變量b的值為15。三技能點(diǎn)詳解——5賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算的一般形式為:變量=表達(dá)式其功能是將一個(gè)表達(dá)式的值賦給變量。如表達(dá)式:a=b+c該式讀作將表達(dá)式b+c的值賦給a。其本意是改寫變量a的值,而不是判斷b+c與a是否相等。這里需要注意的是:C語(yǔ)言中的賦值運(yùn)算符不能誤看作為數(shù)學(xué)上的關(guān)系運(yùn)算符——等于運(yùn)算符。又如數(shù)學(xué)上表達(dá)式:a=a+5,是錯(cuò)誤的表達(dá)式,但在C語(yǔ)言中這是正確的合法表達(dá)式,它是改寫存儲(chǔ)單元a中的內(nèi)容,因?yàn)樵贑中,運(yùn)算符“=”不是關(guān)系運(yùn)算符,而是賦值運(yùn)算符。三技能點(diǎn)詳解——5賦值運(yùn)算符運(yùn)算符描
述實(shí)例=簡(jiǎn)單的賦值運(yùn)算符,把右邊操作數(shù)的值賦給左邊操作數(shù)C=A+B將A+B的值賦給C+=加且賦值運(yùn)算符,把右邊操作數(shù)加上左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C+=A相當(dāng)于C=C+A-=減且賦值運(yùn)算符,把左邊操作數(shù)減去右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C-=A相當(dāng)于C=C-A*=乘且賦值運(yùn)算符,把右邊操作數(shù)乘以左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C*=A相當(dāng)于C=C*A/=除且賦值運(yùn)算符,把左邊操作數(shù)除以右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C/=A相當(dāng)于C=C/A%=求模且賦值運(yùn)算符,求兩個(gè)操作數(shù)的模賦值給左邊操作數(shù)C%=A相當(dāng)于C=C%A<<=左移且賦值運(yùn)算符C<<=2等同于C=C<<2>>=右移且賦值運(yùn)算符C>>=2等同于C=C>>2&=按位與且賦值運(yùn)算符C&=2等同于C=C&2^=按位異或且賦值運(yùn)算符C^=2等同于C=C^2|=按位或且賦值運(yùn)算符C|=2等同于C=C|2三技能點(diǎn)詳解——6雜項(xiàng)運(yùn)算符表1.5.6列出了C語(yǔ)言支持的其他一些重要的運(yùn)算符,包括sizeof和?:。運(yùn)算符描述實(shí)例sizeof()返回變量的大小sizeof(a)將返回4,其中a是整數(shù)&返回變量的地址&a;將給出變量的實(shí)際地址*指向一個(gè)變量*a;將指向一個(gè)變量?:條件表達(dá)式如果條件為真?則值為X:否則值為Y1)sizeof運(yùn)算符sizeof表示計(jì)算變量或表達(dá)式占用的存儲(chǔ)空間大小,即字節(jié)數(shù)。sizeof計(jì)算類型占用字節(jié)數(shù)的形式為:
sizeof(類型)sizeof計(jì)算變量占用字節(jié)數(shù)的形式有兩種:
sizeof(變量)或
sizeof
變量三技能點(diǎn)詳解——6雜項(xiàng)運(yùn)算符2)條件運(yùn)算符條件運(yùn)算符是C語(yǔ)言中唯一的三元運(yùn)算符,用符號(hào)?:表示,它帶有3個(gè)操作數(shù),其書寫一般形式為:a?b:c其計(jì)算方法是先計(jì)算a,若a非0,則選擇b作為表達(dá)式值,否則選擇c作為表達(dá)式值,因此,條件運(yùn)算又稱為選擇運(yùn)算。例如:程序代碼中有定義“inta=3,b=5,c;”則執(zhí)行代碼“c=a>b?a:b;”后的結(jié)果為c=5三技能點(diǎn)詳解——7運(yùn)算符優(yōu)先級(jí)
前面已簡(jiǎn)單介紹了C語(yǔ)言中的每個(gè)運(yùn)算符都有一定的優(yōu)先級(jí)和結(jié)合規(guī)則,表1.5.6按運(yùn)算符優(yōu)先級(jí)從高到低列出各個(gè)運(yùn)算符及其結(jié)合規(guī)則,具有較高優(yōu)先級(jí)的運(yùn)算符出現(xiàn)在表格的上面,具有較低優(yōu)先級(jí)的運(yùn)算符出現(xiàn)在表格的下面。
當(dāng)由多個(gè)不同運(yùn)算符和運(yùn)算數(shù)組成較為復(fù)雜的表達(dá)式時(shí),其運(yùn)算符計(jì)算順序按如下規(guī)則執(zhí)行:(1)不同級(jí)別的運(yùn)算符按運(yùn)算符的優(yōu)先級(jí)別確定計(jì)算順序,優(yōu)先級(jí)別高(優(yōu)先級(jí)別數(shù)小)的運(yùn)算符先計(jì)算,優(yōu)先級(jí)別低(優(yōu)先級(jí)別數(shù)大)的運(yùn)算符后計(jì)算;(2)相同級(jí)別的運(yùn)算符按結(jié)合規(guī)則確定計(jì)算順序。如表達(dá)式3+4*(17-5)/(1+2)的計(jì)算順序?yàn)椋孩僮筮吚ㄌ?hào)運(yùn)算(17-5),值為12,②右邊括號(hào)運(yùn)算(1+2),值為3,③左邊乘法運(yùn)算4*12,值為48,④右邊除法運(yùn)算48/3,值為16,⑤加法運(yùn)算3+16,值為19。案例1.5.1算術(shù)運(yùn)算編程實(shí)現(xiàn)兩個(gè)整型變量的算術(shù)運(yùn)算。/***********************************************內(nèi)容簡(jiǎn)述:兩個(gè)整型變量的算術(shù)運(yùn)算***********************************************/#include
<stdio.h>voidmain(void){
inta=19;
intb=10;
intc;
printf("a=%db=%d\n",a,b);c=a+b;
printf("a+b=%d\n",c);c=a-b;
printf("a-b=%d\n",c);c=a*b;
printf("a*b=%d\n",c);c=a/b;
printf("a/b=%d\n",c);c=a%b;
printf("a%%b=%d\n",c);c=a++;//賦值后再加1,c為19,a為20
printf("賦給c的值是%da的值是%d\n",c,a);c=a--;//賦值后再減1,c為20,a為19
printf("賦給c的值是%da的值是%d\n",c,a); c=++a;//先加1后賦值,c為20,a為20
printf("賦給c的值是%da的值是%d\n",c,a);c=--a;//先減1后賦值,c為19,a為19
printf("賦給c的值是%da的值是%d\n",c,a);}三技能點(diǎn)詳解——案例案例1.5.2關(guān)系運(yùn)算測(cè)得甲乙的體溫,通過(guò)編程判斷兩人是否發(fā)熱(超過(guò)37.3℃)。/************************************************內(nèi)容簡(jiǎn)述:判斷兩個(gè)數(shù)的大小關(guān)系***********************************************/#include
<stdio.h>
voidmain(void){
floatt=36.5;
floatT=37.3;
printf("測(cè)得甲的體溫為:%.2f\n",t);
if(t<T){
printf("體溫小于37.3℃,甲沒(méi)有發(fā)熱\n");}
if(t>=T){
printf("體溫大于或等于37.3℃,甲發(fā)熱\n");}
t=38.5;
printf("測(cè)得乙的體溫為:%.2f\n",t);
if(t<T){
printf("體溫小于37.3℃,乙沒(méi)有發(fā)熱\n");}
if(t>=T){
printf("體溫大于或等于37.3℃,乙發(fā)熱\n");}}三技能點(diǎn)詳解——案例案例1.5.3邏輯運(yùn)算編程實(shí)現(xiàn)兩個(gè)量的三個(gè)邏輯運(yùn)算。/********************************************************內(nèi)容簡(jiǎn)述:
判斷兩個(gè)量的邏輯運(yùn)算結(jié)果*******************************************************/#include
<stdio.h>
intmain(){
inta=5;
intb=20;
intc;
printf("a=%db=%d\n",a,b); c=a&&b;//a和b均為非0值,都為真,a&&b值為1
printf("a&&b的值為%d\n",c);
if(a&&b)//判斷a和b兩條件是否都為真{
printf("a和b全為真\n");}c=a||b;//a和b均為非0值,都為真,a||b值為1
printf("a||b的值為%d\n",c);
if(a||b)//判斷a和b兩條件中是否至少有一個(gè)為真{
printf("a和b至少有一個(gè)為真\n");}
a=0;//改變a和b的值b=10;
printf("a=%db=%d\n",a,b); c=a&&b;//a==0,為假,a和b不全為真,a&&b值為0
printf("a&&b的值為%d\n",c);
if(a&&b){
printf("a和b全為真\n");}c=!(a&&b);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度虛擬股員工持股計(jì)劃協(xié)議
- 二零二五年度煤礦開(kāi)采權(quán)轉(zhuǎn)讓合同
- 2025年度順豐速運(yùn)高端物流服務(wù)合同模板
- 施工單位施工合同管理要點(diǎn)
- 疫情下教育變革的啟示-學(xué)校與醫(yī)院合作的必要性與優(yōu)勢(shì)分析
- 產(chǎn)業(yè)協(xié)同合同(半緊密型):機(jī)遇與挑戰(zhàn)
- 產(chǎn)品質(zhì)量防偽標(biāo)識(shí)供應(yīng)合同
- 云計(jì)算機(jī)房租賃合同
- 二手房購(gòu)買合同(適用于二手房交易)
- 專利技術(shù)普通許可合同范本
- 2025版茅臺(tái)酒出口業(yè)務(wù)代理及銷售合同模板4篇
- 2025年N1叉車司機(jī)考試試題(附答案)
- 《醫(yī)院財(cái)務(wù)分析報(bào)告》課件
- 2024年考研政治試題及答案
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級(jí)上冊(cè) 期末綜合卷(含答案)
- 天津市部分區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 2025年初級(jí)社會(huì)工作者綜合能力全國(guó)考試題庫(kù)(含答案)
- 2024年濰坊護(hù)理職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告風(fēng)險(xiǎn)評(píng)估參考
- GB/T 14343-2008化學(xué)纖維長(zhǎng)絲線密度試驗(yàn)方法
- 制冷操作證培訓(xùn)教材-制冷與空調(diào)設(shè)備運(yùn)行操作作業(yè)培課件
評(píng)論
0/150
提交評(píng)論