第2章 簡(jiǎn)單C程序設(shè)計(jì)_第1頁(yè)
第2章 簡(jiǎn)單C程序設(shè)計(jì)_第2頁(yè)
第2章 簡(jiǎn)單C程序設(shè)計(jì)_第3頁(yè)
第2章 簡(jiǎn)單C程序設(shè)計(jì)_第4頁(yè)
第2章 簡(jiǎn)單C程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩185頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章簡(jiǎn)單C程序設(shè)計(jì)《C語(yǔ)言程序設(shè)計(jì)》2023/2/31《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)講授方法——解析法“解析法”是從實(shí)際問(wèn)題入手,剖析求解問(wèn)題的關(guān)鍵點(diǎn)(進(jìn)行知識(shí)的發(fā)現(xiàn)),然后結(jié)合問(wèn)題講解需要的知識(shí)點(diǎn),最后給出問(wèn)題的求解辦法和實(shí)現(xiàn)過(guò)程,并舉一反三。各章節(jié)以問(wèn)題入手,分析并講述需要的知識(shí)點(diǎn),然后再實(shí)現(xiàn)該問(wèn)題,并通過(guò)思考題延伸知識(shí)點(diǎn)或引入新的問(wèn)題,環(huán)環(huán)相扣,層層推進(jìn),充分體現(xiàn)解析法的精髓,達(dá)到通俗易懂、由淺入深的效果,舉一反三,培養(yǎng)遷移知識(shí)的能力。

2023/2/32《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)本章內(nèi)容圓周長(zhǎng)和面積問(wèn)題

1大小寫字母轉(zhuǎn)換問(wèn)題2關(guān)鍵字與表達(dá)式基本數(shù)據(jù)類型常量與變量數(shù)據(jù)類型轉(zhuǎn)換運(yùn)算符和表達(dá)式C語(yǔ)句三角形面積問(wèn)題3格式化輸入輸出預(yù)處理C程序結(jié)構(gòu)及書寫規(guī)則

42023/2/33《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)首先分析第一個(gè)C程序#include<stdio.h>/*預(yù)處理命令*/main()

/*主函數(shù)*/{printf("hello,world!\n");/*庫(kù)函數(shù),輸出字符序列*/}問(wèn)題:(1)這個(gè)程序包括哪些組成部分?(2)這里顯示的是字符序列,能不能顯示數(shù)字?jǐn)?shù)據(jù)呢?2023/2/34《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)第一個(gè)C程序的組成預(yù)處理主函數(shù)main注釋

C程序由函數(shù)組成:主函數(shù)庫(kù)函數(shù)自定義函數(shù)#include<stdio.h>main()/*主函數(shù)*/{printf("hello,world!\n");}2023/2/35《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)主函數(shù)組成main(){…;}函數(shù)頭函數(shù)體C語(yǔ)句2023/2/36《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)程序說(shuō)明#include<stdio.h>告訴編譯器在本程序中包含標(biāo)準(zhǔn)輸入/輸出庫(kù)的信息。printf函數(shù)在stdio.h中聲明。main表示C語(yǔ)言的一個(gè)特殊函數(shù),稱之為主函數(shù)。每個(gè)C程序都必須有一個(gè)且只能有一個(gè)主函數(shù),整個(gè)程序從主函數(shù)開始執(zhí)行,最后結(jié)束于主函數(shù)。main()表示主函數(shù)的函數(shù)頭?!皗}”中的內(nèi)容是函數(shù)體。主函數(shù)中的所有操作(或語(yǔ)句)都在這一對(duì)“{}”之間。本程序的主函數(shù)中只有一條函數(shù)調(diào)用語(yǔ)句。“/*……*/”表示注釋,不執(zhí)行。

2023/2/37《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題?第一個(gè)程序顯示的是字符序列,能不能顯示數(shù)字?jǐn)?shù)據(jù)呢?C程序還可以包括哪些內(nèi)容呢?下面仿照第一個(gè)C程序來(lái)編寫其他程序。2023/2/38《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)課堂練習(xí)仿照C語(yǔ)言第一個(gè)程序,編寫C程序在屏幕上直接輸出圓的周長(zhǎng)和面積。編寫程序輸出如下形狀的圖形:************************2023/2/39《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題的提出及分析例2-1仿照C語(yǔ)言第一個(gè)程序,編寫C程序在屏幕上直接輸出圓的周長(zhǎng)和面積。分析:要計(jì)算圓面積和周長(zhǎng),務(wù)必知道圓半徑,怎樣才能獲得呢?另外,要輸出面積和周長(zhǎng)(數(shù)值數(shù)據(jù)),該怎么辦呢?2023/2/310《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題實(shí)現(xiàn)方法1-直接輸出圓面積和周長(zhǎng)#include<stdio.h>/*LI2_1.C*/#include<stdio.h>intmain(){ printf("circumference=%f\n",2*3.14159*5.3);/*輸出周長(zhǎng)*/ printf("area=%f\n",3.14159*5.3*5.3);/*輸出面積*/ return0;}2023/2/311《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)C程序的基本組成主函數(shù)main標(biāo)識(shí)符、關(guān)鍵字、注釋基本數(shù)據(jù)類型常量與變量基本表達(dá)式C語(yǔ)句格式化輸入輸出預(yù)處理命令下面圍繞問(wèn)題,分別介紹上述語(yǔ)法知識(shí)。2023/2/312《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題?前面反復(fù)提到標(biāo)識(shí)符、關(guān)鍵字,什么是關(guān)鍵字、標(biāo)識(shí)符呢?2023/2/313《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)涉及到的語(yǔ)法知識(shí)-標(biāo)識(shí)符與關(guān)鍵字標(biāo)識(shí)符標(biāo)識(shí)符是變量,函數(shù),標(biāo)號(hào)等的名字或標(biāo)記兩類:系統(tǒng)定義的標(biāo)識(shí)符,例如:printf、scanf、main等用戶自己定義的,自己定義標(biāo)識(shí)符時(shí)要考慮如下問(wèn)題:只能用字母、數(shù)字和下劃線,并且第一個(gè)字母只能是字母或下劃線;不能與關(guān)鍵字(系統(tǒng)保留的特殊詞匯)相同;區(qū)分大小寫,即R和r是兩個(gè)不同變量。為便于閱讀和理解,對(duì)象的取名盡可能直觀,最好不要用系統(tǒng)定義的標(biāo)識(shí)符。關(guān)鍵字我們已經(jīng)學(xué)的有:shortlongintfloatdoublecharvoid2023/2/314《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)關(guān)鍵字與標(biāo)識(shí)符關(guān)鍵字(Keyword)又稱為保留字,C語(yǔ)言中預(yù)先規(guī)定的具有固定含義的一些單詞如:int,float等標(biāo)識(shí)符(Identifier)系統(tǒng)預(yù)定義標(biāo)識(shí)符,如:main,printf,include,stdio等

