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

下載本文檔

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

文檔簡介

模塊一編程技術(shù)基礎(chǔ)任務(wù)1.1編譯器的安裝與使用C語言程序設(shè)計基礎(chǔ)與實踐課程組C語言程序設(shè)計基礎(chǔ)與實踐04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問題引入05技能點檢測一問題引入

國際化的中國,出國旅游變得十分便捷,要想體驗當?shù)氐娘L(fēng)土人情,除了看風(fēng)景還要與當?shù)厝私涣?,交流的時候遇到語言障礙,將無法清晰的表達我們的想法。如果有一位翻譯陪伴,就十分方便。如果我們到不同語種的國家,就需要一種能夠適應(yīng)多種語言翻譯的翻譯人員或者翻譯機器。在C語言中,我們在與機器交流的時候,也需要一種軟件,能夠?qū)⑽覀兊淖匀徽Z言翻譯成機器能識別的機器語言,這就是編譯器。那么常用的編譯器有哪些呢?他們都有什么特別的地方呢?張璐04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問題引入05技能點檢測二技能點分析1.能夠安裝VC集成開發(fā)環(huán)境2.能夠用VC編譯器創(chuàng)建工程學(xué)習(xí)目標1.什么是編譯器?主要的功能是什么?2.C語言常用的編譯器有哪些?3.簡述編譯器創(chuàng)建C語言項目的步驟?學(xué)期預(yù)習(xí)04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問題引入05技能點檢測三技能點詳解——VS2010VisualStudio(簡稱VS)是一款經(jīng)典集成開發(fā)環(huán)境。VisualC++(簡稱VC)是VS里面的C/C++開發(fā)環(huán)境,VC2010Express的中文名稱為VC2010學(xué)習(xí)版,按照以下步驟進行安裝及配置VC2010Express。1.安裝VisualC++2010Express2.安裝VisualStudio2010ServicePack13.注冊VisualC++2010Express4.VC2010的必要設(shè)置5.創(chuàng)建范例程序測試VC2010是否安裝正確6.根據(jù)個人使用習(xí)慣調(diào)整VC2010的工具欄及按鈕三技能點詳解—安裝

VisualC++2010ExpressVC2010

Express

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

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

下載的離線安裝包是ISO

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

Express

三技能點詳解—安裝

VisualC++2010Express2)離線安裝三技能點詳解—安裝

VisualC++2010Express3)注冊

VisualC++2010ExpressVC2010Express

版是免費的,但是需要注冊一下,否則會有30天的試用期限。啟動VC2010,菜單Help->RegisterProduct,打開產(chǎn)品注冊窗口。在過去,點擊"Obtainaregistrationkeyonline"

即可在線獲取注冊密鑰。但是對VC2010

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

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

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

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

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

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

VC

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

的調(diào)試信息,就需要調(diào)試符號模塊,通常可以在線下載或手動安裝。由于一些網(wǎng)絡(luò)訪問調(diào)試符號服務(wù)器非常慢,這就導(dǎo)致了VC

啟動慢的問題。其實這個調(diào)試符號對絕大多數(shù)程序員來說都沒多大意義,可以關(guān)閉加載調(diào)試符號模塊的功能。三技能點詳解—VC2010

的必要設(shè)置4)調(diào)整VC2010

的工具欄VC2010

的工具欄的定制性很強,可以根據(jù)自己的習(xí)慣做相應(yīng)的調(diào)整。例如,編譯和執(zhí)行程序缺少工具欄按鈕,如果覺得不方便,可以相應(yīng)調(diào)整。在工具欄的空白區(qū)域右擊鼠標,勾選“調(diào)試”、“生成”和“文本編輯”三技能點詳解—VC2010

的必要設(shè)置三技能點詳解—VC2010項目創(chuàng)建1)創(chuàng)建新項目。點工具欄第一個按鈕,或者菜單文件->創(chuàng)建->項目...,或者按快捷鍵Ctrl+Shift+N,幾種方式都可以2)在"新建項目"

窗口選擇項目模版,選擇常規(guī)->空項目,

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

填寫:E:\C_project(根據(jù)自己的習(xí)慣,選擇一個保存自己項目的路徑),確定三技能點詳解—VC2010項目創(chuàng)建3)添加新文件。在解決方案資源管理器

欄,選中test

項目,點工具欄第二個按鈕,或者右擊項目test

選擇菜單添加->新建項...,或者按快捷鍵Ctrl+Shift+A,幾種方式都可以。在"添加新文件"

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

填寫:test.c(根據(jù)自己的需求,為文件命名),Location

暫時無需修改三技能點詳解—VC2010項目創(chuàng)建4)在新文件

test.c中輸入以下測試代碼:/********************************內(nèi)容簡述:我的第一行代碼*******************************/#include

<stdio.h>#include

<stdlib.h>

voidmain(void){printf("******************\n");printf("歡迎進入C語言的世界\n");printf("*****************\n");

system("pause");}三技能點詳解—VC2010項目創(chuàng)建5)編譯項目。點菜單生成->生成解決方案,或按快捷鍵F7,或者采用快捷圖標,三種方式都可以。然后在

輸出

