C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊一 編程技術(shù)基礎(chǔ)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊一 編程技術(shù)基礎(chǔ)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊一 編程技術(shù)基礎(chǔ)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊一 編程技術(shù)基礎(chǔ)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊一 編程技術(shù)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩152頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ù)厝私涣鳎涣鞯臅r(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)稱(chēng)VS)是一款經(jīng)典集成開(kāi)發(fā)環(huán)境。VisualC++(簡(jiǎn)稱(chēng)VC)是VS里面的C/C++開(kāi)發(fā)環(huán)境,VC2010Express的中文名稱(chēng)為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

的安裝方式分為兩種:在線(xiàn)安裝、離線(xiàn)安裝。其中,在線(xiàn)安裝包體積?。?M),安裝時(shí)僅聯(lián)網(wǎng)下載所需組件,在Win10

系統(tǒng)下的下載量小于100M;離線(xiàn)安裝包體積大,英文版694M,中文版1.8G,1)下載

下載的離線(xiàn)安裝包是ISO

光盤(pán)鏡像,直接雙擊,就可以將該鏡像虛擬成光盤(pán)。在文件管理器中找到新增加的光盤(pán),啟動(dòng)光盤(pán)內(nèi)的安裝程序。也可以采用解壓模式,將虛擬文件解壓后,找到Setup.hta程序,打開(kāi)運(yùn)行,VC2010

Express

三技能點(diǎn)詳解—安裝

VisualC++2010Express2)離線(xiàn)安裝三技能點(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"

即可在線(xiàn)獲取注冊(cè)密鑰。但是對(duì)VC2010

這個(gè)早期產(chǎn)品,微軟已經(jīng)不再維護(hù)了,點(diǎn)這個(gè)按鈕并不能獲取到注冊(cè)密鑰。三技能點(diǎn)詳解—VC2010

的必要設(shè)置1)設(shè)置幫助系統(tǒng)VC2010

的離線(xiàn)幫助已經(jīng)無(wú)法通過(guò)網(wǎng)絡(luò)直接下載了,因此建議直接使用在線(xiàn)瀏覽幫助。設(shè)置步驟:?jiǎn)?dòng)VC2010,幫助菜單。2)設(shè)置為“專(zhuān)家設(shè)置”VC2010

默認(rèn)是基本設(shè)置,切換為專(zhuān)家設(shè)置:菜單

工具->設(shè)置->專(zhuān)家設(shè)置。切換后,可以看到菜單項(xiàng)增加了一些。這些增加的菜單項(xiàng),在后續(xù)編程學(xué)習(xí)中很有用三技能點(diǎn)詳解—VC2010

的必要設(shè)置3)取消加載“調(diào)試符號(hào)模塊”

VC

的調(diào)試階段如果需要使用所依賴(lài)dll

的調(diào)試信息,就需要調(diào)試符號(hào)模塊,通常可以在線(xiàn)下載或手動(dòng)安裝。由于一些網(wǎng)絡(luò)訪(fǎng)問(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)目,

填寫(xiě):test(根據(jù)自己的需求,為項(xiàng)目命名)Location

填寫(xiě):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,幾種方式都可以。在"添加新文件"

窗口中,文件類(lèi)型選擇:C++File(.cpp),Name

填寫(xiě):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回車(chē)(停止windows

update服務(wù))2)開(kāi)始---運(yùn)行--鍵入%windir%回車(chē)(打開(kāi)系統(tǒng)目錄)3)將SoftwareDistribution文件夾重命名為SDold4)開(kāi)始---運(yùn)行---cmd---鍵入net

start

WuAuServ回車(chē)三技能點(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版是專(zhuān)注的編程軟件,一款由美國(guó)知名軟件公司Keil(現(xiàn)已被ARM公司收購(gòu))開(kāi)發(fā)的微控制器軟件開(kāi)發(fā)平臺(tái)。在業(yè)界有著廣大的好評(píng),KeilMDK:也稱(chēng)uVision5(老版本為uVision4和uVision3)等。最新的KeilMDK5依然提供了編譯器、編譯器、安裝包和調(diào)試跟蹤,主要新增包管理器功能,支持LWIP,其SWD下載速度也是KEIL4的5倍。(2)KeiluVision5.18MDK版軟件下載:[軟件全稱(chēng)]: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ù),在線(xiàn)提交;完成技能檢測(cè),在線(xiàn)提交;模塊一編程技術(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)算盤(pán)為上二下五珠,上面一粒表示“5”,下面一粒表示“1”,在用算盤(pán)進(jìn)行計(jì)算時(shí)采用“五升十進(jìn)制”。