用戶自定義標(biāo)識(shí)符,如:r,Add,x,y

等2023/2/315《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)關(guān)鍵字C語(yǔ)言中的常用的關(guān)鍵字(附錄B)有以下32個(gè):(1)類型名關(guān)鍵字:int、char、float、double、short、long、unsigned、void(2)存儲(chǔ)類別關(guān)鍵字:auto、static、register、extern(3)控制語(yǔ)句關(guān)鍵字:if、while、do、goto、break、continue、for、default、case、switch、return、else(4)自定義類型關(guān)鍵字:struct、union、enum(5)其他關(guān)鍵字:typedef、sizeof、signed、include、define另外,TurboC2.0擴(kuò)展關(guān)鍵字有:

asm,_cs,_ds,_es,_ss,cdecl,far,near,huge,interrupt,pascal2023/2/316《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)標(biāo)識(shí)符標(biāo)識(shí)符分為:系統(tǒng)預(yù)定義標(biāo)識(shí)符(如main、printf等)用戶自定義標(biāo)識(shí)符(如Add、r、x,y,sum等)在程序中使用的常量、變量、語(yǔ)句標(biāo)號(hào)以及函數(shù)的名稱等統(tǒng)稱為標(biāo)識(shí)符(Identifier)除庫(kù)函數(shù)的函數(shù)名、頭文件名和預(yù)處理命令由系統(tǒng)定義外,其余都由用戶自定義2023/2/317《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)標(biāo)識(shí)符標(biāo)識(shí)符的命名必須遵守以下原則:(1)不能是C語(yǔ)言中的關(guān)鍵字,如int,do,for等等。(2)只能由字母,數(shù)字,和下劃線三種字符組成,且第一個(gè)字符必須是字母或下劃線。(3)不要太長(zhǎng)。舊的ANSIC規(guī)定前6個(gè)字符有效;在IBM-PC的MSC系統(tǒng)中取8個(gè)字符;TurboC則允許32個(gè)字符。(4)見名知義。區(qū)分大小寫。2023/2/318《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)標(biāo)識(shí)符舉例合法的標(biāo)識(shí)符

不正確的標(biāo)識(shí)符

smart

5smart

_decision

bomb?

key_board

key.board

FLOAT

floatYear2008a%2023/2/319《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)注釋符C語(yǔ)言的注釋符是以“/*”開頭并以“*/”結(jié)尾的字符序列。在“/*”和“*/”之間的即為注釋。注釋在程序中起提示、解釋程序的作用。注釋可出現(xiàn)在程序中的任何位置。程序編譯時(shí),不對(duì)注釋作任何處理。在軟件開發(fā)過(guò)程中,還可以將注釋用于程序的調(diào)試,暫時(shí)屏蔽一些語(yǔ)句。注釋與軟件的文檔同等重要,要養(yǎng)成使用注釋的良好習(xí)慣,這對(duì)軟件的維護(hù)相當(dāng)重要。如:/*LI2_1.c*/#include<stdio.h>voidmain(){printf("area=%f\n",3.14159*5.3*5.3);/*輸出面積*/printf("circumference=%f\n",2*3.14159*5.3);/*輸出周長(zhǎng)*/}2023/2/320《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)進(jìn)一步思考?如果需要計(jì)算多個(gè)圓的周長(zhǎng)和面積,該怎么修改程序?例2-2計(jì)算兩個(gè)圓的周長(zhǎng)和面積,要求將給定半徑存儲(chǔ)起來(lái),并將計(jì)算結(jié)果輸出到屏幕。利用馮氏計(jì)算機(jī)存儲(chǔ)程序的特點(diǎn),可將半徑用變量存儲(chǔ)起來(lái)、多次使用,還可改變其值,即可解決計(jì)算多個(gè)的問(wèn)題。2023/2/321《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題的分析甲:請(qǐng)給我計(jì)算一下圓的周長(zhǎng)和面積。乙:請(qǐng)問(wèn)半徑是多少?甲:5.3。乙:圓的周長(zhǎng)=2*π*5.3=33.3

圓的面積=π*5.3*5.3=88.25算法?開始輸入半徑計(jì)算周長(zhǎng)和面積輸出計(jì)算結(jié)果結(jié)束2023/2/322《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題實(shí)現(xiàn)方法2-用變量存儲(chǔ)半徑再計(jì)算#include<stdio.h>voidmain(){

floatr=5.3;

printf("circumference=%f\n",2*3.14159*r);/*輸出周長(zhǎng)*/ printf("area=%f\n",3.14159*r*r);/*輸出面積*/ }2023/2/323《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)輸入半徑-分析計(jì)算機(jī)如何區(qū)分半徑,周長(zhǎng),面積?為不同的數(shù)據(jù)定義不同的變量名,例如:r,circumference,area.計(jì)算機(jī)上處理的數(shù)據(jù)有幾種類型?這些數(shù)據(jù)又是什么類型?三種:整數(shù)類型(int)、實(shí)數(shù)類型(float和double)、字符類型(char),不同類型的數(shù)據(jù)其編碼方式和所占空間不同。半徑等數(shù)據(jù)都是實(shí)數(shù)類型2023/2/324《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)輸入半徑-分析用什么語(yǔ)句實(shí)現(xiàn)輸入?用賦值語(yǔ)句或scanf()輸入的數(shù)據(jù)存放在哪??jī)?nèi)存系統(tǒng)根據(jù)變量的數(shù)據(jù)類型自動(dòng)為其分配空間,并將內(nèi)存地址與變量名進(jìn)行關(guān)聯(lián)。我們根據(jù)變量名使用變量,系統(tǒng)根據(jù)其對(duì)應(yīng)的內(nèi)存地址對(duì)數(shù)據(jù)進(jìn)行讀寫。2023/2/325《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)方法2是用賦值語(yǔ)句實(shí)現(xiàn)的半徑存儲(chǔ):floatr;r=5.3;2023/2/326《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題實(shí)現(xiàn)方法3—計(jì)算多個(gè)圓面積和周長(zhǎng)#include<stdio.h>intmain(){

