版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章第二章本章要點(diǎn)數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則本章要點(diǎn)數(shù)據(jù)的描述規(guī)則主要內(nèi)容2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的2.2整型數(shù)據(jù)的運(yùn)算與分析2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析2.4字符型數(shù)據(jù)的運(yùn)算2.5符號(hào)常量2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.7C運(yùn)算符和C表達(dá)式2.8提高部分主要內(nèi)容2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的
2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的2.1.1數(shù)據(jù)在計(jì)算機(jī)中是以二進(jìn)制形式存儲(chǔ)的計(jì)算機(jī)內(nèi)部的信息都是用二進(jìn)制來(lái)表示的。二進(jìn)制數(shù)的特點(diǎn)是“逢二進(jìn)一”。每一位的值只有0和1兩種可能。例如:十進(jìn)制數(shù)10,用二進(jìn)制表示是1010。它的含義是:
每一個(gè)二進(jìn)位代表不同的冪,最右邊一位代表2的0次方,最右邊第二位代表2的1次方,以此類推。顯然一個(gè)很大的整數(shù)可能需要幾十個(gè)“二進(jìn)制位”來(lái)代表2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的2.1.1數(shù)據(jù)在
2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的2.1.2位、字節(jié)和地址位:又稱“比特”(bit)。每一個(gè)二極管元件稱為一個(gè)“二進(jìn)制位”,是存儲(chǔ)信息的最小單位。它的值是“1”或“0”。字節(jié):又稱“拜特”(byte)。一般將8個(gè)“二進(jìn)制位”組織成一組,稱為“字節(jié)”。地址:計(jì)算機(jī)的存儲(chǔ)器包含許多存儲(chǔ)單元,操作系統(tǒng)把所有存儲(chǔ)單元以字節(jié)為單位編號(hào)。
2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的2.1.2位、字
2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的2.1.3不同類型數(shù)據(jù)的存儲(chǔ)方式整數(shù)的存儲(chǔ)方式十進(jìn)制整數(shù)先轉(zhuǎn)換為二進(jìn)制形式。例如:整數(shù)10以二進(jìn)制形式表示是1010,直接把它存放在存儲(chǔ)單元中。
實(shí)數(shù)的存儲(chǔ)形式實(shí)數(shù)采用指數(shù)形式存儲(chǔ),例如:123.456可以寫成標(biāo)準(zhǔn)化指數(shù)形式0.123456,它包括前后兩個(gè)部分,前面部分是數(shù)值部分,后面部分是指數(shù)部分。0.123456
數(shù)值部分指數(shù)部分
說(shuō)明:標(biāo)準(zhǔn)化指數(shù)形式:其數(shù)值部分是一個(gè)小數(shù),小數(shù)點(diǎn)前的數(shù)字是零,小數(shù)點(diǎn)后的第一位數(shù)字不是零。一個(gè)實(shí)數(shù)可以有多種指數(shù)表示形式,但只有一種屬于標(biāo)準(zhǔn)化指數(shù)形式2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的2.1.3不同類
2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的3.字符的存儲(chǔ)方式字符包括字母(如A,a,X,x)、專用字符(如$,@,%,#)等。計(jì)算機(jī)并不是將該字符本身存放到存儲(chǔ)單元中(存儲(chǔ)單元只能存儲(chǔ)二進(jìn)制信息),而是將字符的代碼存儲(chǔ)到相應(yīng)的存儲(chǔ)單元中。附錄A是字符與代碼的對(duì)照表,這是國(guó)際通過(guò)的ASCII代碼.2.1數(shù)據(jù)在計(jì)算機(jī)中是怎樣存儲(chǔ)的3.字符的存儲(chǔ)2.2整型數(shù)據(jù)的運(yùn)算與分析
雞兔同籠:
在一個(gè)籠子里同時(shí)養(yǎng)著一些雞和兔子,你想了解有多少只雞和多少只兔,主人對(duì)你說(shuō):我只告訴你雞和兔的總頭數(shù)是16,總腳數(shù)是40,你能不能自己計(jì)算有多少只雞和多少只兔?設(shè):x--雞數(shù)量y--兔數(shù)量,h--總頭數(shù)f--總腳數(shù)有方程式:例題2.1解題思路x+y=h(1)2x+4y=f(2)求x和y的公式:
(2)式-2*(1)式:2y=f–2h
y=2.2.1整型數(shù)據(jù)運(yùn)算程序舉例和分析2.2整型數(shù)據(jù)的運(yùn)算與分析雞兔同籠:在一個(gè)
2.2整型數(shù)據(jù)的運(yùn)算與分析#include<stdio.h>voidmain(){inth,f,x,y;/*定義整型變量h,f,x,y*/h=16;/*對(duì)整型變量h賦值,使h的值等于16*/f=40;/*對(duì)整型變量f賦值,使h的值等于40*/
y=(f-2*h)/2;/*對(duì)表達(dá)式(f-2*h)/2進(jìn)行運(yùn)算,把結(jié)果賦給y*/x=h-y;/*對(duì)表達(dá)式h-y進(jìn)行運(yùn)算,把結(jié)果賦給x*/printf("%d%d\n",x,y);/*輸出雞的個(gè)數(shù)和兔的個(gè)數(shù)*/}編寫程序說(shuō)明:1、運(yùn)行時(shí)顯示:124??2、程序改進(jìn):printf("%d,%d\n",x,y);3、再改進(jìn):printf("cock=%d,rabbit=%d\n",x,y);2.2整型數(shù)據(jù)的運(yùn)算與分析#include<std
2.2整型數(shù)據(jù)的運(yùn)算與分析
(1)常量在程序運(yùn)行過(guò)程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型常量100,125,-100,0,2實(shí)型常量3.14,0.125,-3.789字符型常量‘a(chǎn)’,‘b’,‘2’字符串常量“a”,“ab”,“1232”2.2.2整型常量和整型變量2.2整型數(shù)據(jù)的運(yùn)算與分析(1)常量整型常量
2.2整型數(shù)據(jù)的運(yùn)算與分析(2)變量變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來(lái)存放數(shù)據(jù),這就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址,在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。2.2整型數(shù)據(jù)的運(yùn)算與分析(2)變量(3)變量名取名規(guī)則
①C語(yǔ)言規(guī)定變量名只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。下面列出的是合法的標(biāo)識(shí)符,也是合法的變量名:sum,average,_total,class,day,month,student_name,tan,lotus_1_2_3,basic,li_ling下面是不合法的標(biāo)識(shí)符和變量名:M.d.John,y123,#33,3d64,a>b
2.2整型數(shù)據(jù)的運(yùn)算與分析
(3)變量名取名規(guī)則2.2整型數(shù)據(jù)的運(yùn)算與分析
②大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符。因此,sum和suM,class和Class是兩個(gè)不同的變量名。一般,變量名用小寫字母表示,與人們?nèi)粘A?xí)慣一致,以增加可讀性。③變量名的長(zhǎng)度不是無(wú)限的。ANSI
C標(biāo)準(zhǔn)沒(méi)有規(guī)定標(biāo)識(shí)符的長(zhǎng)度(字符個(gè)數(shù)),但各個(gè)c編譯系統(tǒng)都有自己的規(guī)定。
2.2整型數(shù)據(jù)的運(yùn)算與分析
②大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符。因此,su
④在選擇變量名和其他標(biāo)識(shí)符時(shí),應(yīng)注意做到“見(jiàn)名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識(shí)符,如count、name、day、month、total、country等,除了數(shù)值計(jì)算程序外,一般不要用代數(shù)符號(hào)(如a、b、c、x1、y1等)作變量名。⑤在同一程序的同一函數(shù)中,不同的變量不能取相同的變量名。
2.2整型數(shù)據(jù)的運(yùn)算與分析
④在選擇變量名和其他標(biāo)識(shí)符時(shí),應(yīng)注意做到“見(jiàn)名知意”,即選在C語(yǔ)言中,把用來(lái)標(biāo)示對(duì)象(包括變量、函數(shù)、數(shù)組、類型等)名字的有效字符系列稱為標(biāo)示符。標(biāo)示符的分類:(1)關(guān)鍵字ifwhile(2)預(yù)定義標(biāo)示符printfscanf(3)用戶定義標(biāo)示符amax
2.2整型數(shù)據(jù)的運(yùn)算與分析
在C語(yǔ)言中,把用來(lái)標(biāo)示對(duì)象(包括變量、函數(shù)、數(shù)組、類型等)名(4)變量必須“先定義,后使用”
①每一個(gè)變量被指定為一確定類型,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元。如指定a、b為int型,turboc編譯系統(tǒng)為a和b各分配2個(gè)字節(jié),VisualC++則分配4個(gè)字節(jié),并按整數(shù)方式存儲(chǔ)數(shù)據(jù)。
2.2整型數(shù)據(jù)的運(yùn)算與分析
(4)變量必須“先定義,后使用”2.2整型數(shù)據(jù)的運(yùn)②凡未被事先定義的,不作為變量名,這就能保證程序中變量名使用得正確。例如,如果在定義部分寫了intstudent;
而在執(zhí)行語(yǔ)句中錯(cuò)寫成stadent。如:stadent=30;在編譯時(shí)檢查出statent未經(jīng)定義,不作為變量名。因此輸出“變量stadent未經(jīng)聲明”的信息,便于用戶發(fā)現(xiàn)錯(cuò)誤,避免變量名使用時(shí)出錯(cuò)。
2.2整型數(shù)據(jù)的運(yùn)算與分析
②凡未被事先定義的,不作為變量名,這就能保證程序中變量名使用③指定每一變量屬于一個(gè)類型,這就便于在編譯時(shí),據(jù)此檢查該變量所進(jìn)行的運(yùn)算是否合法。例如,整型變量a和b,可以進(jìn)行求余運(yùn)算:a%b%是“求余”,得到a/b的余數(shù)。如果將a、b指定為實(shí)型變量,則不允許進(jìn)行“求余”運(yùn)算,在編譯時(shí)會(huì)給出有關(guān)“出錯(cuò)信息”。
2.2整型數(shù)據(jù)的運(yùn)算與分析
③指定每一變量屬于一個(gè)類型,這就便于在編譯時(shí),據(jù)此檢查該變量
2.2整型數(shù)據(jù)的運(yùn)算與分析2.整型常量的表示形式
整型常量即整常數(shù)。在C語(yǔ)言中,整常數(shù)可用以下三種形式表示:十進(jìn)制整數(shù):123,-456。八進(jìn)制整數(shù):以0開(kāi)頭的數(shù)是八進(jìn)制數(shù)(不是o)
如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。十六進(jìn)制整數(shù):以0x開(kāi)頭的數(shù)是16進(jìn)制數(shù)。
如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)
291。-0x12等于十進(jìn)制數(shù)10。
2.2整型數(shù)據(jù)的運(yùn)算與分析2.整型常量的表示形式
2.2整型數(shù)據(jù)的運(yùn)算與分析3.整型變量的種類整型變量的基本類型符為int??梢愿鶕?jù)數(shù)值的范圍將變量定義為基本整型、短整型或長(zhǎng)整型。在int之前可以根據(jù)需要分別加上修飾符(modifier):short(短型)或long(長(zhǎng)型)。因此有以下三種整型變量:(1)基本整型,以int表示。(2)短整型,以shortint表示,或以short表示。(3)長(zhǎng)整型,以longint表示,或以long表示。2.2整型數(shù)據(jù)的運(yùn)算與分析3.整型變量的種類
2.2整型數(shù)據(jù)的運(yùn)算與分析在實(shí)際應(yīng)用中,變量的值常常是正的(如學(xué)號(hào)、庫(kù)存量、年齡、存款額等)。為了充分利用變量的表數(shù)范圍,此時(shí)可以將變量定義為“無(wú)符號(hào)”類型。對(duì)以上三種都可以加上修飾符unsigned,以指定是“無(wú)符號(hào)數(shù)”。如果加上修飾符signed,則指定是“有符號(hào)數(shù)”。如果既不指定為signed,也不指定為unsigned,則隱含為有符號(hào)(signed)。實(shí)際上signed是完全可以不寫的。2.2整型數(shù)據(jù)的運(yùn)算與分析在實(shí)際應(yīng)用中,變量的值常常
2.2整型數(shù)據(jù)的運(yùn)算與分析歸納起來(lái),可以用以下6種整型變量(書P44)。即:有符號(hào)基本整型[signed]int無(wú)符號(hào)基本整型unsignedint有符號(hào)短整型[signed]short[int]無(wú)符號(hào)短整型unsignedshort[int]有符號(hào)長(zhǎng)整型[signed]long[int]無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]2.2整型數(shù)據(jù)的運(yùn)算與分析歸納起來(lái),可以用以下6種整
2.2整型數(shù)據(jù)的運(yùn)算與分析注意:十進(jìn)制數(shù)10的二進(jìn)制形式為1010,TurboC2.0和TurboC++3.0為一個(gè)整型變量在內(nèi)存中分配2個(gè)字節(jié)的存儲(chǔ)單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個(gè)字節(jié))。數(shù)值是以補(bǔ)碼(complement)表示的。
2.2整型數(shù)據(jù)的運(yùn)算與分析注意:隨堂作業(yè):已知intx=10,y=12;編程將x和y的值互相交換。隨堂作業(yè):
2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析2.3.1實(shí)型數(shù)據(jù)的運(yùn)算舉例例題2.2分期付款的計(jì)算。張先生為購(gòu)房,向銀行貸款,貸款額為324500元,每月準(zhǔn)備還3245元,月利率為0.8%,求需要多少個(gè)月才能還清。解題思路m=(log10(p)-log10(p-d*r))/log10(1+r);d—貸款額,p—每月還款數(shù),r—月利率,m—還清貸款所需月數(shù)。d=324500元,p=3245元,r=0.8%。2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析2.3.1實(shí)型數(shù)據(jù)的運(yùn)算舉
2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析#include<stdio.h>/*用輸入輸出函數(shù)時(shí)必須用“stdio.h”頭文件*/#include<math.h>/*用數(shù)學(xué)函數(shù)時(shí)必須用“math.h”頭文件*/voidmain(){intd,p;/*定義d和p為整型變量*/floatr,m;/*定義r和m為實(shí)型變量*/d=324500;/*給整型變量d賦值*/p=3245;/*給整型變量p賦值*/r=0.008;/*給實(shí)型變量r賦值*/m=(log10(p)-log10(p-d*r))/log10(1+r);/*通過(guò)公式求m的值*/printf("month=%f\n",m);/*輸出m的值*/printf("total=%f\n",m*p);/*計(jì)算并輸出總的還款數(shù)*/}編寫程序說(shuō)明:
(1)
#include
是“包含頭文件”的命令,調(diào)用系統(tǒng)提供的庫(kù)函數(shù),見(jiàn)附錄E。(2)C編譯系統(tǒng)把所有實(shí)(float)型常量(如0.008)和log10函數(shù)的值都作為雙精度數(shù)據(jù)來(lái)處理,在把它們賦給float型變量時(shí)可能會(huì)喪失一些精度,在編譯時(shí)出現(xiàn)“警告”,不屬于致命性錯(cuò)誤,可以將r和m改定義為double型(3)可以在定義變量時(shí)同時(shí)賦初值intd=32450,p=3250,doubler=0.008
(4)運(yùn)行結(jié)果:month=201.983404,total=655436.1279302.3實(shí)型數(shù)據(jù)的運(yùn)算與分析#include<std
2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析2.3.2實(shí)型常量的表示形式兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e
2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析2.3.2實(shí)型常量的表示2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析規(guī)范化的指數(shù)形式:
在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e2稱為“規(guī)范化的指數(shù)形式”。2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析規(guī)范化的指數(shù)形式:類型位數(shù)數(shù)的范圍有效數(shù)字float3210-37~10386~7位double型6410-307~1030815~16位longdouble12810-4931~10493218~19位2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析2.3.3實(shí)型變量(1)實(shí)型變量的分類浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(longdouble)三類形式。類型位數(shù)數(shù)的范圍2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析(2)實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式
一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用標(biāo)準(zhǔn)化的指數(shù)形式。2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析(2)實(shí)型數(shù)據(jù)在內(nèi)存中的存例2.3實(shí)型數(shù)據(jù)的舍入誤差
#include<stdio.h>
voidmain()
{floatp;
p=3.141592612;
printf(“%f\n”,p);
}
說(shuō)明:一個(gè)實(shí)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無(wú)意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)運(yùn)行結(jié)果:
3.141593例2.3實(shí)型數(shù)據(jù)的舍入誤差
#include<stdio.
2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析(3)把實(shí)數(shù)按雙精度數(shù)處理
C編譯系統(tǒng)將浮點(diǎn)型常量作為雙精度來(lái)處理。
例如:f=2.45678*4523.65
系統(tǒng)先把2.45678和4523.65作為雙精度數(shù)進(jìn)行相乘運(yùn)算,得到的乘也是一個(gè)雙精度數(shù)。最后取其前7位賦給浮點(diǎn)型變量f。如果在數(shù)的后面加字母f或F(如1.65f,654.87F),這樣編譯系統(tǒng)就會(huì)把它們按單精度(32位)處理。2.3實(shí)型數(shù)據(jù)的運(yùn)算與分析(3)把實(shí)數(shù)按雙精度數(shù)處
2.4字符型數(shù)據(jù)的運(yùn)算逐個(gè)輸出英文字母C,H,I,N,A。然后按反序輸出,即A,N,I,H,C??梢园?個(gè)字母分別放在5個(gè)變量中,第1次按正序輸出這5個(gè)字母,第2次按反序輸出這5個(gè)字母。C語(yǔ)言提供字符型變量,用來(lái)存放字符數(shù)據(jù)。例題2.4解題思路2.4.1字符數(shù)據(jù)運(yùn)算的簡(jiǎn)單例子2.4字符型數(shù)據(jù)的運(yùn)算逐個(gè)輸出英文字母C,H,I,2.4字符型數(shù)據(jù)的運(yùn)算#include<stdio.h>voidmain(){chara='C',b='H',c='I',d='N',e='A';/*a,b,c,d,e定義為字符變量*/printf("%c%c%c%c%c\n",a,b,c,d,e);/*順序輸出CHINA*/printf("%c%c%c%c%c\n",e,d,c,b,a);/*反序輸出CHINA*/}編寫程序說(shuō)明:1、第3行是定義字符變量a,b,c,d,e。字符要用單撇號(hào)括起來(lái)。一個(gè)字符變量放一個(gè)字母字符。2、第4,5行輸出5個(gè)字母。輸出字符所用的格式說(shuō)明為“%c”。3、運(yùn)行結(jié)果:CHINAANIHC2.4字符型數(shù)據(jù)的運(yùn)算#include<stdio
2.4字符型數(shù)據(jù)的運(yùn)算
2.4.2字符常量和字符變量字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”2.4字符型數(shù)據(jù)的運(yùn)算2.4.2字符常量和字符變
2.4字符型數(shù)據(jù)的運(yùn)算2.轉(zhuǎn)義字符有些以“\”開(kāi)頭的特殊字符稱為轉(zhuǎn)義字符\n換行\(zhòng)t橫向跳格\r回車\\反斜杠\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字2.4字符型數(shù)據(jù)的運(yùn)算2.轉(zhuǎn)義字符\n換行
2.4字符型數(shù)據(jù)的運(yùn)算3.字符變量字符型變量用來(lái)存放字符常量,注意只能放一個(gè)字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語(yǔ)句對(duì)c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。
2.4字符型數(shù)據(jù)的運(yùn)算3.字符變量
2.4字符型數(shù)據(jù)的運(yùn)算4.字符數(shù)據(jù)與整型數(shù)據(jù)在一定條件下可以通用
一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:
一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。2.4字符型數(shù)據(jù)的運(yùn)算4.字符數(shù)據(jù)與整型數(shù)據(jù)在一定條例2.5向字符變量賦以整數(shù)。
#include<stdio.h>
voidmain()
{charc1,c2;
c1=97;
c2=98;
printf(“%c%c\n”,c1,c2);
printf(“%d%d\n”,c1,c2);
}
說(shuō)明:在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ)句: c1=′a′;c2=′b′;因?yàn)椤痑’和’b’的ASCII碼為97和98運(yùn)行結(jié)果:ab9798例2.5向字符變量賦以整數(shù)。
#include<stdi例2.6大小寫字母的轉(zhuǎn)換
#include<stdio.h>
voidmain()
{charc1,c2;
c1=’a’;
c2=’b’;
c1=c1-32;
c2=c2-32;
printf(“%c%c″,c1,c2);
}說(shuō)明:程序的作用是將兩個(gè)小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。運(yùn)行結(jié)果:AB
例2.6大小寫字母的轉(zhuǎn)換
#include<stdio
2.4字符型數(shù)據(jù)的運(yùn)算2.4.3字符串常量字符串常量是一對(duì)雙撇號(hào)括起來(lái)的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個(gè)字符串,如printf(“Howdoyoudo.”);2.4字符型數(shù)據(jù)的運(yùn)算2.4.3字符串常量
2.4字符型數(shù)據(jù)的運(yùn)算‘a’是字符常量,“a”是字符串常量,二者不同。
如:假設(shè)C被指定為字符變量
:charcc=‘a(chǎn)’;c=“a”;c=“CHINA”;
結(jié)論:不能把一個(gè)字符串常量賦給一個(gè)字符變量。2.4字符型數(shù)據(jù)的運(yùn)算‘a’是字符常量,“a”是字C規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標(biāo)志。
如:如果有一個(gè)字符串常量”CHINA”,實(shí)際上在內(nèi)存中是:CHINA\0
它占內(nèi)存單元不是5個(gè)字符,而是6個(gè)字符,最后一個(gè)字符為’\0’。但在輸出時(shí)不輸出’\0’。
2.4字符型數(shù)據(jù)的運(yùn)算C規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符如:如果有一2.5符號(hào)常量
2.5.1為什么要用符號(hào)常量
例題2.7已知圓的半徑為r,求圓周長(zhǎng)c,圓面積s,圓球體積v。解題思路圓周長(zhǎng)圓面積園體積
有了以上公式就可以進(jìn)行計(jì)算了s=
c=2V=2.5符號(hào)常量2.5.1為什么要用符號(hào)常量2.5符號(hào)常量#include<stdio.h>voidmain(){doubler=3.67,c,s,v;c=2*3.1415926*r;s=3.1415926*r*r;v=4/3*3.1415926*r*r*r;printf("c=%f\ns=%f\nv=%f\n",c,s,v);}編寫程序說(shuō)明:運(yùn)行結(jié)果:c=23.059290s=42.313797v=155.2916332.5符號(hào)常量#include<stdio.h>編2.5符號(hào)常量說(shuō)明:(1)C語(yǔ)言規(guī)定,兩個(gè)整型數(shù)據(jù)相除結(jié)果是整型。因此,4/3的值是整數(shù)1,而沒(méi)有小數(shù)部分??梢愿挠脤?shí)數(shù),寫成4.0/3.0。程序第6行改為v=4.0/3.0*3.1415926*r*r*r;再編譯和運(yùn)行,得到正確的v值。(2)可調(diào)用pow函數(shù),求r2和r3,其函數(shù)形式是pow(r,2)、pow(r,3),函數(shù)值是double型。(3)程序中多次出現(xiàn)常數(shù)3.1415926,降低程序的可讀性??捎靡粋€(gè)符號(hào)來(lái)代表一個(gè)常量,如可以用一個(gè)符號(hào)名PI來(lái)代表圓周率3.1415926。這樣就不必在每處都重復(fù)寫3.1415926,而用PI來(lái)代表,這個(gè)PI就叫符號(hào)常量。#definePI3.1415926
2.5符號(hào)常量說(shuō)明:2.5符號(hào)常量2.5.2符號(hào)常量的性質(zhì)和使用方法#define不是C語(yǔ)句,該行的末尾沒(méi)有分號(hào)。它是一個(gè)“預(yù)編譯命令”,即在編譯之前,對(duì)程序中出現(xiàn)的所有PI都用3.1415926取代。不要把符號(hào)常量與變量混淆,符號(hào)常量只是一個(gè)符號(hào),不占存儲(chǔ)單元。它只是簡(jiǎn)單地進(jìn)行字符置換(如把字符PI置換為字符3.1415926)。不論置換的字符是否有含義都進(jìn)行置換。習(xí)慣上,符號(hào)常量名用大寫,變量名用小寫,以示區(qū)別。
使用符號(hào)常量的好處含義清楚在需要改變一個(gè)常量時(shí)能做到“一改全改”。
2.5符號(hào)常量2.5.2符號(hào)常量的性質(zhì)和使用方法#d2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.6.1算術(shù)運(yùn)算符(1)基本的算術(shù)運(yùn)算符:+(加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)*(乘法運(yùn)算符。如:3*5)/(除法運(yùn)算符。如:1/2=0,1.0/2.0=0.5,1.0/2=0.5)%(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3,-7%4=-3,7%-3=3)。2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.6.1算術(shù)運(yùn)算符
2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式(2)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,例如先乘除后加減。
C規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性)算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇保聪茸蠛笥摇?.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式(2)運(yùn)算符的優(yōu)先級(jí)與2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.6.1算術(shù)運(yùn)算符(1)基本的算術(shù)運(yùn)算符:
說(shuō)明:
(1)兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如5/3的結(jié)果值為1,舍去小數(shù)部分。但是,如果除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,則舍入的方向是不固定的。例如,-5/3在有的機(jī)器上得到結(jié)果-1,有的機(jī)器則給出結(jié)果-2。多數(shù)機(jī)器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠攏。(2)如果參加+,-,*,/運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為float型或double型,則結(jié)果是double型,因?yàn)樗袑?shí)數(shù)都按double型進(jìn)行運(yùn)算。2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.6.12.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式(3)
自增、自減運(yùn)算符
作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)
2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式(3)自增、自減運(yùn)算符2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式i++與++i的區(qū)別:
++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:如果i的取值為3,①j=++i;i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋?.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式i++與++i的區(qū)別:2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式又如:①i=3; printf(“%d”,++i); 輸出為4。若改為②printf(“%d”,i++);輸出為32.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式又如:2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式注意:
(1)自增運(yùn)算符(++),自減運(yùn)算符(--),只能用于變量,而不能用于常量或表達(dá)式,如5++或(a+b)++都是不合法的。因?yàn)?是常量,常量的值不能改變。(a+b)++也不可能實(shí)現(xiàn),假如a+b的值為5,那么自增后得到的6放在什么地方呢?無(wú)變量可供存放。
2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式注意:2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式
(2)++和--的結(jié)合方向是“自右至左”。前面已提到,算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰蠖摇?,這是大家所熟知的。如果有-i++,i的左面是負(fù)號(hào)運(yùn)算符,右面是自加運(yùn)算符。如果i的原值等于3,若按左結(jié)合性,相當(dāng)于(-i)++,而(-i)++是不合法的,因?yàn)閷?duì)表達(dá)式不能進(jìn)行自加自減運(yùn)算。負(fù)號(hào)運(yùn)算符和“++”運(yùn)算符同優(yōu)先級(jí),而結(jié)合方向?yàn)椤白杂抑磷蟆?右結(jié)合性),即它相當(dāng)于-(i++),如果有printf("%d",-i++),則先取出i的值3,輸出-i的值-3,然后i增值為4。注意-(i++)是先用i的原值3加上負(fù)號(hào)輸出-3,再對(duì)i加1,不要認(rèn)為先加完1后再加負(fù)號(hào),輸出-4,這是不對(duì)的。2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式(2)++和
2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式
C語(yǔ)言中有的運(yùn)算符為一個(gè)字符,有的運(yùn)算符由兩個(gè)字符組成,為避免誤解,最好采取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應(yīng)寫成(i++)+j的形式
2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式C語(yǔ)言中有的運(yùn)算符為一2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式
自增(減)運(yùn)算符常用于循環(huán)語(yǔ)句中使循環(huán)變量自動(dòng)加1。也用于指針變量,使指針指向下一個(gè)地址。
初學(xué)者盡量使用++i和--i這樣的形式,少使用i++和i--這樣的形式。
2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式自增(減)運(yùn)算2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式
2.6.1算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子,稱為C算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。
例如:a*b/c-1.5+′a′是一個(gè)合法的表達(dá)式2.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.6.1算術(shù)表隱式轉(zhuǎn)換什么情況下發(fā)生運(yùn)算轉(zhuǎn)換------不同類型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換------把一個(gè)值賦給與其類型不同的變量時(shí)輸出轉(zhuǎn)換------輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換------實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換運(yùn)算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型不同類型數(shù)據(jù)間的轉(zhuǎn)換不同類型數(shù)據(jù)間的轉(zhuǎn)換doublefloatlongunsignedintchar,short低高說(shuō)明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例2inti;floatf;doubled;longl;例1doublefloatlongunsignedintchar一般形式:(類型名)(表達(dá)式)例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6說(shuō)明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變
例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生精度損失問(wèn)題顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)例main()較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生精度損失問(wèn)
2.7C運(yùn)算符和C表達(dá)式2.7.1C運(yùn)算符
C的運(yùn)算符有以下幾類:(1)算術(shù)運(yùn)算符(+-*/%)(2)關(guān)系運(yùn)算符(><==>=<=!=)(3)邏輯運(yùn)算符(?。Γ|)(4)位運(yùn)算符(<<>>~|∧&)(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符(?:)(7)逗號(hào)運(yùn)算符(,)2.7C運(yùn)算符和C表達(dá)式2.7.1C運(yùn)算符
2.7C運(yùn)算符和C表達(dá)式(8)指針運(yùn)算符(*和&)(9)求字節(jié)數(shù)運(yùn)算符(sezeof)(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型)(11)分量運(yùn)算符(.->)(12)下標(biāo)運(yùn)算符([])(13)其他(如函數(shù)調(diào)用運(yùn)算符())2.7C運(yùn)算符和C表達(dá)式(8)指針運(yùn)算符(*和&)
2.7C運(yùn)算符和C表達(dá)式2.7.2C表達(dá)式C語(yǔ)言有以下幾類表達(dá)式:算術(shù)表達(dá)式。如2+6.7*3.5+sin(0.5)關(guān)系表達(dá)式。如x>0,y<z+6邏輯表達(dá)式。x>0&&y>0(表示x>0與y>0同時(shí)成立,&&是邏輯運(yùn)算符,代表“與”)賦值表達(dá)式。如a=5.6逗號(hào)表達(dá)式。如a=3,y=4,z=8用逗號(hào)連接若干個(gè)表達(dá)式,順序執(zhí)行這些表達(dá)式,整個(gè)逗號(hào)表達(dá)式的值是最后一個(gè)表達(dá)式的值(今為8)。詳見(jiàn)本章提高部分。2.7C運(yùn)算符和C表達(dá)式2.7.2C表達(dá)式2.8提高部分計(jì)算機(jī)不論對(duì)正數(shù)和負(fù)數(shù)都按“補(bǔ)碼”形式存放到存儲(chǔ)單元。對(duì)于正數(shù)來(lái)說(shuō),補(bǔ)碼就是該數(shù)的“原碼”(該數(shù)的二進(jìn)制形式)。負(fù)數(shù)的補(bǔ)碼不是它的原碼。2.8.1求補(bǔ)碼的方法2.8提高部分計(jì)算機(jī)不論對(duì)正數(shù)和負(fù)數(shù)都按“補(bǔ)碼”形式2.8提高部分求一個(gè)負(fù)數(shù)的補(bǔ)碼的方法是:取該數(shù)(不考慮數(shù)的符號(hào))的二進(jìn)制形式,它就是原碼。對(duì)該原碼逐位“取反”(逐位把0變1,把1變0),得到其“反碼”將得到的反碼加1
2.8.1求補(bǔ)碼的方法
求-10的補(bǔ)碼步驟如下:(1)-10的原碼是00001010。(2)其反碼是11110101。(3)再加1,得補(bǔ)碼11110110。
注意:負(fù)數(shù)的補(bǔ)碼形式的最高位都是1,從第1位就可以判斷該數(shù)的正負(fù)。
2.8提高部分求一個(gè)負(fù)數(shù)的補(bǔ)碼的方法是:2.8.1
2.8提高部分2.8.2整型常量的表示形式
十進(jìn)制整數(shù)。
如:123,-456.4。八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。
如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。十六進(jìn)制整數(shù)。以0x開(kāi)頭的數(shù)是16進(jìn)制數(shù)。
如:0x123,代表16進(jìn)制數(shù)123
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣東省云浮市云城區(qū)赴高校招聘事業(yè)編制教師50人備考題庫(kù)(廣州專場(chǎng))及答案詳解1套
- 2026菏澤海吉亞醫(yī)院期招聘?jìng)淇伎荚囋囶}及答案解析
- 2026中國(guó)東方航空股份有限公司江西分公司招聘勞務(wù)派遣制員工1人參考考試題庫(kù)及答案解析
- 2026山西運(yùn)城鳳英醫(yī)院招聘41人考試備考題庫(kù)及答案解析
- 2026年度駐馬店市市直機(jī)關(guān)遴選公務(wù)員8人備考題庫(kù)參考答案詳解
- 2026東風(fēng)汽車集團(tuán)股份有限公司人事共享服務(wù)中心招聘?jìng)淇碱}庫(kù)(湖北)及一套參考答案詳解
- 2026天津商業(yè)大學(xué)第一批招聘20人備考題庫(kù)(高層次人才崗位)(含答案詳解)
- 2026年景寧縣機(jī)關(guān)事業(yè)單位公開(kāi)選調(diào)25人考試參考試題及答案解析
- 2026廣東廣州市中山大學(xué)孫逸仙紀(jì)念醫(yī)院護(hù)理崗位人才招聘?jìng)淇碱}庫(kù)(第二批)完整參考答案詳解
- 2026四川成都市礦產(chǎn)機(jī)電技師學(xué)院招聘教師備考題庫(kù)及答案詳解(奪冠系列)
- 2025年公務(wù)員(省考)測(cè)試卷附答案詳解
- JJG 499-2021 精密露點(diǎn)儀檢定規(guī)程
- T-CPQS A0011-2022 二手車車況檢測(cè)及評(píng)估通則
- 吸毒的危害性后果
- 2025年湖南邵陽(yáng)經(jīng)開(kāi)貿(mào)易投資有限公司招聘12人筆試考試參考試題及答案解析
- 白內(nèi)障手術(shù)術(shù)前準(zhǔn)備和術(shù)后護(hù)理流程
- 多動(dòng)癥兒童在感統(tǒng)訓(xùn)練
- 環(huán)保生產(chǎn)應(yīng)急預(yù)案
- 殯葬禮儀服務(wù)創(chuàng)新創(chuàng)業(yè)項(xiàng)目商業(yè)計(jì)劃書
- 數(shù)據(jù)驅(qū)動(dòng)的零售商品陳列優(yōu)化方案
- 錄用通知(入職通知書)offer模板
評(píng)論
0/150
提交評(píng)論