在時(shí)間上用子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥表示一天的十二個(gè)時(shí)辰。

在易經(jīng)八卦采用“太極生兩儀,兩儀生四象,四象生八卦”的二進(jìn)制計(jì)數(shù)方式。

在稱(chēng)重系統(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ī)則稱(chēng)為數(shù)制。十、十六、六十進(jìn)制,數(shù)制之間的關(guān)系如。

基數(shù)概念:

一個(gè)記數(shù)制包含的數(shù)字符號(hào)的個(gè)數(shù)稱(chēng)為該數(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ù),在線(xiàn)提交;完成技能檢測(cè),在線(xiàn)提交;C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.3數(shù)據(jù)類(lèi)型及轉(zhuǎn)換C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)1.3數(shù)據(jù)類(lèi)型及轉(zhuǎn)換01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入

數(shù)據(jù)是事實(shí)或觀(guān)察的結(jié)果,是對(duì)客觀(guān)事物的邏輯歸納,是用于表示客觀(guān)事物的未經(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ù)類(lèi)型及轉(zhuǎn)換二技能點(diǎn)分析1.了解C語(yǔ)言中的基本數(shù)據(jù)類(lèi)型;2.掌握C語(yǔ)言中數(shù)據(jù)類(lèi)型存儲(chǔ)格式;3.掌握運(yùn)算過(guò)程中數(shù)據(jù)類(lèi)型轉(zhuǎn)換規(guī)律。學(xué)習(xí)目標(biāo)1.什么是數(shù)據(jù)類(lèi)型?它有哪些種類(lèi)?2.自動(dòng)數(shù)據(jù)類(lèi)型轉(zhuǎn)換的規(guī)則是什么?3.強(qiáng)制類(lèi)型轉(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ù)類(lèi)型及轉(zhuǎn)換三技能點(diǎn)詳解——1數(shù)據(jù)類(lèi)型C語(yǔ)言中的數(shù)據(jù)類(lèi)型可分為基本類(lèi)型、構(gòu)造類(lèi)型、指針類(lèi)型和空類(lèi)型四大類(lèi),其中基本類(lèi)型、構(gòu)造類(lèi)型又可細(xì)分,如圖1.3.1所示。圖1.3.1數(shù)據(jù)類(lèi)型的分類(lèi)三技能點(diǎn)詳解——2數(shù)據(jù)類(lèi)型轉(zhuǎn)換數(shù)據(jù)類(lèi)型轉(zhuǎn)換就是將數(shù)據(jù)(變量、數(shù)值、表達(dá)式的結(jié)果等)從一種類(lèi)型轉(zhuǎn)換為另一種數(shù)據(jù)類(lèi)型。類(lèi)型轉(zhuǎn)換分為自動(dòng)類(lèi)型轉(zhuǎn)換和強(qiáng)制類(lèi)型轉(zhuǎn)換。1)自動(dòng)類(lèi)型轉(zhuǎn)換

在不同類(lèi)型的混合運(yùn)算或賦值運(yùn)算中,編譯器會(huì)按照一定規(guī)則自動(dòng)地轉(zhuǎn)換數(shù)據(jù)類(lèi)型,將參與運(yùn)算的所有數(shù)據(jù)先轉(zhuǎn)換為同一種類(lèi)型,然后再進(jìn)行計(jì)算或賦值。這種類(lèi)型轉(zhuǎn)換是不需要程序員干預(yù),由編譯器自動(dòng)執(zhí)行,我們把它稱(chēng)為自動(dòng)類(lèi)型轉(zhuǎn)換。圖1.3.1數(shù)據(jù)類(lèi)型的分類(lèi)三技能點(diǎn)詳解——2數(shù)據(jù)類(lèi)型轉(zhuǎn)換自動(dòng)類(lèi)型轉(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ù)類(lèi)型轉(zhuǎn)換在不同類(lèi)型的賦值運(yùn)算中的自動(dòng)類(lèi)型轉(zhuǎn)換的規(guī)則是:賦值號(hào)兩邊量的數(shù)據(jù)類(lèi)型不同時(shí),賦值號(hào)右邊量的類(lèi)型將轉(zhuǎn)換為左邊量的類(lèi)型。例如:

/*100是int類(lèi)型的數(shù)據(jù),需要先轉(zhuǎn)換為float類(lèi)型才能賦值給變量f。*/floatf=100;

如果右邊量的數(shù)據(jù)類(lèi)型長(zhǎng)度左邊長(zhǎng)時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四舍五入向前舍入。所以說(shuō),自動(dòng)類(lèi)型轉(zhuǎn)換并不一定是安全的。對(duì)于不安全的類(lèi)型轉(zhuǎn)換,編譯器一般會(huì)給出警告。三技能點(diǎn)詳解——2數(shù)據(jù)類(lèi)型轉(zhuǎn)換2)強(qiáng)制類(lèi)型轉(zhuǎn)換