floatr; r=5.3;

printf("circumference=%f\n",2*3.14159*r);/*輸出周長(zhǎng)*/ printf("area=%f\n",3.14159*r*r);/*輸出面積*/

r=7.5;

printf(“circumference=%f\n”,2*3.14159*r);/*輸出周長(zhǎng)*/ printf("area=%f\n",3.14159*r*r);/*輸出面積*/ return0;}2023/2/327《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)數(shù)據(jù)類型(DataType)數(shù)據(jù)為什么要區(qū)分類型?例2-1中“2*3.14159*5.3”的2為整數(shù),5.3和3.14159為實(shí)數(shù),其范圍不一樣開辟不同的內(nèi)存空間可以參加的運(yùn)算不同在程序中指定數(shù)據(jù)的類型就是為了明確存儲(chǔ)空間的大小,以便對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作不同類型的數(shù)據(jù)代表不同的數(shù)據(jù)表示形式合法的取值范圍占用內(nèi)存空間大小可參與的運(yùn)算種類2023/2/328《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)涉及到的語(yǔ)法知識(shí)-數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型實(shí)型(浮點(diǎn)型)字符型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型單精度實(shí)型雙精度實(shí)型基本整型長(zhǎng)整型短整型無(wú)符號(hào)整型2023/2/329《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)基本數(shù)據(jù)類型int整數(shù),在目前絕大多數(shù)機(jī)器上占4個(gè)字節(jié)。TC2中是2個(gè)字節(jié)float單精度浮點(diǎn)數(shù),一般是4個(gè)字節(jié)長(zhǎng)double雙精度浮點(diǎn)數(shù),一般是8個(gè)字節(jié)長(zhǎng)char字符,一般是1個(gè)字節(jié)長(zhǎng)用來(lái)表示256個(gè)ASCII字符,或者0~255的整數(shù)枚舉型enum注意:字符類型與整數(shù)類型在一定范圍內(nèi)可互相轉(zhuǎn)換。即將字符的ASCII碼等同于一個(gè)整數(shù)。2023/2/330《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)基本數(shù)據(jù)類型的分類16320~4294967295unsigned

long類型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(wú)(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~2147483647unsignedint0~65535unsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無(wú)unsignedchar80~255說(shuō)明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同,上表以IBMPC機(jī)為例。2023/2/331《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)字符編碼

ACSII碼(AmericanStandardCodeforInformationInterchange)128個(gè)常用字符,用7位二進(jìn)制編碼,從0到127控制字符:0~32,127;普通字符:94個(gè)。例如:“a”字符的編碼為1100001,對(duì)應(yīng)的十進(jìn)制數(shù)是97;換行0AH10

回車0DH13

空格 20H 32‘0’~‘9’30H~39H 48~57‘A’~‘Z’41H~5AH 65~90‘a(chǎn)’~‘z’ 61H~7AH 97~1222023/2/332《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)字符編碼標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。其中0~127如附錄A,128~255是特殊符號(hào)如:中文、日文。2023/2/333《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)類型長(zhǎng)度占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字short≤int≤long可用下面運(yùn)算測(cè)量:sizeof(數(shù)據(jù)或數(shù)據(jù)類型符或變量名)求出的結(jié)果為表達(dá)式值所屬類型或者類型占用的字節(jié)數(shù)2023/2/334《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)sizeof的應(yīng)用#include<stdio.h>voidmain(void){ printf("DatatypeNumberofbytes\n"); printf("---------------------------------\n"); printf("char%d\n",sizeof(char)); printf("int%d\n",sizeof(int)); printf("shortint%d\n",sizeof(short)); printf("longint%d\n",sizeof(long)); printf("float%d\n",sizeof(float));

printf("double%d\n",sizeof(double));}2023/2/335《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)數(shù)據(jù)類型修飾符shortshort

int的簡(jiǎn)寫,短整數(shù),一般2個(gè)字節(jié)長(zhǎng)??珊?jiǎn)寫為shortlonglong

int,長(zhǎng)整數(shù),一般是4個(gè)字節(jié)長(zhǎng)。通常簡(jiǎn)寫為longlong

double,長(zhǎng)雙精度(高精度)浮點(diǎn)數(shù),一般是10個(gè)字節(jié)長(zhǎng)。signed用來(lái)修飾char、int、short和long,說(shuō)明他們是有符號(hào)的整數(shù)(正整數(shù)、0和負(fù)整數(shù))。一般缺省都是有符號(hào)的,所以這個(gè)修飾符通常省略u(píng)nsigned用來(lái)修飾char、int、short和long,說(shuō)明他們是無(wú)符號(hào)的整數(shù)(正整數(shù)和0)請(qǐng)大家課下親自計(jì)算一下每種數(shù)據(jù)類型能夠表達(dá)的數(shù)據(jù)范圍!!!并思考:若計(jì)算的數(shù)據(jù)超出范圍會(huì)怎樣?2023/2/336《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)C語(yǔ)言承認(rèn)的基本數(shù)據(jù)類型charshortintintlongintsigned(或unsigned)+floatdoublelongdouble2023/2/337《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式整型(以補(bǔ)碼方式存儲(chǔ))實(shí)型(默認(rèn)為double型,以浮點(diǎn)數(shù)指數(shù)形式存儲(chǔ))N=S×2j字符型(存放ASCII碼值)階碼符號(hào)階碼的數(shù)值尾數(shù)符號(hào)尾數(shù)的數(shù)值階碼j尾數(shù)S2023/2/338《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)如何選擇恰當(dāng)?shù)臄?shù)據(jù)類型?具體問(wèn)題具體分析,盡量選擇取值范圍較大些的數(shù)據(jù)類型1+2+3+…1!+2!+3!+…13+23+33+…2023/2/339《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例】求兩個(gè)整數(shù)的和。#include<stdio.h>voidmain(){