窗口會看到編譯過程,最后一行可以看到提示"=======生成:成功1個,失敗0個,最新0個,跳過0個=======",注意里面的失敗0個,表示沒有編譯錯誤。否則,必須修正錯誤,再進行下一步三技能點詳解—VC2010項目創(chuàng)建6)執(zhí)行程序。點菜單調(diào)試->開始執(zhí)行(不調(diào)試),或者開始執(zhí)行圖標,或按快捷鍵Ctrl+F5,三種方式都可以。然后會看到一個窗口內(nèi)顯示程序運行結(jié)果三技能點詳解—VC2010項目創(chuàng)建1.安裝錯誤采用vs2010professional安裝包安裝軟件的時候,如果出現(xiàn)如圖1.1.15所示的錯誤提示,可以采用一下兩種方法進行解決。一種是安裝包有問題,可以從官網(wǎng)重新下載安裝包,重新安裝。另外一種是網(wǎng)絡(luò)問題,通過以下步驟進行設(shè)置。1)開始---運行---cmd--鍵入net

stop

WuAuServ回車(停止windows

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

start

WuAuServ回車三技能點詳解—VC2010錯誤排查2.結(jié)果窗口閃過

點擊“開始執(zhí)行(不調(diào)試)”按鈕(Ctrl+F5),運行結(jié)果窗口一閃而過的解決辦法。一種方法是,在main函數(shù)的return前添加system("Pause"),同時添加頭文件“stdlib.h”;但是這種方法需要對每個程序添加此代碼。另一種方法是通過對vs進行設(shè)置,三技能點詳解—VC2010錯誤排查04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問題引入05技能點檢測(1)KeiluVision5.18MDK版軟件簡介:KeiluVision5.18MDK版是專注的編程軟件,一款由美國知名軟件公司Keil(現(xiàn)已被ARM公司收購)開發(fā)的微控制器軟件開發(fā)平臺。在業(yè)界有著廣大的好評,KeilMDK:也稱uVision5(老版本為uVision4和uVision3)等。最新的KeilMDK5依然提供了編譯器、編譯器、安裝包和調(diào)試跟蹤,主要新增包管理器功能,支持LWIP,其SWD下載速度也是KEIL4的5倍。(2)KeiluVision5.18MDK版軟件下載:[軟件全稱]:KeiluVision5.18MDK版[軟件大小]:299MB[軟件語言]:中文[安裝環(huán)境]:Win7/Win8/Win10/Win11四技能點拓展——1.keil5的安裝與應(yīng)用04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.1編譯器的安裝與使用01問題引入05技能點檢測五技能點檢測完成課堂任務(wù),在線提交;完成技能檢測,在線提交;模塊一編程技術(shù)基礎(chǔ)任務(wù)1.2

進制及進制轉(zhuǎn)換C語言程序設(shè)計基礎(chǔ)與實踐課程組C語言程序設(shè)計基礎(chǔ)與實踐04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.2進制及進制轉(zhuǎn)換01問題引入05技能點檢測一問題引入

傳統(tǒng)算盤為上二下五珠,上面一粒表示“5”,下面一粒表示“1”,在用算盤進行計算時采用“五升十進制”。

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

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

在稱重系統(tǒng)中,采用十六兩為一斤的十六進制計量方式。04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.2進制及進制轉(zhuǎn)換二技能點分析1.了解進制的概念2.掌握進制轉(zhuǎn)換的方法3.能夠完成二進制,十進制,十六進制之間的轉(zhuǎn)換學(xué)習(xí)目標1.什么是進制?常用的進制有哪些?2.什么是二進制,十進制,十六進制,他們的數(shù)碼分別是哪些?3.十進制轉(zhuǎn)二進制的方法是什么?二進制轉(zhuǎn)十進制的方法是什么?4.十六進制轉(zhuǎn)二進制的方法是什么?二進制轉(zhuǎn)十六進制的方法是什么?學(xué)期預(yù)習(xí)04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.2進制及進制轉(zhuǎn)換三技能點詳解——1數(shù)制

進制也就是進制位,我們常用的進制包括:二進制、八進制、十進制與十六進制,它們之間區(qū)別在于數(shù)運算時是逢幾進一位。

數(shù)制概念:

數(shù)的表示規(guī)則稱為數(shù)制。十、十六、六十進制,數(shù)制之間的關(guān)系如。

基數(shù)概念:

一個記數(shù)制包含的數(shù)字符號的個數(shù)稱為該數(shù)制的基數(shù)。權(quán)(位值)概念:某進制中由位置決定的值叫位值或權(quán)。位權(quán)展開概念:某進制數(shù)的值都可以表示為各位數(shù)碼本身的值與其權(quán)的乘積之和。10進制:

數(shù)碼:0,1,2,3,4,5,6,7,8,9權(quán):100,101,102,…(逢10進位)2進制:

數(shù)碼:0,1權(quán):20,21,22,…(逢2進位)8進制:

數(shù)碼:0,1,2,3,4,5,6,7權(quán):80、81、82(逢8進位)16進制:

數(shù)碼:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F權(quán):160、161、162…(逢16進位)三技能點詳解——1數(shù)制三技能點詳解——2數(shù)制轉(zhuǎn)換二進制轉(zhuǎn)十進制的方法:位權(quán)展開多項式之和口訣:1.數(shù)位數(shù)n。2.該位數(shù)碼乘以2n-13.加起來。三技能點詳解——2數(shù)制轉(zhuǎn)換十進制轉(zhuǎn)二進制的方法:短除法口訣:1.倒著除2取余數(shù)2.商和余數(shù)倒序排三技能點詳解——2數(shù)制轉(zhuǎn)換二進制轉(zhuǎn)十六進制的方法:以小數(shù)點位置為中心:向左,四位一段,不足四位,左補0;向右,四位一段,不足四位,右補0。將每段中的四位二進制數(shù)轉(zhuǎn)化為一位十六進數(shù)。三技能點詳解——2數(shù)制轉(zhuǎn)換十六進制轉(zhuǎn)二進制的方法:將一位十六進制數(shù)轉(zhuǎn)化為四位二進制數(shù),不足四位二進制數(shù)時,統(tǒng)一左補零。案例1.2.3二進制轉(zhuǎn)十六進制將二進制數(shù)(110100110)轉(zhuǎn)為十六進制數(shù)是多少?二進制數(shù)轉(zhuǎn)十六進制數(shù)方法為:取四合一,4位二進制轉(zhuǎn)成十六進制是從右到左開始轉(zhuǎn)換,不足時補0三技能點詳解——案例案例1.2.4十六進制轉(zhuǎn)二進制將十六進制數(shù)(1A6)轉(zhuǎn)為二進制數(shù)是多少?十六進制數(shù)轉(zhuǎn)二進制數(shù)的方法為:十六進制數(shù)通過除2取余法,得到二進制數(shù),對每個十六進制為4個二進制,不足時在最左邊補零,三技能點詳解——案例04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.2進制及進制轉(zhuǎn)換四技能點拓展——1電腦計算器四技能點拓展——1電腦計算器四技能點拓展——2手機計算器04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.2進制及進制轉(zhuǎn)換五技能點檢測完成課堂任務(wù),在線提交;完成技能檢測,在線提交;C語言程序設(shè)計基礎(chǔ)與實踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換C語言程序設(shè)計基礎(chǔ)與實踐課程組04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換01問題引入05技能點檢測一問題引入

數(shù)據(jù)是事實或觀察的結(jié)果,是對客觀事物的邏輯歸納,是用于表示客觀事物的未經(jīng)加工的原始素材。

數(shù)據(jù)是信息的表現(xiàn)形式和載體,可以是符號、文字、數(shù)字、語音、圖像、視頻等。在大數(shù)據(jù)的時代,所有數(shù)據(jù)都可以存儲到計算機系統(tǒng)中,那么數(shù)據(jù)在計算機系統(tǒng)內(nèi)是如何存儲的呢?04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換二技能點分析1.了解C語言中的基本數(shù)據(jù)類型;2.掌握C語言中數(shù)據(jù)類型存儲格式;3.掌握運算過程中數(shù)據(jù)類型轉(zhuǎn)換規(guī)律。學(xué)習(xí)目標1.什么是數(shù)據(jù)類型?它有哪些種類?2.自動數(shù)據(jù)類型轉(zhuǎn)換的規(guī)則是什么?3.強制類型轉(zhuǎn)換的格式是什么?學(xué)期預(yù)習(xí)04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換三技能點詳解——1數(shù)據(jù)類型C語言中的數(shù)據(jù)類型可分為基本類型、構(gòu)造類型、指針類型和空類型四大類,其中基本類型、構(gòu)造類型又可細分,如圖1.3.1所示。圖1.3.1數(shù)據(jù)類型的分類三技能點詳解——2數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換就是將數(shù)據(jù)(變量、數(shù)值、表達式的結(jié)果等)從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。類型轉(zhuǎn)換分為自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。1)自動類型轉(zhuǎn)換