自動(dòng)類(lèi)型轉(zhuǎn)換是編譯器根據(jù)代碼的上下文環(huán)境自行判斷的結(jié)果,但有時(shí)并不是那么“智能”,不能滿(mǎn)足所有的需求,這時(shí)就需要程序員使用強(qiáng)制類(lèi)型轉(zhuǎn)換來(lái)實(shí)現(xiàn)所需的轉(zhuǎn)換。強(qiáng)制類(lèi)型轉(zhuǎn)換是顯式的,程序員通過(guò)在代碼中使用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符來(lái)指定類(lèi)型轉(zhuǎn)換。強(qiáng)制類(lèi)型轉(zhuǎn)換的一般格式為:(新類(lèi)型符號(hào))表達(dá)式例如:(double)a;//將變量a強(qiáng)制轉(zhuǎn)換為double類(lèi)型(int)(x+y);//把表達(dá)式x+y

的結(jié)果強(qiáng)制轉(zhuǎn)換為int整型(float)100;//將數(shù)值100(默認(rèn)為int類(lèi)型)強(qiáng)制轉(zhuǎn)換為float類(lèi)型三技能點(diǎn)詳解——2數(shù)據(jù)類(lèi)型轉(zhuǎn)換在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題:(1)類(lèi)型說(shuō)明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫(xiě)成(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ì)該變量定義的類(lèi)型。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)1.3數(shù)據(jù)類(lèi)型及轉(zhuǎn)換四技能點(diǎn)拓展——1Typedef自定義數(shù)據(jù)類(lèi)型typedef

unsigned

int

my_type;

通過(guò)這種方式定義,程序后面就可以向使用unsignedint一樣的使用my_type。如果,在不同平臺(tái)上移植一段代碼,采用typedef格式能夠?qū)崿F(xiàn)一個(gè)自定義數(shù)據(jù)類(lèi)型在不同平臺(tái)上代表不同的數(shù)據(jù)類(lèi)型,實(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ù)類(lèi)型的格式:四技能點(diǎn)拓展——1define宏定義數(shù)據(jù)類(lèi)型Typedef自定義數(shù)據(jù)類(lèi)型的一般形式為:

#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ù)類(lèi)型進(jìn)行縮寫(xiě),簡(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è)類(lèi)型或某個(gè)變量在特定平臺(tái)上的準(zhǔn)確大小,可以使用

sizeof