int

a=23,b=45;/*定義兩個(gè)整型變量*/printf("sum=%d\n",a+b);}其中,“%d”表示按十制整數(shù)輸出。2023/2/340《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)問(wèn)題?如果我們希望將面積和周長(zhǎng)、以及兩數(shù)和保存起來(lái),應(yīng)該怎么辦?2023/2/341《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)數(shù)據(jù)的兩種形式數(shù)據(jù)的表現(xiàn)形式有兩種:常量變量在上述程序中,常量(常數(shù)):5.3、23、45變量:r、a、b2023/2/342《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)常量與變量常量是一種在程序中保持固定類型和固定值的數(shù)據(jù)。編譯系統(tǒng)從數(shù)據(jù)形式上可以區(qū)分(除枚舉類型外)。常量分為:整型常量實(shí)型常量字符常量字符串常量枚舉常量變量是在程序執(zhí)行過(guò)程中可以改變。2023/2/343《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)涉及到的語(yǔ)法知識(shí)-常數(shù)與常量十進(jìn)制:以非0數(shù)字開頭,如:123,-9,0八進(jìn)制:以0數(shù)字開頭,如:0123,011,067十六進(jìn)制:以0x數(shù)字開頭,如:0x123,0xff整型常量十進(jìn)制:必須帶小數(shù)點(diǎn),如:123.0,.9,0.0,-10.指數(shù)形式:E或e前面必須有數(shù)值,后邊必須是整數(shù),如:1.23E3,.9e-2,5e2,-8E-4實(shí)型常量普通字符:如:’a’,’2’,’H’,’&’,’#’,表示字符的ASCII碼值轉(zhuǎn)義字符:如:’\n’,’\167’,’\x1f’,’\\’,’\’’字符常量常量字符串常量:用雙引號(hào)引起來(lái),系統(tǒng)最后自動(dòng)加’\0’。如:”Hello”,”a”枚舉常量(枚舉元素)思考:‘3’與3有何不同,“a”與‘a(chǎn)’有何不同還有一種常量稱為符號(hào)常量例:#definePI3.14159格式:#define符號(hào)常量名常量2023/2/344《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)十進(jìn)制:以非0數(shù)字開頭,如:123,-9八進(jìn)制:以0數(shù)字開頭,如:0123,011,067十六進(jìn)制:以0x數(shù)字開頭,如:0x123,0xff定點(diǎn)數(shù)形式:必須帶小數(shù)點(diǎn),如:123.05,0.9,0.0,-10.5浮點(diǎn)數(shù)形式:如:1.23E3,.9e-2,5e2,-8E-4普通字符:如:’a’,’2’,’H’,’&’,’#’,表示字符的ASCII碼值轉(zhuǎn)義字符:如:’\n’,’\167’,’\x1f’,’\a’,’\\’,’\’整型常量實(shí)型常量字符常量字符串常量:用雙引號(hào)引起來(lái),如:”Hello”,”a”枚舉常量(枚舉元素):如enumbox{pencil,pen}中的pencil、pen值分別為0、1常量圖2-2常量的分類2023/2/345《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)整型常量整型常量十進(jìn)制:18、-31longint型常量123l、123L、123456l、123456Lunsignedint型常量123u、123U根據(jù)實(shí)際數(shù)據(jù)大小確定int型還是long型2023/2/346《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)八進(jìn)制與十六進(jìn)制常量以數(shù)字“0”開始的整型常量是八進(jìn)制數(shù)022、-037010和10大小不一樣因?yàn)榘诉M(jìn)制并不常用,所以此種表示法比較少見以“0x”或者“0X”開始的整型常量是十六進(jìn)制A~F和a~f用來(lái)表示十進(jìn)制的10~15十六進(jìn)制的形式比較常用0x12、-0x1F,-0x1f2023/2/347《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)整型常量的幾種形式三種形式:●十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示.如123,-456,0●八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011●十六進(jìn)制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff例12與12L例30000為int型65536為longint型整型常量的類型●根據(jù)其值所在范圍確定其數(shù)據(jù)類型●在整常量后加字母l或L,認(rèn)為它是longint

型常量問(wèn)題:0123=()100x123=()100Xff=()1083291255問(wèn)題:0123=(

)100x123=()100Xff=()102023/2/348《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)實(shí)型常量實(shí)型常量十進(jìn)制小數(shù)形式:123.45、456.78指數(shù)形式:1e-2、4.5e3float型常量123.45f、456.78F、1e-2f、4.5e3Flongdouble型常量123.45l、456.78L、4.5e3L缺省為double2023/2/349《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)字符(Character)常量字符常量的表示方法’a’,’A’,’5’,’%’,’$’……單引號(hào)內(nèi)只能有一個(gè)字符,除非用“\”開頭就是一個(gè)普通整數(shù),也可以參與各種數(shù)學(xué)運(yùn)算每個(gè)字符具有一個(gè)0~255之間的數(shù)值,可從ASCII表查出注意:’5’和整數(shù)5的區(qū)別字符的數(shù)學(xué)運(yùn)算在密碼學(xué)內(nèi)用得比較多用“\”開頭的字符為轉(zhuǎn)義字符例如,’\n’,代表1個(gè)字符附錄A2023/2/350《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)字符常量——轉(zhuǎn)義符轉(zhuǎn)義字符一些特殊字符(無(wú)法從鍵盤輸入或者另有它用)用轉(zhuǎn)義字符表示<轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號(hào)3位8進(jìn)制數(shù)代表的字符水平制表退格換頁(yè)反斜線雙引號(hào)2位16進(jìn)制數(shù)代表的字符2023/2/351《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)例2-3轉(zhuǎn)義符舉例/*LI2_3.c*/#include<stdio.h>voidmain(void){printf("*********\n\tABC123\nabc321\t\b\n*********\n");}2023/2/352《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)字符串(String)常量用雙引號(hào)括住的由0個(gè)或多個(gè)字符組成的字符序列"Iamastring"""表示空字符串轉(zhuǎn)義字符也可以在字符串中使用引號(hào)只作為字符串開始和結(jié)束的標(biāo)志C語(yǔ)言內(nèi)部用’\0’表示字符串的結(jié)束除注釋外,是唯一可以出現(xiàn)中文的地方"x"和’x’是不同的<string.h>里定義了一系列專門的字符串處理函數(shù)2023/2/353《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)為什么需要常量?假如不使用常量,直接使用常數(shù),有什么影響?程序的可讀性變差容易發(fā)生書寫錯(cuò)誤修改麻煩常量只能在定義時(shí)賦值,以后不能再改變其值符號(hào)常量(宏常量)枚舉常量常數(shù)、符號(hào)常量和枚舉常量,都可以用來(lái)表示一個(gè)永遠(yuǎn)不會(huì)改變的數(shù)建議不要直接使用常數(shù),而用后二者代替2023/2/354《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)符號(hào)常量也可以用標(biāo)識(shí)符代表常量,稱為符號(hào)常量。其定義格式為:#define符號(hào)常量常數(shù)或字符序列2023/2/355《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)符號(hào)常量符號(hào)常量也稱宏常量一般采用大寫字母表示不是語(yǔ)句,而是一種編譯預(yù)處理命令宏替換使用字符序列替換2023/2/356《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)求圓面積和圓周長(zhǎng)另解/*求圓面積和圓周長(zhǎng)*/#include<stdio.h>#definePI3.14159#definer1.5voidmain(void){