在不同類型的混合運算或賦值運算中,編譯器會按照一定規(guī)則自動地轉(zhuǎn)換數(shù)據(jù)類型,將參與運算的所有數(shù)據(jù)先轉(zhuǎn)換為同一種類型,然后再進行計算或賦值。這種類型轉(zhuǎn)換是不需要程序員干預(yù),由編譯器自動執(zhí)行,我們把它稱為自動類型轉(zhuǎn)換。圖1.3.1數(shù)據(jù)類型的分類三技能點詳解——2數(shù)據(jù)類型轉(zhuǎn)換自動類型轉(zhuǎn)換的規(guī)則是:(1)轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉(zhuǎn)成long型后再進行運算。(2)所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉(zhuǎn)換成double型,再作運算。(3)char型和short型參與運算時,必須先轉(zhuǎn)換成int型。三技能點詳解——2數(shù)據(jù)類型轉(zhuǎn)換在不同類型的賦值運算中的自動類型轉(zhuǎn)換的規(guī)則是:賦值號兩邊量的數(shù)據(jù)類型不同時,賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。例如:

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

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

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

的結(jié)果強制轉(zhuǎn)換為int整型(float)100;//將數(shù)值100(默認為int類型)強制轉(zhuǎn)換為float類型三技能點詳解——2數(shù)據(jù)類型轉(zhuǎn)換在使用強制轉(zhuǎn)換時應(yīng)注意以下問題:(1)類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y

則成了把x轉(zhuǎn)換成int型之后再與y相加了。(2)無論是強制轉(zhuǎn)換或是自動轉(zhuǎn)換,都只是為了本次運算的需要而對變量的數(shù)據(jù)長度進行的臨時性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時對該變量定義的類型。04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換四技能點拓展——1Typedef自定義數(shù)據(jù)類型typedef

unsigned

int

my_type;

通過這種方式定義,程序后面就可以向使用unsignedint一樣的使用my_type。如果,在不同平臺上移植一段代碼,采用typedef格式能夠?qū)崿F(xiàn)一個自定義數(shù)據(jù)類型在不同平臺上代表不同的數(shù)據(jù)類型,實現(xiàn)跨平臺移植。例如,在A平臺上

typedef

unsigned

int

my_type;

My_typea;//a的范圍是0-65536在B平臺上定義

typedef

unsigned

char

my_type;