運(yùn)算符。/********************************************************************內(nèi)容簡(jiǎn)述:計(jì)算不同類(lèi)型的存儲(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編寫(xiě)程序計(jì)算該圓的面積,并將面積存于整型變量s1和浮點(diǎn)型變量s2中。/********************************************內(nèi)容簡(jiǎn)述:假設(shè)圓的半徑r=2,根據(jù)圓的面積公式*s=πr2編寫(xiě)程序計(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ù)類(lèi)型及轉(zhuǎn)換五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線(xiàn)提交;完成技能檢測(cè),在線(xiàn)提交;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ú)論是自然界、人類(lèi)社會(huì)還是人的思維都是在不斷地運(yùn)動(dòng)、變化和發(fā)展的,事物的發(fā)展具有普遍性和客觀(guān)性。在人類(lèi)社會(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ù)類(lèi)型;2、了解常量及常量的數(shù)據(jù)類(lèi)型;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ǔ)什么類(lèi)型的數(shù)據(jù),以便編譯器給該類(lèi)型數(shù)據(jù)分配相應(yīng)大小(字節(jié)數(shù))的內(nèi)存空間,并對(duì)該內(nèi)存空間命名(即變量名)。三技能點(diǎn)詳解——1變量1)變量的定義在變量定義時(shí),需要指定一個(gè)數(shù)據(jù)類(lèi)型,并包含了該類(lèi)型的一個(gè)或多個(gè)變量名的列表,定義格式為:

數(shù)據(jù)類(lèi)型

變量名1[,變量名2,變量名3…];例如:

intsum;

floata2,A2,_a2;變量命名必須遵守以下C標(biāo)識(shí)符命名規(guī)則:(1)第1個(gè)字符必須是字母或下劃線(xiàn);(2)其余字符可以是字母、下劃線(xiàn)和數(shù)字;(3)字母區(qū)分大小寫(xiě);(4)用戶(hù)自定義標(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程序中首次向變量中代入值稱(chēng)為變量賦初值或變量的初始化。如:int

i,j;i=0;j=5;變量定義的同時(shí)也可進(jìn)行變量的初始化,如上面的代碼可寫(xiě)成:int

i=0,j=5;三技能點(diǎn)詳解——1變量3)變量的作用域C語(yǔ)言中變量的作用域是指一個(gè)變量在程序中起作用的區(qū)域,一般可以理解為變量所在的{}的包圍區(qū)域。所有的變量都有自己的作用域,變量按照作用域的范圍可分為:局部變量和全局變量。決定變量作用域的是變量定義的位置。在程序塊(一個(gè){}內(nèi))定義的變量(稱(chēng)為局部變量或內(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ù)外部定義的變量(稱(chēng)為全局變量或外部變量),從定義位置開(kāi)始,到該整個(gè)程序的結(jié)尾都是起作用的。例如:intx=2;//定義外部變量x,整個(gè)程序中有效voidmain(void){ ……}C語(yǔ)言規(guī)定在同一作用域中不能定義同名的變量,也就是說(shuō)在不同的作用域中可以定義同名變量,但在實(shí)際編程中不推薦這樣做。三技能點(diǎn)詳解——1變量4)變量的聲明變量在程序中必須先聲明后使用,變量的聲明是用于向程序表明變量的類(lèi)型和名字,但聲明不一定引起內(nèi)存的分配。定義也是聲明,當(dāng)定義變量時(shí)我們聲明了它的類(lèi)型和名字。如果在一個(gè)程序源文件函數(shù)內(nèi)想使用該文件的外部變量或一個(gè)源文件使用另一個(gè)源文件中定義的外部變量,則應(yīng)該在使用之前用關(guān)鍵字extern對(duì)該變量作“外部變量聲明”,表示該變量是一個(gè)已經(jīng)定義的外部變量。有了此聲明,就可以從“聲明”處起,合法地使用該外部變量。外部變量聲明的格式為:

extern數(shù)據(jù)類(lèi)型外部變量名;三技能點(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ù)類(lèi)型,比如整數(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)。后綴可以是大寫(xiě),也可以是小寫(xiě),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

類(lèi)型的簡(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í),它們就具有特殊的含義,不同于字符原有的意義,故稱(chēng)“轉(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回車(chē)\""字符\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)名知義”的大寫(xiě)英文字符串或英文單詞表示。例如:

編寫(xiě)程序求不同大小的長(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ù)類(lèi)型

變量名=常量;例如:const

intvar=7;//表示變量

var中保存7,不可改變這里需注意的是使用const關(guān)鍵字定義常量時(shí)必須初始化,且在同一語(yǔ)句中完成,如上面的語(yǔ)句不能寫(xiě)成: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ù),在線(xiàn)提交;完成技能檢測(cè),在線(xiàn)提交;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ù)形式,將它們用操作符(也稱(chēng)為運(yùn)算符)連接起來(lái),便構(gòu)成了表達(dá)式。

在應(yīng)用程序中,經(jīng)常會(huì)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算,為此,C語(yǔ)言提供了多種類(lèi)型的運(yùn)算符,即專(zhuān)門(mé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)算符的基本類(lèi)型;2、能夠運(yùn)用運(yùn)算符完成運(yùn)算。學(xué)習(xí)目標(biāo)1.C語(yǔ)言中支持哪些種類(lèi)的運(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)算符可寫(xiě)在變量的前面或變量的后面,寫(xiě)在變量的前面稱(chēng)為前綴(或前置)運(yùn)算符,寫(xiě)在變量的后面稱(chēng)為后綴(或后置)運(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)算又稱(chēng)為比較大小運(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è)條件不滿(mǎn)足(值為0),其運(yùn)算結(jié)果為0。邏輯或表達(dá)式a||b表示a與b中只要有一個(gè)條件滿(mǎn)足(值為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值,這種情況,我們稱(chēng)之為邏輯與優(yōu)化。同樣,對(duì)于邏輯或運(yùn)算a||b,只要a值為1,不需計(jì)算b值,此時(shí)表達(dá)式值恒為1,這種情況稱(chēng)之為邏輯或優(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。其本意是改寫(xiě)變量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á)式,它是改寫(xiě)存儲(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ì)算類(lèi)型占用字節(jié)數(shù)的形式為:

sizeof(類(lèi)型)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ù),其書(shū)寫(xiě)一般形式為:a?b:c其計(jì)算方法是先計(jì)算a,若a非0,則選擇b作為表達(dá)式值,否則選擇c作為表達(dá)式值,因此,條件運(yùn)算又稱(chēng)為選擇運(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&&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論