printf("area=%f\n",PI*r*r);

printf("circumference=%f\n",2*PI*r);}area=7.068577circumference=9.4247702023/2/357《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)源代碼#include<stdio.h>#definePI3.14159voidmain(){floatr=5.3; printf("area=%f\n",PI*r*r);printf("circumference=%f\n",2*PI*r);}2023/2/358《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)枚舉(Enumeration)常量枚舉即一一列舉,枚舉類型描述一組有限個(gè)整型數(shù)據(jù)值的集合。例子:enumweeks{SUN,MON,TUE,WED,THU,FRI,SAT};enumweekstoday;enumresponse{no,yes,none};enumresponseanswer;today=TUE;answer=yes;

if(answer==yes)printf("TodayisTuesday.\n");elseprintf("TodayisNOTTuesday.\n");2023/2/359《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)變量概念:其值可以改變的量三要素:變量名、變量值、存儲(chǔ)單元使用變量的基本原則變量必須先定義,后使用所有變量必須在第一條可執(zhí)行語(yǔ)句前定義存儲(chǔ)單元的地址使用&獲取3a變量名變量值存儲(chǔ)單元2023/2/360《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)涉及到的語(yǔ)法知識(shí)-變量使用變量的基本原則變量必須先定義,后使用,為什么?所有變量必須在第一條可執(zhí)行語(yǔ)句前定義變量的類型要根據(jù)實(shí)際情況(數(shù)據(jù)類型及范圍)設(shè)定,否則導(dǎo)致類型溢出和舍入誤差。一條聲明語(yǔ)句可聲明若干個(gè)同類型的變量聲明變量,是初始化變量的最好時(shí)機(jī)不被初始化的變量,其值為危險(xiǎn)的隨機(jī)數(shù)例:

unsignedintx,y,sum=0;

charesc='a'; floateps=1.5;2023/2/361《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)a變量名變量值存儲(chǔ)地址3200A圖2-4變量的三要素2023/2/362《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)定義變量變量初始化:定義時(shí)賦初值

例:inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識(shí)符例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;intx=y=z=1;變量的使用:先定義,后使用例

intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain例

floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain變量定義位置:一般放在函數(shù)開頭main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義可執(zhí)行語(yǔ)句main() {inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3隨機(jī)數(shù)變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];2023/2/363《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例】求兩個(gè)整數(shù)的和。#include<stdio.h>voidmain(){

inta=23,b=45;/*定義兩個(gè)整型變量*/

intsum;/*定義存放結(jié)果的整型變量*/sum=a+b;

/*賦值語(yǔ)句*/printf("sum=%d\n",sum);/*顯示程序運(yùn)算結(jié)果*/}其中,“%d”表示按十制整數(shù)輸出。2023/2/364《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)整型變量例inti=10,j,k;j=1;/*賦值語(yǔ)句*/k=20;/*賦值語(yǔ)句

*/printf(“%d\n”,sizeof(int));/*結(jié)果為?*/printf(“%d\n”,sizeof(i));/*結(jié)果為?*/printf(“%d\n”,sizeof(long));/*結(jié)果為?*/printf(“%d\n”,sizeof(10L));/*結(jié)果為?*/2023/2/365《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)整型變量分類有符號(hào)整型變量●基本型:一般占2個(gè)字節(jié)(16位),int●短整型:一般占2個(gè)字節(jié)(16位),shortint●長(zhǎng)整型:一般占4個(gè)字節(jié)(32位),longint

有符號(hào)整型變量使用signed修飾,但缺省的數(shù)據(jù)類型即表示有符號(hào)整型數(shù)據(jù),因此可以省略修飾符signed。無(wú)符號(hào)整型變量●無(wú)符號(hào)基本型:一般占2個(gè)字節(jié)(16位),unsignedint●無(wú)符號(hào)短整型:一般占2個(gè)字節(jié)(16位),unsignedshortint●無(wú)符號(hào)長(zhǎng)整型:一般占4個(gè)字節(jié)(32位),unsignedlongint1111111111111111unsignedint型:最大:655350000000000000000最小:00111111111111111int型:最大:327671000000000000000最小:-327682023/2/366《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)整型變量取值范圍