My_typea;//a的范圍是0-256Typedef自定義數(shù)據(jù)類型的格式:四技能點拓展——1define宏定義數(shù)據(jù)類型Typedef自定義數(shù)據(jù)類型的一般形式為:

#define

標識符

常量

//注意,最后沒有分號………#undef

標識符

//解除對應(yīng)的宏定義例如:#definePI3.1415926//用PI定義3.1415926,實現(xiàn)其功能………#undefPI//解除對應(yīng)的宏定義

就是將PI定義為后面的3.1415926,在不需要定義的位置,增加#undefPI,解除宏定義。我們采用宏定義的這種特性對數(shù)據(jù)類型進行縮寫,簡化。例如:

#define

uint

unsigned

int

//用uint定義為unsignedint,實現(xiàn)其功能#defineu8unsigned

char

//用u8定義為unsigned插入,實現(xiàn)其功能案例1.3.1數(shù)據(jù)的存儲本案例為了得到某個類型或某個變量在特定平臺上的準確大小,可以使用

sizeof

運算符。/********************************************************************內(nèi)容簡述:計算不同類型的存儲空間*******************************************************************/#include

<stdio.h>

//函數(shù)頭文件#include

<limits.h>

intmain(void)//主程序入口{

printf("char存儲大小:%u\n",sizeof(char));//輸出字符型的存儲字節(jié)數(shù)

printf("short存儲大小:%u\n",sizeof(short));//輸出短整型的存儲字節(jié)數(shù)

printf("int存儲大小:%u\n",sizeof(int));//輸出整型的存儲字節(jié)數(shù)

printf("long存儲大小:%u\n",sizeof(long));//輸出長整型的存儲字節(jié)數(shù)/*************輸出單精度型的存儲字節(jié)數(shù)*************/

printf("float存儲大小:%u\n",sizeof(float));/***********輸出雙精度型的存儲字節(jié)數(shù)*************/

printf("double存儲大小:%u\n",sizeof(double));

return0;}四技能點拓展——案例案例1.3.2數(shù)據(jù)的運算求整型量10與字符’a’的和,并將它賦給浮點型變量輸出。/************************************************內(nèi)容簡述:求整型量10與字符’a’的和,并輸出************************************************/#include

<stdio.h>

intmain(void){

int

i=10;

chara='a';//ascii值是97

floatsum;sum=i+a;

printf("Valueofsum:%f\n",sum);

return0;}四技能點拓展——案例案例1.3.3數(shù)據(jù)的轉(zhuǎn)換某高校一學(xué)生在一周內(nèi)的總生活費為200元,通過編程求該生的平均生活費為多少元/天?/*****************************************************內(nèi)容簡述:某高校一學(xué)生在一周內(nèi)的總生活費為200元*通過編程求該生的平均生活費為多少元/天?*****************************************************/#include

<stdio.h>

intmain(void){

intsum=200;//總生活費

intcount=7;//總天數(shù)

doubleaverage;//平均數(shù)

average=(double)sum/count;

printf("Averageis%.2f\n",average);

return0;}四技能點拓展——案例案例1.3.4

數(shù)據(jù)的比較在本案例中,假設(shè)圓的半徑r=2,根據(jù)圓的面積公式s=πr2編寫程序計算該圓的面積,并將面積存于整型變量s1和浮點型變量s2中。/********************************************內(nèi)容簡述:假設(shè)圓的半徑r=2,根據(jù)圓的面積公式*s=πr2編寫程序計算該圓的面積********************************************/#include<stdio.h>

intmain(void){

floatpi=3.14159;//定義浮點型變量pi存放圓周率,圓周率取值為3.14159

ints1,r=2;//定義整型變量s1和r分別存放面積和半徑值

doubles2;//定義雙精度浮點型變量s2存放面積

s1=r*r*pi;//計算面積并賦給s1s2=r*r*pi;//計算面積并賦給s2

printf("s1=%d,s2=%f\n",s1,s2);//打印輸出s1,s2

return0;}四技能點拓展——案例04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.3數(shù)據(jù)類型及轉(zhuǎn)換五技能點檢測完成課堂任務(wù),在線提交;完成技能檢測,在線提交;C語言程序設(shè)計基礎(chǔ)與實踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.4變量與常量C語言程序設(shè)計基礎(chǔ)與實踐課程組04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.4變量與常量01問題引入05技能點檢測一問題引入

唯物辯證法告訴我們:無論是自然界、人類社會還是人的思維都是在不斷地運動、變化和發(fā)展的,事物的發(fā)展具有普遍性和客觀性。在人類社會發(fā)展的歷史長河中,變化的是推動社會發(fā)展的建設(shè)者,不變的是向前發(fā)展的方向;我國在堅持中國特色社會主義發(fā)展道路中,變化的是不同時代中國共產(chǎn)黨領(lǐng)導(dǎo)的全國人民的奮斗歷程,不變的是中國共產(chǎn)黨的道路自信和初心使命。在大千世界中,存在許多變和不變的量,那么在計算機編程中如何使用這些量呢?04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.4變量與常量二技能點分析1、了解變量及變量的數(shù)據(jù)類型;2、了解常量及常量的數(shù)據(jù)類型;3、掌握變量的定義和使用方法。學(xué)習(xí)目標1.變量是什么?定義變量的格式是什么?2.變量命名必須遵守哪些規(guī)則?3.定義常量方式有哪些?各個方式定義的格式是什么?4.字符常量和字符串常量有何區(qū)別?學(xué)期預(yù)習(xí)04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.4變量與常量三技能點詳解——1變量C語言代碼是從前往后依次執(zhí)行,變量在使用之前必須定義或者聲明。變量定義就是要告訴編譯器要創(chuàng)建的這個變量存儲什么類型的數(shù)據(jù),以便編譯器給該類型數(shù)據(jù)分配相應(yīng)大?。ㄗ止?jié)數(shù))的內(nèi)存空間,并對該內(nèi)存空間命名(即變量名)。三技能點詳解——1變量1)變量的定義在變量定義時,需要指定一個數(shù)據(jù)類型,并包含了該類型的一個或多個變量名的列表,定義格式為:

數(shù)據(jù)類型

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

intsum;

floata2,A2,_a2;變量命名必須遵守以下C標識符命名規(guī)則:(1)第1個字符必須是字母或下劃線;(2)其余字符可以是字母、下劃線和數(shù)字;(3)字母區(qū)分大小寫;(4)用戶自定義標識符不能與C語言的保留字或預(yù)定義標識符同名,并應(yīng)盡量做到“見名知意”,以增加程序的可讀性。三技能點詳解——1變量C語言中只有32個保留字(關(guān)鍵字),如表1.4.1所示。表1.4.1C語言中的保留字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile例如,有效的變量名:inta;int_ab;inta30;無效的變量名:int2a;intab;intshort;2)變量的賦值變量定義后,就可以向變量代入值即變量賦值,在程序中,變量賦值可以用賦值語句來實現(xiàn),其格式為:

變量名=值的表達式;其中:“=”是賦值運算符,將“=”右邊的“變量的值”代入到左邊的變量中存儲,關(guān)于賦值運算符的詳細內(nèi)容將在后續(xù)任務(wù)中講解。“值的表達式”可以是某一常數(shù)值或某一變量名或表達式。三技能點詳解——1變量三技能點詳解——1變量例如:

My_family_name='張';//向變量

My_family_name

賦值字符‘張’

My_age=19;//向變量

My_age

賦值19

i=a;//將儲存在變量a中的值賦給變量

i

Sum=8+10;//將8加上10的結(jié)果18賦給變量Sumtemp=a+6;//將變量a的值加上6的結(jié)果賦給變量temp程序中首次向變量中代入值稱為變量賦初值或變量的初始化。如:int

i,j;i=0;j=5;變量定義的同時也可進行變量的初始化,如上面的代碼可寫成:int

i=0,j=5;三技能點詳解——1變量3)變量的作用域C語言中變量的作用域是指一個變量在程序中起作用的區(qū)域,一般可以理解為變量所在的{}的包圍區(qū)域。所有的變量都有自己的作用域,變量按照作用域的范圍可分為:局部變量和全局變量。決定變量作用域的是變量定義的位置。在程序塊(一個{}內(nèi))定義的變量(稱為局部變量或內(nèi)部變量),只在該程序塊{}中起作用。也就是說,一個變量從被定義的位置開始,到包含該變量定義的程序塊最后的大括號為止,這一區(qū)間內(nèi)是起作用的。例如:voidmain(void){ intx=2;//定義內(nèi)部變量x,只在main函數(shù)中有效}三技能點詳解——1變量

而在C程序的所有函數(shù)外部定義的變量(稱為全局變量或外部變量),從定義位置開始,到該整個程序的結(jié)尾都是起作用的。例如:intx=2;//定義外部變量x,整個程序中有效voidmain(void){ ……}C語言規(guī)定在同一作用域中不能定義同名的變量,也就是說在不同的作用域中可以定義同名變量,但在實際編程中不推薦這樣做。三技能點詳解——1變量4)變量的聲明變量在程序中必須先聲明后使用,變量的聲明是用于向程序表明變量的類型和名字,但聲明不一定引起內(nèi)存的分配。定義也是聲明,當定義變量時我們聲明了它的類型和名字。如果在一個程序源文件函數(shù)內(nèi)想使用該文件的外部變量或一個源文件使用另一個源文件中定義的外部變量,則應(yīng)該在使用之前用關(guān)鍵字extern對該變量作“外部變量聲明”,表示該變量是一個已經(jīng)定義的外部變量。有了此聲明,就可以從“聲明”處起,合法地使用該外部變量。外部變量聲明的格式為:

extern數(shù)據(jù)類型外部變量名;三技能點詳解——1變量例如,引用同一個文件中的變量:voidfunc(void){

extern

intx;//聲明后面定義的外部變量xx=2;}intx;//定義外部變量x,

引用另一個文件中的變量: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);}三技能點詳解——2常量

常量是固定值,在程序執(zhí)行期間不會改變。這些固定的值,又叫做字面量。常量可以是任何的基本數(shù)據(jù)類型,比如整數(shù)常量、浮點常量、字符常量,或字符串字面值,也有枚舉常量。常量就像是常規(guī)的變量,只不過常量的值在定義后不能進行修改。1)整數(shù)常量整數(shù)常量可以是十進制、八進制或十六進制的常量。前綴指定基數(shù):0x或0X表示十六進制,O表示八進制,不帶前綴則默認表示十進制。三技能點詳解——2常量

整數(shù)常量也可以帶一個后綴,后綴是U和L的組合,U表示無符號整數(shù)(unsigned),L表示長整數(shù)(long)。后綴可以是大寫,也可以是小寫,U和L的順序任意。下面列舉幾個整數(shù)常量的實例: 213//十進制數(shù)213 O213//八進制數(shù)213,等于十進制數(shù)139 215u//無符號的整數(shù)215 0xFeeL//十六進制的長整數(shù)Fee 0xFF03aul//十六進制的無符號長整數(shù)FF03a 078//非法的:8不是八進制的數(shù)字