ANSI標(biāo)準(zhǔn)建議各種整型數(shù)據(jù)所占位數(shù)和數(shù)值范圍如右表所示(TurboC與該表定義一致):注意:在微機(jī)上用long型可以得到大范圍的整數(shù),但同時(shí)會(huì)降低運(yùn)算速度,因此除非不得已,不要隨便使用long型數(shù)據(jù)。類型名稱比特?cái)?shù)最小取值范圍[signed]short[int]有符號(hào)短整型16-32768~32767即-215~(215-1)[signed]int有符號(hào)基本整型16-32768~32767即-215~(215-1)[signed]long[int]有符號(hào)長(zhǎng)整型32-2147483648~-2147483647即-231~(231-1)unsignedshort[int]無(wú)符號(hào)短整型160~65535即0~(216-1)unsignedint無(wú)符號(hào)基本整型160~65535即0~(216-1)unsignedlong[int]無(wú)符號(hào)長(zhǎng)整型320~4294967295即0~(232-1)2023/2/367《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)整型變量有符號(hào)整數(shù)的范圍-32768~32767,無(wú)符號(hào)整數(shù)的范圍0~65535。無(wú)符號(hào)整數(shù)使用unsigned修飾。在聲明變量時(shí),如果不指定unsigned或指定signed,則表示有符號(hào)型數(shù)據(jù),符號(hào)位有效。如果指定unsigned,則表示無(wú)符號(hào)型數(shù)據(jù),符號(hào)位為該數(shù)本身。032767有符號(hào)整型變量a:111111111111111符號(hào)位165535無(wú)符號(hào)整型變量c:111111111111111代表數(shù)據(jù)的第一位1-1有符號(hào)整型變量b:111111111111111如:inta,b;a=32767;b=-1;unsignedintc;c=65535;032767有符號(hào)整型變量a:111111111111111符號(hào)位165535無(wú)符號(hào)整型變量c:111111111111111代表數(shù)據(jù)的第一位1-1有符號(hào)整型變量b:111111111111111032767有符號(hào)整型變量a:111111111111111符號(hào)位165535無(wú)符號(hào)整型變量c:111111111111111代表數(shù)據(jù)的第一位1-1有符號(hào)整型變量b:111111111111111032767有符號(hào)整型變量a:111111111111111符號(hào)位165535無(wú)符號(hào)整型變量c:111111111111111代表數(shù)據(jù)的第一位1-1有符號(hào)整型變量b:1111111111111112023/2/368《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)整型變量的溢出

一個(gè)int型變量的最大允許值為:32767。如果再加1,則結(jié)果會(huì)變成-32768。032767a:1111111111111111-32768b:000000000000000例:voidmain(){inta=32767,b;longc;b=a+1;c=(long)a+1L;printf(“a=%d,b=%d,c=%ld”,a,b,c);}運(yùn)行結(jié)果為:32767,-32768,32768例:voidmain(){intx=-1;unsignedinty;y=x;printf(“%d,%d,%u\n”,x,y,y);}運(yùn)行結(jié)果為:-1,-1,65535無(wú)符號(hào)數(shù)輸出時(shí),最高位數(shù)值變成符號(hào)位。如符號(hào)位為1,則輸出負(fù)數(shù)。2023/2/369《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-4】已知A=23456,B=56789,C=A+B,打印一個(gè)求A、B兩數(shù)和C的豎式。源代碼如下:/*LI2_4.C*/#include<stdio.h>intmain(){ longa=23456,b=56789,c; printf("%8ld\n",a); printf("%2c%6ld\n",'+',b); printf("%8s\n","--------"); c=a+b; printf("%8ld\n",c); return0;}2023/2/370《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)實(shí)型變量實(shí)型變量float:占4字節(jié),提供6~7位有效數(shù)字,10-37~1038double:占8字節(jié),提供15~16位有效數(shù)字,10-307~10308例floata;a=123456.123;/*a=123456.1共7位*/doubleb;b=123456.123;/*b=123456.123000000共15位*/printf(“%d\n”,sizeof(float));/*結(jié)果為4*/printf(“%d\n”,sizeof(a));/*結(jié)果為4*/printf(“%d\n”,sizeof(double));/*結(jié)果為8*/printf(“%d\n”,sizeof(b));/*結(jié)果為8*/2023/2/371《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)在例2-1中,用實(shí)型變量來(lái)存放圓面積和周長(zhǎng):#include<stdio.h>#definePI3.14159voidmain(){floatr=5.3,s,p;

s=PI*r*r;

p=2*PI*r; printf("area=%f\n",s); printf("circumference=%f\n",p);}2023/2/372《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)實(shí)型變量的存儲(chǔ)形式

一個(gè)實(shí)型變量在內(nèi)存中是按浮點(diǎn)數(shù)指數(shù)形式存放的。系統(tǒng)把一個(gè)實(shí)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。不少C編譯系統(tǒng)以24位表示小數(shù)部分(包括符號(hào)),以8位表示指數(shù)部分(包括指數(shù)的符號(hào))。小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字就越多,精度愈高。指數(shù)部分占的位數(shù)越多,則能表示的數(shù)值范圍就越大。+.3141592+.314159*102符號(hào)小數(shù)部分指數(shù)31.4159

如實(shí)數(shù):31.4159的指數(shù)形式為:.314159*102

,它在內(nèi)存中的存放形式可以表示為右圖所示。圖中用十進(jìn)制表示的,實(shí)際上在計(jì)算機(jī)中是用二進(jìn)制來(lái)表示小數(shù)部分,用2的冪次來(lái)表示指數(shù)部分。1000xx….xx階符階碼數(shù)符尾數(shù)2023/2/373《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)課堂練習(xí)已知球的半徑R=5,求球的表面積(公式是S=4πR2)。2023/2/374《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)實(shí)型變量的溢出例:voidmain(){floata,b;a=123456.789e5;b=a+20.0f;printf(“a=%f\nb=%f\n”,a,b);}運(yùn)行結(jié)果:

a=12345678848.000000b=12345678848.000000輸出結(jié)果是a與b相等。雖然理論上b應(yīng)比a大20,應(yīng)為12345678920。而實(shí)型變量只能保證7位有效數(shù)字,后面的數(shù)字是無(wú)意義的,并不準(zhǔn)確地表示該數(shù)。因此應(yīng)該避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)。同樣,計(jì)算1.0/3.0*3.0的結(jié)果并不等于1。由于實(shí)型變量是用有限的存儲(chǔ)單元存儲(chǔ)的,因此能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去,由此可能會(huì)產(chǎn)生一些誤差。2023/2/375《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)實(shí)型數(shù)據(jù)的有效數(shù)字#include<stdio.h>voidmain(){