032UU//非法的:不能重復(fù)后綴

2)浮點常量

浮點常量由整數(shù)部分、小數(shù)點、小數(shù)部分和指數(shù)部分組成。您可以使用小數(shù)形式或者指數(shù)形式來表示浮點常量。

當使用小數(shù)形式表示時,必須包含整數(shù)部分、小數(shù)部分,或同時包含兩者。當使用指數(shù)形式表示時,必須包含小數(shù)點、指數(shù),或同時包含兩者。帶符號的指數(shù)是用e或E引入的。下面列舉幾個浮點常量的實例: 3.14159//合法的 314159E-5L//合法的 510E//非法的:不完整的指數(shù)

210f//非法的:沒有小數(shù)或指數(shù)

.e55//非法的:缺少整數(shù)或分數(shù)

三技能點詳解——2常量三技能點詳解——2常量3)字符常量字符常量是括在單引號中,如'2'、'a'、'E'、''等,每個字符占一個字節(jié),可以存儲在

char

類型的簡單變量中。在計算機中,字符按ASCII值存放,上述對應(yīng)的4個字符的ASCII值為50、97、69、32等,字符常量可以是一個普通的字符(例如'x')、一個轉(zhuǎn)義序列(例如'\t')。在C中,有一些特定的字符,當它們前面有反斜杠時,它們就具有特殊的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符,例如,在前面的案例printf函數(shù)的格式串中用到的“\n”就是一個轉(zhuǎn)義字符,其意義是“換行”。常用轉(zhuǎn)義字符如表1.4.2所示。三技能點詳解——2常量表1.4.2常用轉(zhuǎn)義字符表轉(zhuǎn)義序列含義轉(zhuǎn)義序列含義\\\字符\n換行\(zhòng)''字符\r回車\""字符\t水平制表\??字符\v垂直制表\a警報鈴聲\ooo一到三位的八進制數(shù)\b退格\xhh…一個或多個數(shù)字的十六進制數(shù)\f換頁%%百分號%三技能點詳解——2常量4)字符串常量字符串字面值或常量是括在雙引號""中的,如"Hello,world!",它們在內(nèi)存中是按照每個字符的ASCII碼連續(xù)存放的,并在結(jié)尾處添加了一結(jié)束標志'\0',對應(yīng)的ASCII值為0,這樣n個字符組成的字符串需占用n+1個字節(jié)。這里需注意的是:(1)字符串中包含有雙引號字符時,字符雙引號必須用轉(zhuǎn)義字符表示;(2)一個字符串需占用兩行時,需采用兩對雙引號,如"Thisstring""istoolong!";案例1.4.1變量的作用域在變量的不同作用域中定義同名變量,并通過在各個作用域中輸出變量值檢驗變量的作用域范圍。/***********************************************內(nèi)容簡述:檢驗同名變量在不同作用域的作用范圍***********************************************/#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);}}