floata;

doubleb; a=123456.789e4; b=123456.789e4;

printf("%f\n%f\n",a,b);}1234567936.0000001234567890.000000

2023/2/376《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-5】實(shí)型量精度示例。源代碼如下:/*LI2_5.C*/#include<stdio.h>voidmain(){floata;/*定義單精度實(shí)型變量*/doubleb;/*定義雙精度實(shí)型變量*/a=33333.33333333333333;/*對(duì)變量a賦值*/b=33333.33333333333333;/*對(duì)變量b賦值*/printf("a=%f\nb=%f\n",a,b);/*輸出變量a、b的值*/}程序的運(yùn)行結(jié)果如下:a=33333.332031b=33333.3333332023/2/377《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)字符型數(shù)據(jù)變量字符型變量字符變量存放字符ASCII碼值,占一個(gè)字節(jié)char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算例:chara;intx,s;a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/printf(“%d\n”,sizeof(char));/*結(jié)果為1*/printf(“%d\n”,sizeof(a));/*結(jié)果為1*/printf(“%d\n”,sizeof(x));/*結(jié)果為2*/沒(méi)有字符串變量,用字符數(shù)組存放2023/2/378《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)例2-6字符型變量用整型量賦值及輸出/*LI2_6.c*/#include<stdio.h>intmain(){chara,b;a=120;

/*對(duì)字符變量賦以整型值*/b=121;printf("%c,%c\n",a,b);/*把字符變量按字符型量輸出*/printf("%d,%d\n",a,b);/*把字符變量按整型量輸出*/return0;}2023/2/379《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-7】打印由ASCII碼表里的桃心字符組成的空心正方形。其源代碼如下:/*LI2_7.C*/#include<stdio.h>intmain(){charc;c=3;printf("%2c%2c%2c%2c\n",c,c,c,c);printf("%2c%6c\n",c,c);printf("%2c%6c\n",c,c);printf("%2c%2c%2c%2c\n",c,c,c,c);

return0;}2023/2/380《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-8】枚舉型變量示例。源代碼如下:/*LI2_8.C*/#include<stdio.h>intmain(){enumdayOfWeek{Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};/*定義一個(gè)枚舉類型*/enumdayOfWeekdayNum;/*定義枚舉變量dayNum*/inti;dayNum=Fri;

/*給枚舉變量賦值*/printf("Wedis%ddayOfWeek\n",Wed);

printf("Friis%ddayOfWeek\n",dayNum);/*輸出枚舉變量的值*/i=0;i=dayNum+1;/*混合運(yùn)算*/printf("iis%d\n",i); return0;}

2023/2/381《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-10】已知圓錐的體積公式V=πR2h/3,其中R=4.56,h=7.89。求圓錐的體積。源代碼如下:/*LI2_10.C*/#include<stdio.h>intmain(){floatr=4.56,h=7.89,v;v=3.14159*r*r*h/3; printf("V=%f\n",v); return0;}2023/2/382《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【說(shuō)明】πR2h/3還可以表示為:1.0/3*3.14159*r*r*h或者(float)1/3*3.14159*r*r*h,后者(float)表示強(qiáng)制類型轉(zhuǎn)換。2023/2/383《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)大小寫字母轉(zhuǎn)換問(wèn)題提出問(wèn)題:【例2-11】將小寫字母換成大寫字母,然后分別以整型和字符型輸出。2023/2/384《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)分析問(wèn)題-char型與int型之間的關(guān)系在例2-6中聲明a、b為字符型,但在賦值語(yǔ)句中賦以整型值。從結(jié)果看,a、b值的輸出形式取決于printf函數(shù)格式控制字符串中的格式字符,當(dāng)格式字符為“c”時(shí),對(duì)應(yīng)輸出的變量值為字符,當(dāng)格式字符為“d”時(shí),對(duì)應(yīng)輸出的變量值為十進(jìn)制整數(shù)。因此,char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算。2023/2/385《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)解決問(wèn)題例2-11:小寫字母轉(zhuǎn)換為大寫字母

/*LI2_11.c*/#include<stdio.h>intmain(){chara,b;a='x';b='y';a=a-32;/*char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算*/b=b-32;printf("%c,%c\n%d,%d\n",a,b,a,b);return0;}2023/2/386《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換分:自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換)強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)不同類型的數(shù)據(jù)混合運(yùn)算時(shí),首先要自動(dòng)轉(zhuǎn)換成同一類型,再計(jì)算,這種轉(zhuǎn)換稱為自動(dòng)類型轉(zhuǎn)換,也稱隱式轉(zhuǎn)換。2023/2/387《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)自動(dòng)類型轉(zhuǎn)換同種數(shù)據(jù)類型的運(yùn)算結(jié)果,還是該類型不同種數(shù)據(jù)類型的運(yùn)算結(jié)果,是兩種類型中取值范圍更大的那種longdouble>double>float>long>int>short>char2023/2/388《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)自動(dòng)類型轉(zhuǎn)換規(guī)則doublefloatlongunsignedintchar,short低高說(shuō)明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換2023/2/389《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)自動(dòng)類型轉(zhuǎn)換在進(jìn)行賦值操作時(shí),會(huì)發(fā)生類型轉(zhuǎn)換將取值范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內(nèi),則平安無(wú)事但是,浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù),會(huì)丟失小數(shù)部分,非四舍五入反之,轉(zhuǎn)換后的結(jié)果必然是錯(cuò)誤的,具體結(jié)果與機(jī)器和實(shí)現(xiàn)方式有關(guān)。避免如此使用,好的編譯器會(huì)發(fā)出警告2023/2/390《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)自動(dòng)類型轉(zhuǎn)換例子例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例inti;floatf;doubled;longl;2023/2/391《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-12】混合運(yùn)算示例。源代碼如下:/*LI2_12.C*/#include<stdio.h>intmain(){ doublex,y; floata,b,c,d; x=5.67;y=6.789;

a=7.89f;b=8.9f; printf("sizeofx=%d,sizeofa=%d\n",sizeof(x),sizeof(a)); c=x+a;d=y+b;/*混合運(yùn)算*/ printf("c=x+a=%f,d=y+b=%f\n",c,d); printf("sizeofx+a=%d,sizeofc=%d\n",sizeof(x+a),sizeof(c)); printf("sizeofx=%d,sizeofa=%d\n",sizeof(x),sizeof(a)); return0;}2023/2/392《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-13】賦值表達(dá)式中數(shù)據(jù)類型轉(zhuǎn)換示例。源代碼如下:/*LI2_13.C*/#include<stdio.h>intmain(){inta,b=322;floatx,y=8.88;charc1='k',c2;a=y;/*單精度型轉(zhuǎn)整型*/printf("%d\n",a);x=b;/*整型轉(zhuǎn)單精度型*/a=c1;/*字符型轉(zhuǎn)整型*/c2=b;/*整型轉(zhuǎn)字符型*/printf("%d,%f,%d,%c\n",a,x,a,c2); return0;}2023/2/393《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)強(qiáng)制類型轉(zhuǎn)換(Casting)類型轉(zhuǎn)換運(yùn)算符:(類型)消除從大到小的警告l=(long)i;可以通過(guò)“(類型)表達(dá)式”的方式把表達(dá)式的值轉(zhuǎn)為任意類型強(qiáng)轉(zhuǎn)時(shí),你必須知道你在做什么強(qiáng)轉(zhuǎn)與指針,并稱C語(yǔ)言兩大神器,用好了可以呼風(fēng)喚雨,用壞了就損兵折將2023/2/394《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)數(shù)據(jù)強(qiáng)制轉(zhuǎn)換舉例#include<stdio.h>voidmain(){

intm=5;printf("m/2=%d\n",m/2);printf("(float)(m/2)=%f\n",(float)(m/2));printf("(float)m/2=%f\n",(float)m/2);printf("m=%d\n",m);}m/2=2(float)(m/2)=2.000000(float)m/2=2.500000m=5精度損失問(wèn)題較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生2023/2/395《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-14】將一個(gè)華氏溫度(F),轉(zhuǎn)換為攝氏溫度輸出。公式為c=5/9(F-32)。源代碼如下:/*LI2_14.C*/#include<stdio.h>intmain(){ floaths=100,ss

;ss=(float)5/9*(hs-32);printf("%f\n",ss); return0;}2023/2/396《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)【例2-15】枚舉型的強(qiáng)制類型轉(zhuǎn)換示例。枚舉常量(枚舉元素)不能直接賦予整數(shù),但可以先將整數(shù)轉(zhuǎn)換為枚舉型,然后再賦給枚舉元素。源代碼如下:/*LI2_15.C*/#include<stdio.h>intmain(){enumegg{a,b,c};enumeggtest;test=c;/*對(duì)枚舉變量賦值*/printf("枚舉變量判斷:test枚舉對(duì)應(yīng)的枚舉元素是c\n");printf(“a=%d,b=%d,test=%d\n”,a,b,test);test=(enumegg)0;/*類型轉(zhuǎn)換*/printf("枚舉變量test值改變?yōu)?%d\n",test); return0;}2023/2/397《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)提出問(wèn)題從以上例子可以看出,程序本質(zhì)上是處理數(shù)據(jù)的指令集合,對(duì)數(shù)據(jù)的運(yùn)算是程序的核心操作,而數(shù)據(jù)的運(yùn)算是通過(guò)表達(dá)式來(lái)完成的。如例2-1中的“3.14159*5.3*5.3”、例2-12中的“x+a”、例2-14中的“(float)5/9*(hs-32)”都是對(duì)數(shù)據(jù)運(yùn)算的表達(dá)式。如果要對(duì)整數(shù)按數(shù)位進(jìn)行拆分,要用到哪些運(yùn)算符、組成什么樣的表達(dá)式呢?2023/2/398《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)C語(yǔ)言提供了哪些運(yùn)算符?能組成哪些表達(dá)式呢?【例2-16】已知一個(gè)兩位正整數(shù),輸出這個(gè)數(shù)的十位和個(gè)位數(shù)字。【分析】對(duì)于一個(gè)兩位正整數(shù)x,它的十位數(shù)字等于x÷10的商的整數(shù)部分,可以用x/10求得,它的個(gè)位數(shù)字等于x÷10的余數(shù)部分,可以用x%10求得。其源代碼如下:/*LI2_16.C*/#include<stdio.h>intmain(){ intx=68,s,g; s=x/10; g=x%10; printf("%d的十位數(shù)字是%d,個(gè)位數(shù)字是%d\n",x,s,g); return0;}2023/2/399《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)運(yùn)算符與表達(dá)式C運(yùn)算符算術(shù)運(yùn)算符:(+-*/%++--)關(guān)系運(yùn)算符:(<<===>>=!=)邏輯運(yùn)算符:((!&&||)位運(yùn)算符:(<<>>~|^&)賦值運(yùn)算符:(=及其擴(kuò)展)條件運(yùn)算符:(?:)逗號(hào)運(yùn)算符:(,)指針運(yùn)算符:(*&)求字節(jié)數(shù):(sizeof)強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:(.->)下標(biāo)運(yùn)算符:([])其它:(()-)2023/2/3100《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)學(xué)習(xí)運(yùn)算符要特別注意運(yùn)算符功能與運(yùn)算量關(guān)系要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類型運(yùn)算符優(yōu)先級(jí)別結(jié)合方向結(jié)果的類型不要拘泥于細(xì)節(jié)不要死記硬背在使用中慢慢掌握2023/2/3101《解析C程序設(shè)計(jì)(第2版)》第2章簡(jiǎn)單C程序設(shè)計(jì)基本算術(shù)運(yùn)算符基本算術(shù)運(yùn)算符:+-*/%結(jié)合方向:從左向右優(yōu)先級(jí):----->*/%----->+-(2)(3)(4) 說(shuō)明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù);有一實(shí)數(shù)相除,結(jié)果為實(shí)數(shù)%要求兩側(cè)均為整型數(shù)據(jù)例5/2=-5/2.0=例5%2=-5%2=

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論