三技能點詳解——案例案例1.4.2字符運算與轉(zhuǎn)義字符字符常量在內(nèi)存中存儲和運算時都是以ASCII碼形式進行的,同時在使用printf()函數(shù)在屏幕輸出時需要使用一些轉(zhuǎn)義字符或格式控制字符來獲得所需的輸出格式/************************************************內(nèi)容簡述:求’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");}三技能點詳解——案例案例1.4.3extern聲明外部變量本案例是說明在一個函數(shù)內(nèi)部如何聲明引用外部變量。/********************************************************內(nèi)容簡述:

使用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);}三技能點詳解——案例04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.4變量與常量四技能點拓展——1#define定義標識符常量

使用#define預(yù)處理指令定義符號常量的格式為:#define

標識符常量

例如:#definePI3.1415926

這里標識符通常使用“見名知義”的大寫英文字符串或英文單詞表示。例如:

編寫程序求不同大小的長方形課桌面的面積。我們知道課桌有大有小,長寬不一,假設(shè)某一課桌的長為1.2m,寬為0.6m,求桌面的面積,程序如下:四技能點拓展——1#define定義標識符常量#include

<stdio.h>

#defineLENGTH1.2//使用#define定義標識符常量LENGTH代替實型常量1.2#defineWIDTH0.6//使用#define定義標識符常量WIDTH代替0.6#defineNEWLINE'\n'//使用#define定義標識符常量NEWLINE代替'\n'

voidmain(void){

floatarea;//定義浮點型變量area來存儲面積

area=LENGTH*WIDTH;//利用長X寬求面積

printf("課桌面的面積:%f",area);

printf("%c",NEWLINE);}運行結(jié)果:四技能點拓展——2

const定義常量使用

const

關(guān)鍵字定義常量的一般格式為:const

數(shù)據(jù)類型

變量名=常量;例如:const

intvar=7;//表示變量

var中保存7,不可改變這里需注意的是使用const關(guān)鍵字定義常量時必須初始化,且在同一語句中完成,如上面的語句不能寫成:const

intvar;var=7;四技能點拓展——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);}運行結(jié)果:04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.4變量與常量五技能點檢測完成課堂任務(wù),在線提交;完成技能檢測,在線提交;C語言程序設(shè)計基礎(chǔ)與實踐模塊一編程技術(shù)基礎(chǔ)任務(wù)1.5運算符與表達式C語言程序設(shè)計基礎(chǔ)與實踐課程組04技能點拓展03技能點詳解02技能點分析目錄CONTENTS任務(wù)1.5運算符與表達式01問題引入05技能點檢測一問題引入

計算機處理的基本對象是數(shù)據(jù)。變量和常量則是程序的最基本的數(shù)據(jù)形式,將它們用操作符(也稱為運算符)連接起來,便構(gòu)成了表達式。

在應(yīng)用程序中,經(jīng)常會對數(shù)據(jù)進行運算,為此,C語言提供了多種類型的運算符,即專門用于告訴程序執(zhí)行特定運算或邏輯操作的符號。04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.5運算符與表達式二技能點分析1、了解運算符的基本類型;2、能夠運用運算符完成運算。學(xué)習(xí)目標1.C語言中支持哪些種類的運算符?2.a(chǎn)++與++a有何區(qū)別?3.當由多個不同運算符和運算數(shù)組成較為復(fù)雜的表達式時,其運算符計算順序如何確定?學(xué)期預(yù)習(xí)04技能點拓展03技能點詳解02技能點分析目錄CONTENTS01問題引入05技能點檢測任務(wù)1.5運算符與表達式三技能點詳解——1算術(shù)運算符C語言中算術(shù)運算符有加“+”、減“

”、乘“*”、除“/”、求余(模)“%”、“++”、“

”7個,其中+、

、*、/、%是二元運算符,++、

是一元運算符。+、--、*、/都能對整數(shù)或?qū)崝?shù)進行運算。在同一級別運算時,按左結(jié)合規(guī)則進行。算術(shù)運算符的操作功能描述如表1.5.1所示,其中假設(shè)整型變量a的值為2,變量b的值為5。運算符描述實例+把兩個操作數(shù)相加a+b將得到7-從第一個操作數(shù)中減去第二個操作數(shù)a-b將得到-3*把兩個操作數(shù)相乘a*b將得到10/分子除以分母b/a將得到2.5%取模運算符,整除后的余數(shù)b%a將得到1++自增運算符,整數(shù)值增加1a++或++a將得到3--自減運算符,整數(shù)值減少1a--或--a將得到11)求余運算符%

求余運算符%只能對整型數(shù)據(jù)進行,若表1.5.1所示,5%2的值為1。

若在計算“a%b”時,如果a、b中至少有一個為負數(shù),此時運算結(jié)果如何呢?C語言中規(guī)定:余數(shù)與a的符號相同,而絕對值不變。因此表達式5%3、5%-3、-5%3、-5%-3的值分別為2、2、-2、-2。三技能點詳解——1算術(shù)運算符三技能點詳解——1算術(shù)運算符2)++、--運算符++、--只能對整型變量進行運算,如表1.5.1所示,a為整型變量。++、--運算符可寫在變量的前面或變量的后面,寫在變量的前面稱為前綴(或前置)運算符,寫在變量的后面稱為后綴(或后置)運算符,在使用前綴運算與后綴運算時要注意如下兩點:(1)++a與a++單獨構(gòu)成表達式時,兩者使用時沒有區(qū)別;(2)++a與a++不是單獨構(gòu)成表達式時,前綴運算表示先加后用,后綴運算表示先用后加。三技能點詳解——2關(guān)系運算符關(guān)系運算又稱為比較大小運算,它有6個運算符:>、>=、<、<=、==、!=,它們的結(jié)合規(guī)則都是自左向右的。關(guān)系運算的結(jié)果為邏輯真或邏輯假,關(guān)系成立時為邏輯真(值為1),關(guān)系不成立時為邏輯假(值為0)。表1.5.2列出了各個關(guān)系運算符的功能描述與實例,其中假設(shè)a的值為2,b的值為5。運算符描述實例==檢查兩個操作數(shù)的值是否相等,相等為真,不等為假。(a==b)為假。!=檢查兩個操作數(shù)的值是否相等,不等為真,相等為假。(a!=b)為真。>

檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是則條件為真。(a>b)為假。<

檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是則條件為真。(a<b)為真。>=檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是則條件為真。(a>=b)為假。<=檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是則條件為真。(a<=b)為真。三技能點詳解——3邏輯運算符C語言中邏輯運算符有:邏輯與“&&”、邏輯或“||”、邏輯非“!”。邏輯與表達式a&&b表示a與b中只要有一個條件不滿足(值為0),其運算結(jié)果為0。邏輯或表達式a||b表示a與b中只要有一個條件滿足(值為1),其運算結(jié)果為1。邏輯非表達式!a,當a為1時,結(jié)果為0,當a為0時,結(jié)果為1。邏輯運算真值表如表1.5.3所示。aba&&ba||b!a11110100100101100001表1.5.3邏輯運算真值表三技能點詳解——3邏輯運算符

在C語言邏輯運算中,任何非0值都當作邏輯值1處理,因此表達式0.1||0的結(jié)果值為1。從邏輯與運算a&&b的真值表中,我們可以看出,只要a值為0,不管b值如何,其運算結(jié)果都為0,因此,在進行邏輯與運算時,只要計算a值為0,我們不需計算b值,這種情況,我們稱之為邏輯與優(yōu)化。同樣,對于邏輯或運算a||b,只要a值為1,不需計算b值,此時表達式值恒為1,這種情況稱之為邏輯或優(yōu)化。三技能點詳解——4位運算符位運算符作用于位,并逐位執(zhí)行操作。位運算符有&、|、^、~、>>、<<等6個,表1.5.4列出了C語言中所有位運算符及其運算實例,其中假設(shè)變量a的值為26,變量b的值為15。三技能點詳解——5賦值運算符簡單賦值運算的一般形式為:變量=表達式其功能是將一個表達式的值賦給變量。如表達式:a=b+c該式讀作將表達式b+c的值賦給a。其本意是改寫變量a的值,而不是判斷b+c與a是否相等。這里需要注意的是:C語言中的賦值運算符不能誤看作為數(shù)學(xué)上的關(guān)系運算符——等于運算符。又如數(shù)學(xué)上表達式:a=a+5,是錯誤的表達式,但在C語言中這是正確的合法表達式,它是改寫存儲單元a中的內(nèi)容,因為在C中,運算符“=”不是關(guān)系運算符,而是賦值運算符。三技能點詳解——5賦值運算符運算符描

述實例=簡單的賦值運算符,把右邊操作數(shù)的值賦給左邊操作數(shù)C=A+B將A+B的值賦給C+=加且賦值運算符,把右邊操作數(shù)加上左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C+=A相當于C=C+A-=減且賦值運算符,把左邊操作數(shù)減去右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C-=A相當于C=C-A*=乘且賦值運算符,把右邊操作數(shù)乘以左邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C*=A相當于C=C*A/=除且賦值運算符,把左邊操作數(shù)除以右邊操作數(shù)的結(jié)果賦值給左邊操作數(shù)C/=A相當于C=C/A%=求模且賦值運算符,求兩個操作數(shù)的模賦值給左邊操作數(shù)C%=A相當于C=C%A<<=左移且賦值運算符C<<=2等同于C=C<<2>>=右移且賦值運算符C>>=2等同于C=C>>2&=按位與且賦值運算符C&=2等同于C=C&2^=按位異或且賦值運算符C^=2等同于C=C^2|=按位或且賦值運算符C|=2等同于C=C|2三技能點詳解——6雜項運算符表1.5.6列出了C語言支持的其他一些重要的運算符,包括sizeof和?:。運算符描述實例sizeof()返回變量的大小sizeof(a)將返回4,其中a是整數(shù)&返回變量的地址&a;將給出變量的實際地址*指向一個變量*a;將指向一個變量?:條件表達式如果條件為真?則值為X:否則值為Y1)sizeof運算符sizeof表示計算變量或表達式占用的存儲空間大小,即字節(jié)數(shù)。sizeof計算類型占用字節(jié)數(shù)的形式為:

sizeof(類型)sizeof計算變量占用字節(jié)數(shù)的形式有兩種:

sizeof(變量)或

sizeof

變量三技能點詳解——6雜項運算符2)條件運算符條件運算符是C語言中唯一的三元運算符,用符號?:表示,它帶有3個操作數(shù),其書寫一般形式為:a?b:c其計算方法是先計算a,若a非0,則選擇b作為表達式值,否則選擇c作為表達式值,因此,條件運算又稱為選擇運算。例如:程序代碼中有定義“inta=3,b=5,c;”則執(zhí)行代碼“c=a>b?a:b;”后的結(jié)果為c=5三技能點詳解——7運算符優(yōu)先級

前面已簡單介紹了C語言中的每個運算符都有一定的優(yōu)先級和結(jié)合規(guī)則,表1.5.6按運算符優(yōu)先級從高到低列出各個運算符及其結(jié)合規(guī)則,具有較高優(yōu)先級的運算符出現(xiàn)在表格的上面,具有較低優(yōu)先級的運算符出現(xiàn)在表格的下面。

當由多個不同運算符和運算數(shù)組成較為復(fù)雜的表達式時,其運算符計算順序按如下規(guī)則執(zhí)行:(1)不同級別的運算符按運算符的優(yōu)先級別確定計算順序,優(yōu)先級別高(優(yōu)先級別數(shù)?。┑倪\算符先計算,優(yōu)先級別低(優(yōu)先級別數(shù)大)的運算符后計算;(2)相同級別的運算符按結(jié)合規(guī)則確定計算順序。如表達式3+4*(17-5)/(1+2)的計算順序為:①左邊括號運算(17-5),值為12,②右邊括號運算(1+2),值為3,③左邊乘法運算4*12,值為48,④右邊除法運算48/3,值為16,⑤加法運算3+16,值為19。案例1.5.1算術(shù)運算編程實現(xiàn)兩個整型變量的算術(shù)運算。/***********************************************內(nèi)容簡述:兩個整型變量的算術(shù)運算***********************************************/#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);}三技能點詳解——案例案例1.5.2關(guān)系運算測得甲乙的體溫,通過編程判斷兩人是否發(fā)熱(超過37.3℃)。/************************************************內(nèi)容簡述:判斷兩個數(shù)的大小關(guān)系***********************************************/#include

<stdio.h>

voidmain(void){

floatt=36.5;

floatT=37.3;

printf("測得甲的體溫為:%.2f\n",t);

if(t<T){

printf("體溫小于37.3℃,甲沒有發(fā)熱\n");}

if(t>=T){

printf("體溫大于或等于37.3℃,甲發(fā)熱\n");}

t=38.5;

printf("測得乙的體溫為:%.2f\n",t);

if(t<T){

printf("體溫小于37.3℃,乙沒有發(fā)熱\n");}

if(t>=T){

printf("體溫大于或等于37.3℃,乙發(fā)熱\n");}}三技能點詳解——案例案例1.5.3邏輯運算編程實現(xiàn)兩個量的三個邏輯運算。/********************************************************內(nèi)容簡述:

判斷兩個量的邏輯運算結(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兩條件中是否至少有一個為真{

printf("a和b至少有一個為真\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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論