版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基本數(shù)據(jù)類型及運(yùn)算第1頁(yè)/共198頁(yè)2023/3/262數(shù)據(jù)類型、運(yùn)算符和表達(dá)式的概念
數(shù)據(jù)類型:數(shù)據(jù)存在的組織和形式。程序中用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型。
運(yùn)算符:一些具有事先規(guī)定的運(yùn)算功能的特定的符號(hào)。這里的運(yùn)算功能可以是算術(shù)運(yùn)算(加減乘除)、邏輯運(yùn)算(與或非)或比較運(yùn)算(大于小于等于),等等。C語(yǔ)言共有34種運(yùn)算符。
表達(dá)式:按照運(yùn)算符的性質(zhì),用運(yùn)算符把數(shù)據(jù)連接起來(lái)以
達(dá)到數(shù)據(jù)運(yùn)算目的而構(gòu)成的式子。寫(xiě)表達(dá)式的最終目的是要進(jìn)行計(jì)算它求出它的值。求解表達(dá)式的過(guò)程是由計(jì)算機(jī)完成的,因此,要想得到正確的結(jié)果,就必須寫(xiě)出正確的表達(dá)式。而一個(gè)表達(dá)式中往往包含多個(gè)運(yùn)算符,所以必須熟悉每一種運(yùn)算符的性質(zhì)(優(yōu)先級(jí)別和結(jié)合性),才能寫(xiě)出有正確求解結(jié)果的表達(dá)式。第2頁(yè)/共198頁(yè)2023/3/263
常量與變量整型、浮點(diǎn)型、字符型數(shù)據(jù)變量的初始化各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算算術(shù)運(yùn)算符與算術(shù)表達(dá)式賦值運(yùn)算符與賦值表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式第二章數(shù)據(jù)類型、
運(yùn)算符與表達(dá)式第3頁(yè)/共198頁(yè)2023/3/2642.1基本數(shù)據(jù)類型第4頁(yè)/共198頁(yè)2023/3/265數(shù)據(jù)類型數(shù)據(jù)類型:數(shù)據(jù)存在的組織和形式。數(shù)據(jù)類型是數(shù)據(jù)的基本屬性描述的是數(shù)據(jù)的存儲(chǔ)格式和運(yùn)算規(guī)則.不同數(shù)據(jù)類型的數(shù)據(jù),在內(nèi)存中所需的存儲(chǔ)空間大小、存儲(chǔ)格式均有所不同,能支持的運(yùn)算以及相應(yīng)的運(yùn)算規(guī)則也會(huì)有所不同.第5頁(yè)/共198頁(yè)2023/3/266C的數(shù)據(jù)類型C的數(shù)據(jù)類型基本類型構(gòu)造類型整型單精度型雙精度型數(shù)組類型結(jié)構(gòu)體類型浮點(diǎn)型聯(lián)合類型指針類型字符型枚舉類型空類型第6頁(yè)/共198頁(yè)2023/3/267
2.1基本數(shù)據(jù)類型數(shù)據(jù)是程序處理的基本對(duì)象。根據(jù)數(shù)據(jù)的不同性質(zhì)和用途可分為不同的數(shù)據(jù)類型。不同的數(shù)據(jù)類型具有不同的存儲(chǔ)長(zhǎng)度、取值范圍、允許的操作。數(shù)據(jù)類型關(guān)鍵字長(zhǎng)度位數(shù)范圍字符型char18-128—127整型int432
-231—(231_1)浮點(diǎn)型float432
雙精度型double864+(10—10)-308308+(10—10)-3838第7頁(yè)/共198頁(yè)2023/3/268
類型修飾符:shortintlongintunsignedintunsignedchar輸出浮點(diǎn)型數(shù)有效位為67位十進(jìn)制數(shù)位輸出雙精度型數(shù)有效位為1516位十進(jìn)制數(shù)位數(shù)據(jù)分為常量和變量。第8頁(yè)/共198頁(yè)2023/3/2692.2常量與變量第9頁(yè)/共198頁(yè)2023/3/2610常量
符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量實(shí)現(xiàn)方式:使用#define
預(yù)處理命令宏定義
直接常量:1,2,3;0.1,10.0;‘a(chǎn)’,‘1’;“hello”
常變量:C++中,可以使用const
關(guān)鍵字定義常變量程序運(yùn)行期間,值不能被改變的量稱為常量使用符號(hào)常量的好處是:從標(biāo)識(shí)符名可以清楚地看出該常量的含義,做到“見(jiàn)名知意”在需要修改常量的值時(shí)可以做到“一改全改”,容易調(diào)整整型常量浮點(diǎn)型常量字符型常量字符串常量第10頁(yè)/共198頁(yè)2023/3/2611變量
C允許把值存放在變量中,每個(gè)變量都由一個(gè)變量名來(lái)標(biāo)識(shí)。程序運(yùn)行期間,值可以被改變的量稱為變量
每個(gè)變量都必須有一個(gè)變量類型。
每個(gè)變量根據(jù)它的類型不同,在內(nèi)存中占據(jù)一定數(shù)目的字節(jié)單元,該變量的值就存放在這些內(nèi)存單元中。123prod變量名
prod實(shí)際上是一個(gè)符號(hào)地址變量prod
所占據(jù)的內(nèi)存單元123是變量
prod的變量值內(nèi)存單元的地址內(nèi)存單元的內(nèi)容在對(duì)程序編譯時(shí)由系統(tǒng)給每一個(gè)變量按其類型分配內(nèi)存單元,同時(shí),系統(tǒng)內(nèi)部維護(hù)著變量名和它的內(nèi)存單元地址的對(duì)應(yīng)信息。變量就是命名的內(nèi)存單元第11頁(yè)/共198頁(yè)2023/3/2612在程序中使用一個(gè)變量之前,先要對(duì)它進(jìn)行定義:為每個(gè)變量取一個(gè)名稱(變量名),同時(shí)還要規(guī)定它的數(shù)據(jù)類型,以便編譯程序根據(jù)不同的數(shù)據(jù)類型分配內(nèi)存空間。第12頁(yè)/共198頁(yè)2023/3/2613變量的命名規(guī)定合法的C變量名:area,sum,answer,month,name,Name,Step1,step2,number_of_student,average_score,_class1C語(yǔ)言中,變量(標(biāo)識(shí)符)的命名規(guī)定:
只能由大小寫(xiě)字母、下劃線和數(shù)字組成;開(kāi)頭的第一個(gè)字符只能是大小寫(xiě)字母或下劃線;大小寫(xiě)是敏感的;不能與C的關(guān)鍵字重復(fù);名字在整個(gè)程序中必須是唯一的;名字的長(zhǎng)度不能超過(guò)系統(tǒng)的規(guī)定。非法的C變量名:3rd_entry(數(shù)字開(kāi)頭)all$done (包含非法字符$)theend (包含空格)
int (系統(tǒng)關(guān)鍵字)標(biāo)識(shí)符是用來(lái)為變量、符號(hào)常量、函數(shù)、數(shù)組、類型、文件取名字的有效字符序列即用戶為程序中各種對(duì)象取的名字。第13頁(yè)/共198頁(yè)2023/3/2614
.關(guān)鍵字預(yù)先定義的具有特定含義的標(biāo)識(shí)符。也稱為保留字,不能另作他用。如:intcharfloatdoubleunsignedstructifdowhileswitchreturngotodefineincludeundefsizeof第14頁(yè)/共198頁(yè)2023/3/2615
避免使用無(wú)意義的名字,應(yīng)盡量做到“見(jiàn)名知意”;盡量使用代表變量實(shí)際含義的英文單詞或縮寫(xiě)作標(biāo)識(shí)符名;當(dāng)名字包含多個(gè)單詞時(shí),通常使每個(gè)單詞的首字母大寫(xiě);以下劃線開(kāi)頭的名字通常是系統(tǒng)內(nèi)部保留的標(biāo)識(shí)符名;在整個(gè)程序中保持統(tǒng)一的命名方式。變量的命名習(xí)慣C語(yǔ)言中,變量(標(biāo)識(shí)符)的命名習(xí)慣:好的C變量名:CircleArea,TotalScore,UserSelection,choice,StudentNumber,AverageScore,SampleFrequency不是很好的C變量名:a,aa (不知何意)
numberofstudent
(全部小寫(xiě)難以辨認(rèn))
total
totals(名字太相似)第15頁(yè)/共198頁(yè)2023/3/2616變量的定義和使用變量定義具有三個(gè)目的:⑴定義變量名;⑵定義變量類型;⑶向程序員描述該變量。C語(yǔ)言中,變量必須“先定義,后使用”intradius;/*theradiusofcircle*/關(guān)鍵字int
告訴編譯系統(tǒng)我要定義一個(gè)整型變量,用它來(lái)保存一個(gè)整型的數(shù)值。這是變量的名字。以后的程序中就用這個(gè)名字來(lái)訪問(wèn)這個(gè)變量。注釋用來(lái)解釋這個(gè)變量,它是給程序員的信息。對(duì)程序主要的變量作注釋是很好的習(xí)慣。第16頁(yè)/共198頁(yè)2023/3/2617#include<stdio.h>intmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(“sum=%d\n”,sim);return(0);}變量的定義和使用變量“先定義,后使用”的好處是:
C只允許使用定義過(guò)的變量。凡是未被事先定義的符號(hào),不作為變量名。這樣可以檢查出程序中錯(cuò)誤使用的變量名。此處定義的變量名是sum
。此處由于輸入錯(cuò)誤或其它原因,出現(xiàn)了名字為sim
的符號(hào)。由于該符號(hào)在這之前從未定義過(guò),所以在編譯時(shí),便會(huì)出現(xiàn)錯(cuò)誤信息。Error:Undefinedsymbol'sim'第17頁(yè)/共198頁(yè)2023/3/2618#include<stdio.h>intmain(){inta,remainder;floatc;a=23;c=2.5;remainder=a%c;printf(“余數(shù)=%d\n”,remainder);return(0);}變量的定義和使用變量“先定義,后使用”的好處是:
定義變量時(shí)指明了變量的類型,這樣在對(duì)源程序進(jìn)行編譯時(shí),可以就此類型檢查該變量所參與的運(yùn)算是否合法。變量a是整型的這個(gè)表達(dá)式中的符號(hào)%是“求余”運(yùn)算符,它要求參與運(yùn)算的數(shù)據(jù)必須是整型的。此處變量a是整型,而變量c卻是浮點(diǎn)型的,所以編譯時(shí)就會(huì)出現(xiàn)錯(cuò)誤信息。Error:Illegaluseoffloatingpoint變量c是浮點(diǎn)型的第18頁(yè)/共198頁(yè)2023/3/2619變量的定義和使用intage;/*theageofstudent*/floatscore;/*thescoreofstudent*/floataverage;/*theaverageofscore*/longnumber;/*thenumberofstudent*/doubledistance;/*betweenearth&moon*/charUserSelection;/*keyuserhit*/變量定義的一般格式是:typename;/*comment*/
類型名字;
/*注釋*/系統(tǒng)將根據(jù)變量的定義為其分配相應(yīng)大小的內(nèi)存單元。第19頁(yè)/共198頁(yè)2023/3/26204.以下不能定義為用戶標(biāo)識(shí)符的是
。A)scanfB)VoidC)_3comD)int課堂練習(xí)答案:D5.以下可作為C語(yǔ)言用戶定義標(biāo)識(shí)符的是()組標(biāo)識(shí)符。A.voiddefineWORDB.a(chǎn)3_b3_123IFC.For-abcCaseD.2aDosizeof答案:B注意:這些系統(tǒng)庫(kù)函數(shù)名并非C語(yǔ)言的關(guān)鍵字。第20頁(yè)/共198頁(yè)2023/3/26212.2.1整型數(shù)據(jù)
整型常量整型變量整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式第21頁(yè)/共198頁(yè)2023/3/2622整型常量十進(jìn)制整型常量:如123,-456,0
八進(jìn)制整型常量:以數(shù)字“0”開(kāi)頭的整型常量如0123,即(0123)8
,等于(83)10
-011,即(-011)8
,等于(-9)10八進(jìn)制整型常量中不應(yīng)出現(xiàn)“7”以上的數(shù)碼。如0128,0209都是非法的八進(jìn)制整型常量。整型常量即整常數(shù)。C中有下面三種形式的整型常量:
十六進(jìn)制整型常量:以“0x”開(kāi)頭的整型常量如0xFF,即(0xFF)16
,等于(255)10
-0x11,即(-0x11)16
,等于(-17)10
十六進(jìn)制整型常量中不應(yīng)出現(xiàn)“F”以上的數(shù)碼。C語(yǔ)言中沒(méi)有二進(jìn)制整型常量,用十六進(jìn)制整型常量表示二進(jìn)制整數(shù)第22頁(yè)/共198頁(yè)2023/3/2623補(bǔ)充:各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制十進(jìn)制方法:找出二進(jìn)制數(shù)各數(shù)碼位的“權(quán)”,并按“權(quán)”相加(1010.11)2=1×23+0×22+1×21+0×20+1×2-1+1×2-2
=8+0+2+0+0.5+0.25=(10.75)10八進(jìn)制十進(jìn)制(7103)8=7×83+1×82+0×81+3×80
=(3651)10十六進(jìn)制十進(jìn)制(FF)16=15×161+15×160=(255)10第23頁(yè)/共198頁(yè)2023/3/26242562282142723210各種計(jì)數(shù)制間的轉(zhuǎn)換十進(jìn)制二進(jìn)制方法:整數(shù)采用“除2取余法”
小數(shù)采用“乘2取整法”“除2取余法”的法則是:將被轉(zhuǎn)換的十進(jìn)制整數(shù)連續(xù)用2去除,求得余數(shù)(1或0)分別為k0、k1、k2、…,直到商為0為止,則所有余數(shù)的排列kn-1kn-2…k1k0即為所轉(zhuǎn)換的二進(jìn)制整數(shù)?!鄶?shù)0=k0……余數(shù)0=k1……余數(shù)0=k2……余數(shù)1=k3……余數(shù)1=k4……余數(shù)1=k5(56)10=(111000)2
第24頁(yè)/共198頁(yè)2023/3/2625各種計(jì)數(shù)制間的轉(zhuǎn)換十進(jìn)制二進(jìn)制方法:整數(shù)采用“除2取余法”
小數(shù)采用“乘2取整法”“乘2取整法”的法則是:對(duì)被轉(zhuǎn)換的十進(jìn)制小數(shù)連續(xù)用2去乘,依次求得各整數(shù)位(1或0)分別為k-1、k-2、…、k-m
,直到乘積的小數(shù)部分為0為止,則所有整數(shù)為的排列k-1k-2…k-m即為所轉(zhuǎn)換的二進(jìn)制小數(shù)。×20.625……整數(shù)部分為1=k-1(0.625)10=(0.101)2
1.250×2……整數(shù)部分為0=k-20.500×2……整數(shù)部分為1=k-31.000實(shí)際上,最后的余數(shù)不一定為0,只要符合精度要求,取夠位數(shù)即可。第25頁(yè)/共198頁(yè)2023/3/2626各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制八進(jìn)制方法:把二進(jìn)制數(shù)從低位開(kāi)始每3位數(shù)碼編為一組,把每一組轉(zhuǎn)換為對(duì)應(yīng)的八進(jìn)制數(shù)碼(∵8=23
)21111000101011010
結(jié)果是:(1111000101011010)2=(170532)8
35071八進(jìn)制二進(jìn)制方法:把八進(jìn)制數(shù)從低位開(kāi)始每1位數(shù)碼轉(zhuǎn)換為3位的二進(jìn)制數(shù)碼(∵8=23
)010170532
結(jié)果是:(170532)8=
(1111000101011010)2011101000111001第26頁(yè)/共198頁(yè)2023/3/2627各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制十六
進(jìn)制方法:把二進(jìn)制數(shù)從低位開(kāi)始每4位數(shù)碼編為一組,把每一組轉(zhuǎn)換為對(duì)應(yīng)的十六進(jìn)制數(shù)碼(∵16=24
)2101011110000100101010010
結(jié)果是:(101011110000100101010010)2=(AF0952)16
590FA十六
進(jìn)制二進(jìn)制方法:把十六進(jìn)制數(shù)從低位開(kāi)始每1位數(shù)碼轉(zhuǎn)換為4位的二進(jìn)制數(shù)碼。(∵16=24
)0010AF0952
結(jié)果是:(AF0952)16=
(101011110000100101010010)201011001000011111010第27頁(yè)/共198頁(yè)2023/3/2628長(zhǎng)整型:-56l;3567L;04L無(wú)符號(hào)整型:586u;077765U;0xfffdU無(wú)符號(hào)長(zhǎng)整型:0375ul;0x45feUL整型常量的類型第28頁(yè)/共198頁(yè)2023/3/2629課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是不合法的整型常量的選項(xiàng)是
(A)–0f1-0xffff0011
(B)–0Xcdf01712,456
(C)–0189995e2答案:(D)答案:(A)
(D)–0x48eg-06803f◆下面四個(gè)選項(xiàng)中,均是合法的整型常量的選項(xiàng)是
(A)160-0xffff011
(B)–0Xcdf01a0xe
(C)–01986,0120668
(D)–0x48a2e50x第29頁(yè)/共198頁(yè)2023/3/2630整型變量的分類注:有符號(hào)整型變量中,關(guān)鍵字signed可以省略。(有符號(hào)與無(wú)符號(hào)不同的取值范圍詳見(jiàn)教材P23頁(yè))類型關(guān)鍵字占字節(jié)數(shù)目
(VisualC++)有符號(hào)signed基本整型signedint4字節(jié)短整型signedshortint
(signedshort)2字節(jié)長(zhǎng)整型signedlongint
(signedlong)4字節(jié)無(wú)符號(hào)unsigned基本整型unsignedint4字節(jié)短整型unsignedshortint
(unsignedshort)2字節(jié)長(zhǎng)整型unsignedlongint
(unsignedlong)4字節(jié)第30頁(yè)/共198頁(yè)2023/3/2631整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式數(shù)據(jù)在內(nèi)存中是以“二進(jìn)制數(shù)”的形式存放的。數(shù)據(jù)在內(nèi)存中是以“二進(jìn)制數(shù)的補(bǔ)碼”形式存放的。例如:inta=10;
那么內(nèi)存中實(shí)際存放的是10的補(bǔ)碼a100000000000001010如果是:inta=-10;
那么內(nèi)存中實(shí)際存放的是-10的補(bǔ)碼-10的原碼是:最高位不動(dòng),其余各位取反:a-101111111111110110100000000000101011111111111101011111111111110110整個(gè)數(shù)加上1:求-10補(bǔ)碼的方法:第31頁(yè)/共198頁(yè)2023/3/2632計(jì)算機(jī)中數(shù)的表示
一個(gè)數(shù)據(jù)總要占據(jù)一定數(shù)目的字節(jié)單元(整數(shù)個(gè)、有限個(gè))不同類型的數(shù)據(jù)占據(jù)不同數(shù)目的字節(jié)單元(比如,PC機(jī)DOS環(huán)境下一個(gè)整數(shù)占2個(gè)字節(jié),一個(gè)實(shí)數(shù)占4個(gè)字節(jié))所有數(shù)據(jù)都是以二進(jìn)制數(shù)的形式表示的數(shù)據(jù)有正有負(fù)。計(jì)算機(jī)中表示一個(gè)數(shù)據(jù)時(shí),總是用它所占字節(jié)單元的所有位中最高位表示數(shù)的符號(hào):0表示正,1表示負(fù)。Ns1010101符號(hào)位最高位:第7位最低位:第0位1個(gè)字節(jié)符號(hào)位最高位:第15位最低位:第0位2個(gè)字節(jié)Ns101010101010101第32頁(yè)/共198頁(yè)2023/3/2633
對(duì)于有符號(hào)變量:把最高位作為符號(hào)位保存數(shù)據(jù)的符號(hào)(0為正,1為負(fù)),其余位保存具體數(shù)值,因此可以用于正確保存限值范圍內(nèi)的正數(shù)或負(fù)數(shù)。有符號(hào)和無(wú)符號(hào)的區(qū)別◆
有符號(hào)和無(wú)符號(hào)的區(qū)別是什么?關(guān)鍵在于“最高位”的性質(zhì)。如果有:inta;
那么a的有效數(shù)值范圍為-32768~32767有符號(hào)整型變量a=32767:0111111111111111如果有:unsignedintb;
那么b的有效數(shù)值范圍為0~65535最高位代表符號(hào)
對(duì)于無(wú)符號(hào)變量:最高位不作為符號(hào)位,全部的位都用來(lái)保存數(shù)據(jù)的數(shù)值,因此可以用于正確保存限值范圍內(nèi)的正數(shù)。無(wú)符號(hào)整型變量b=65535:1111111111111111最高位代表數(shù)值第33頁(yè)/共198頁(yè)2023/3/2634整型數(shù)據(jù)的表示范圍
由于每一種整型數(shù)據(jù)占有的字節(jié)單元數(shù)目都是有限的,所以每一種整型數(shù)據(jù)可表示的數(shù)的范圍也是有限的。
由于不同類型的整型數(shù)據(jù)占有的字節(jié)單元數(shù)目是不同的,所以不同類型的整型數(shù)據(jù)可表示的數(shù)的范圍也是不同的。ANSIC標(biāo)準(zhǔn)定義的整型類型類型Bit數(shù)有效表示范圍[signed]int16-32768~+32767unsignedint160~+65535[signed]short[int]16-32768~+32767unsignedshort[int]160~+65535[signed]long[int]32-2147483648
~+2147483647unsignedlong[int]320~+4294967295第34頁(yè)/共198頁(yè)2023/3/2635整型變量的定義變量的定義一般放在函數(shù)體的開(kāi)頭部分。定義方法:類型符變量名列表;(用逗號(hào)分隔)如:intnum;unsignedintage,score;longdistant,SampleTimes;第35頁(yè)/共198頁(yè)2023/3/2636#include<stdio.h>intmain(){intmax,over;max=32767;over=max+1;printf(“max=%d,over=%d”,max,over);return(0);}整型變量的溢出◆由于每一種整型數(shù)據(jù)可表示的數(shù)的范圍都是有限的,所以在使用整型變量時(shí)要特別注意“數(shù)據(jù)溢出”的問(wèn)題?!鬷nt型的有效表示范圍是-32768~+32767
。max是:0111111111111111max+1→over是:100000000000000032767-32768數(shù)據(jù)溢出了!將變量over定義成long型就能得到正確的結(jié)果。第36頁(yè)/共198頁(yè)2023/3/2637作業(yè)1:將下列各數(shù)用八進(jìn)制和十六進(jìn)制表示:(1)—617(2)—111(3)—28654(4)21003第37頁(yè)/共198頁(yè)2023/3/26382.2.2浮點(diǎn)型數(shù)據(jù)
浮點(diǎn)型常量浮點(diǎn)型變量浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式第38頁(yè)/共198頁(yè)2023/3/2639浮點(diǎn)型常量
十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成。(小數(shù)點(diǎn)必須有,且小數(shù)點(diǎn)的前面或后面必須有數(shù)字)如10.23,-0.456,78.0,0.0,89.
指數(shù)形式:±sE±n
或±se±n
形式。注意:E或e前面必須有數(shù)字,后面的指數(shù)必須為整數(shù)。如218.3=218.3E0=2183E-1=0.02183E+4浮點(diǎn)數(shù)又叫“實(shí)數(shù)”。浮點(diǎn)數(shù)常量有兩種表示形式:指數(shù)形式的浮點(diǎn)型常量,有“規(guī)范化指數(shù)形式”,即在字母E或e之前的小數(shù)部分中,小數(shù)點(diǎn)左邊必須有且只有一位非零的數(shù)字。如218.3=2.183E+2;
0.002183=2.183E-3程序以指數(shù)形式輸出實(shí)數(shù),就是以“規(guī)范化指數(shù)形式”輸出第39頁(yè)/共198頁(yè)2023/3/2640課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是不合法的浮點(diǎn)數(shù)的選項(xiàng)是
(A)160.0.12e3
(B)1232e4.2.e5
?-.18123e40.0答案:B)答案:(B)
(D)–e3.2341e3◆下面四個(gè)選項(xiàng)中,均是合法的浮點(diǎn)數(shù)的選項(xiàng)是
(A)+1e+15e-9.403e2
(B)–.6012e-4-8e5
(C)123e1.2e-.4+2e-1
(D)–e3.8e-45.e-0第40頁(yè)/共198頁(yè)2023/3/2641浮點(diǎn)數(shù)在計(jì)算機(jī)中,既有整數(shù)部分又有小數(shù)部分的數(shù)稱為浮點(diǎn)數(shù)P=±S×2±N可見(jiàn),浮點(diǎn)數(shù)表示中的各部分又都是定點(diǎn)數(shù)。在一個(gè)浮點(diǎn)數(shù)所占字節(jié)單元中,一部分位用來(lái)保存階碼,一部分位用來(lái)保存尾數(shù)。P的尾數(shù)
(定點(diǎn)小數(shù))P的階碼
(定點(diǎn)整數(shù))尾數(shù)符號(hào)階碼符號(hào)例如:浮點(diǎn)數(shù)N=210×0.0101在計(jì)算機(jī)中表示為(假設(shè)占2字節(jié))0001000101000000階碼符號(hào)階碼數(shù)值尾數(shù)符號(hào)尾數(shù)數(shù)值階碼部分:占5位尾數(shù)部分:占11位第41頁(yè)/共198頁(yè)2023/3/2642浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式浮點(diǎn)型數(shù)據(jù)在內(nèi)存中是以“尾數(shù)”和“階碼”的形式存放的。在一個(gè)浮點(diǎn)型數(shù)據(jù)(浮點(diǎn)數(shù))所占字節(jié)單元中,一部分位用來(lái)保存階碼,一部分位用來(lái)保存尾數(shù)。±尾數(shù)部分±階碼部分不同的編譯系統(tǒng)位數(shù)分配不同??傊矓?shù)部分位數(shù)越多,可以表示的數(shù)的有效數(shù)字位數(shù)就越多,精度就越高;階碼部分位數(shù)越多,可以表示的數(shù)的范圍就越大。+.745623+1例:float7.456230.745623×101第42頁(yè)/共198頁(yè)2023/3/2643浮點(diǎn)型變量的分類類型單精度雙精度長(zhǎng)雙精度關(guān)鍵字floatdoublelongdouble字節(jié)數(shù)
VisualC4字節(jié)8字節(jié)16字節(jié)有效數(shù)字位數(shù)6~7位15~16位18~19位數(shù)值范圍10-37~103810-307~1030810-4931~104932
由于不同的浮點(diǎn)型數(shù)據(jù)是用不同數(shù)目的有限字節(jié)單元保存的,所以它們能表示的數(shù)值范圍是不同的,能保留的有效數(shù)字位數(shù)也是不同而且是有限的。第43頁(yè)/共198頁(yè)2023/3/2644浮點(diǎn)型變量的定義變量的定義一般放在函數(shù)體的開(kāi)頭部分。定義方法:類型符變量名列表;(用逗號(hào)分隔)如:floatSinValue,CosValue;doublearea,result;注:C語(yǔ)言中的所有關(guān)鍵字都是小寫(xiě)的。第44頁(yè)/共198頁(yè)2023/3/26452.2.3字符型數(shù)據(jù)
字符常量字符變量字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式第45頁(yè)/共198頁(yè)2023/3/2646字符型常量比如:‘a(chǎn)’,‘A’,‘d’,‘D’,‘?’,‘%’,‘$’,‘2’,‘4’注意:‘a(chǎn)’和‘A’,‘d’和‘D’都是不同的字符常量。
C的字符常量是用單引號(hào)(‘)括起來(lái)的一個(gè)字符。另外:C語(yǔ)言還存在另一種形式的特殊的字符常量。它是用單引號(hào)括起來(lái)的以一個(gè)“\”字符開(kāi)頭的規(guī)定的字符序列。“\”字符叫反斜杠字符。這種特殊的字符常量稱為“轉(zhuǎn)義字符”。第46頁(yè)/共198頁(yè)2023/3/2647轉(zhuǎn)義字符常量及其含義轉(zhuǎn)義字符含義ASCII
代碼控制字符\n回車換行(光標(biāo)移到下一行第一列)10\t水平制表(光標(biāo)移到下一個(gè)Tab位置)9\b退格(光標(biāo)移回到同一行前一列)8\r回車(光標(biāo)移到同一行第一列)13\f換頁(yè)(光標(biāo)移到下一頁(yè)開(kāi)頭)12特殊標(biāo)點(diǎn)符號(hào)\\反斜杠字符“\”92\‘單引號(hào)(撇號(hào))字符‘39\“雙引號(hào)字符“34所有字符\ddd1到3位8進(jìn)制數(shù)所代表的字符\xhh1到2位16進(jìn)制數(shù)所代表的字符
注意:表示字符的轉(zhuǎn)義16進(jìn)制數(shù)與十六進(jìn)制整型常量寫(xiě)法不同\x0x第47頁(yè)/共198頁(yè)2023/3/2648課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是合法的轉(zhuǎn)義字符的選項(xiàng)是
(A)’\’’‘\\’‘\n’
(B)’\’‘\017’‘\’’’
?‘\018’‘\f’‘xab’答案:A)答案:(B)
(D)’\\0’‘\101’‘\xlf’◆下面四個(gè)選項(xiàng)中,均是不合法的字符選項(xiàng)是
(A)’\’’’‘\\’‘\xf’
(B)’\1011’‘\’‘\m’
?’\011’‘\f’‘\}’
(D)’\abc’‘\101’‘xlf’第48頁(yè)/共198頁(yè)2023/3/2649字符型變量字符型變量用來(lái)存儲(chǔ)字符型常量。一個(gè)字符變量只能保存一個(gè)字符。如charInputKey,UserSelection;
unsigned
charlines,grade;定義方法:類型符變量名列表;(用逗號(hào)分隔)類型關(guān)鍵字占字節(jié)數(shù)目有符號(hào)[signed]char1字節(jié)無(wú)符號(hào)unsignedchar1字節(jié)第49頁(yè)/共198頁(yè)2023/3/2650字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式每個(gè)字符型數(shù)據(jù)在內(nèi)存中只占一個(gè)字節(jié),該字節(jié)中實(shí)際保存的是該字符的ASCII代碼。ASCII
(美國(guó)信息交換標(biāo)準(zhǔn)代碼)
AmericanStandardCodeforInformationInterchangeASCII
代碼實(shí)際上是一個(gè)0~255之間的整數(shù)。每一個(gè)整數(shù)對(duì)應(yīng)著一個(gè)不同的字符,即每一個(gè)字符都有一個(gè)不同的整數(shù)代碼。對(duì)字符型數(shù)據(jù)來(lái)講,它的那一個(gè)字節(jié)中保存的就是這個(gè)整數(shù)。第50頁(yè)/共198頁(yè)2023/3/2651常用字符及對(duì)應(yīng)ASCII碼常用字符及對(duì)應(yīng)ASCII碼ASCII值字符ASCII值字符ASCII值字符ASCII值字符0NUL48065A97a10LF
換行49166B98b13CR
回車………………32空格57990Z122z第51頁(yè)/共198頁(yè)2023/3/2652可見(jiàn),字符型數(shù)據(jù)存儲(chǔ)對(duì)應(yīng)的ASCII
碼,而ASCII
碼是一個(gè)整數(shù),按整型數(shù)據(jù)的存儲(chǔ)方式存儲(chǔ),因此在C語(yǔ)言中兩者的存儲(chǔ)方式是類似的,從而在一定范圍內(nèi)可以通用,即兩種類型的數(shù)據(jù)可以相互賦值,相互輸出,也可以在一起進(jìn)行運(yùn)算。字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式A“一定范圍內(nèi)”指的是“一個(gè)字節(jié)”所能保存的整數(shù)范圍內(nèi)。有符號(hào)型整數(shù):-127~128無(wú)符號(hào)型整數(shù):0~255→0100000165這個(gè)字節(jié)存儲(chǔ)的內(nèi)容是01000001。
如果它是一個(gè)整型數(shù)據(jù),那就是整數(shù)65;
如果它是一個(gè)字符型數(shù)據(jù),那就是字符‘A’。ASCII值=65第52頁(yè)/共198頁(yè)2023/3/2653#include<stdio.h>intmain(){charc1,c2;intn1,n2;c1=‘b’;c2=97;n1=98;n2=‘a(chǎn)’;printf(“c1=%c,c2=%c\n”,c1,c2);printf(“n1=%d,n2=%d\n”,n1,n2);printf(“c1=%d,c2=%d\n”,c1,c2);printf(“n1=%c,n2=%c\n”,n1,n2);return(0);}整型數(shù)據(jù)和字符型數(shù)據(jù)通用:例1既可以把整型數(shù)據(jù)賦值給字符型變量。也可以把字符型數(shù)據(jù)賦值給整型變量。既可以把字符型數(shù)據(jù)按整數(shù)形式輸出。(%d
整型格式符)也可以把整型數(shù)據(jù)按字符形式輸出。(%c字符型格式符)第53頁(yè)/共198頁(yè)2023/3/2654#include<stdio.h>intmain(){charc1,c2,c3;c1=‘A’;c2=‘b’;c3=‘’;c1=c1+32;c2=c2–c3;printf(“c1=%c,c1=%d\n”,c1,c1);printf(“c2=%c,c2=%d\n”,c2,c2);return(0);}整型數(shù)據(jù)和字符型數(shù)據(jù)通用:例2字符數(shù)據(jù)可以和整型數(shù)據(jù)一起進(jìn)行算術(shù)運(yùn)算。字符型數(shù)據(jù)之間也可以進(jìn)行算術(shù)運(yùn)算。既可以把字符型數(shù)據(jù)按字符形式%c輸出,也可以把字符型數(shù)據(jù)按整數(shù)形式%d輸出。實(shí)際上都是整數(shù)之間的算術(shù)運(yùn)算。
運(yùn)行結(jié)果:c1=a,c1=97
c2=B,c2=66空格的ASCII碼=32第54頁(yè)/共198頁(yè)2023/3/26552.2.4字符串常量
字符串常量字符串結(jié)束標(biāo)志字符字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式第55頁(yè)/共198頁(yè)2023/3/2656字符串常量比如:“a”,“”,“Hello,world”,“9811113”,“LCS”?
C的字符串常量是用雙引號(hào)(“)括起來(lái)的若干個(gè)字符?!糇址A吭趦?nèi)存中占用連續(xù)的字節(jié)單元,每個(gè)字符按順序占一個(gè)字節(jié)。C語(yǔ)言規(guī)定:自動(dòng)在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志字符”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。一個(gè)字符串常量中包含的字符個(gè)數(shù)是不確定的。那么,系統(tǒng)在處理字符串常量時(shí)如何知道何處結(jié)束呢?第56頁(yè)/共198頁(yè)2023/3/2657字符串結(jié)束標(biāo)志字符◆‘\0’是ASCII碼為0的字符,即位于字符表中的第一個(gè)NUL字符。它是一個(gè)“空操作字符”,就是說(shuō),它既不引起任何控制動(dòng)作,也不產(chǎn)生任何顯示。C的字符串結(jié)束標(biāo)志字符是
‘\0’
?!粢虼?,C的字符串常量在內(nèi)存中占用的字節(jié)數(shù)等于可見(jiàn)字符數(shù)加上1,即結(jié)束標(biāo)志字符占用的一個(gè)字節(jié)?!癏ELLO”HELLO\0字符串結(jié)束標(biāo)志字符也是一個(gè)字符,也要占用一個(gè)字節(jié)??偣舱加?個(gè)字節(jié)5個(gè)可見(jiàn)字符第57頁(yè)/共198頁(yè)2023/3/2658‘A’和“A”的區(qū)別◆由于C語(yǔ)言對(duì)每一個(gè)字符串常量均在其末尾自動(dòng)添加一個(gè)字符串結(jié)束標(biāo)志字符‘\0’,因此:
‘A’
占一個(gè)字節(jié)單元
“A”
占兩個(gè)字節(jié)單元,包括‘A’和‘\0’兩個(gè)字符◆不能把一個(gè)字符串常量賦值給一個(gè)字符變量。如charc1=“A”;是錯(cuò)誤的。?為什么是錯(cuò)誤的。原因1:“A”
占兩個(gè)字節(jié)單元,而字符變量c1只有一個(gè)字節(jié),所以無(wú)法賦值;原因2:真正的原因。C語(yǔ)言實(shí)際上把字符串處理成字符指針,把一個(gè)指針賦值給一個(gè)字符變量當(dāng)然是錯(cuò)誤的。第58頁(yè)/共198頁(yè)2023/3/2659課堂練習(xí)◆問(wèn)題1:字符串“”占幾個(gè)字節(jié)單元?
(A)0個(gè)
(B)1個(gè)
(C)2個(gè)◆問(wèn)題2:這樣的賦值charc1=“”;是否正確?
(A)正確
(B)不正確◆問(wèn)題3:1和‘1’是否相同?為什么?◆問(wèn)題4:1+‘0’和‘1’是否相同?為什么?答案:(c)答案:(B)答案:不相同。因?yàn)榍罢呤钦麛?shù)1,它的值是1,而后者是字符‘1’,它的值是49(ASCII碼)。答案:相同。因?yàn)樽址?’的值是48,加1等于49,正好是字符‘1’的值。第59頁(yè)/共198頁(yè)2023/3/2660課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是正確的八進(jìn)制數(shù)或十六進(jìn)制數(shù)的選項(xiàng)是
(A)-100X8f-011
(B)0abc-017oxc
?0010-ox11Oxf2答案:c)答案:(D)
(D)0a12-0x123-0xa◆下面四個(gè)選項(xiàng)中,均是正確的數(shù)值常量或字符常量的選項(xiàng)是
(A)0.00f8.9e‘&’
(B)”a”3.9E-2.51e1‘\”’
?‘5’0110xff000a
(D)+0010xabcd2e250.第60頁(yè)/共198頁(yè)2023/3/26612.2.5符號(hào)常量
預(yù)處理符號(hào)變量的實(shí)現(xiàn)使用符號(hào)常量的注意事項(xiàng)第61頁(yè)/共198頁(yè)2023/3/2662預(yù)處理編譯預(yù)處理:是指在對(duì)源程序進(jìn)行正式編譯之前所作的一些處理。這些處理是由預(yù)處理命令指定的。源程序經(jīng)過(guò)預(yù)處理后,再由編譯程序進(jìn)行正式的編譯。#define預(yù)處理命令宏定義的用法:#define標(biāo)識(shí)符字符串它的作用是用指定的標(biāo)識(shí)符去代表一個(gè)字符串。在預(yù)處理時(shí),源程序中所有在該#define命令后出現(xiàn)的該標(biāo)識(shí)符全部用指定的字符串代替。預(yù)處理命令是由ANSIC規(guī)定的,但它不是C語(yǔ)言本身的組成部分,不能直接對(duì)它進(jìn)行編譯。預(yù)處理命令都是以符號(hào)“#”開(kāi)頭的。第62頁(yè)/共198頁(yè)2023/3/2663#include“stdio.h”#definePI3.14159intmain(){floatr,c,s,v;r=20;c=2*PI*r;printf(“周長(zhǎng)=%f”,c);s=PI*r*r;printf(“面積=%f”,s);v=4*PI*r*r*r/3;printf(“體積=%f”,v);return(0);}符號(hào)常量的實(shí)現(xiàn)這個(gè)字符串將要在預(yù)處理時(shí)去替換符號(hào)PI標(biāo)識(shí)符名:PI
編譯預(yù)處理時(shí),這一行以后的源程序中出現(xiàn)的PI都會(huì)被指定的字符串代替。預(yù)處理后進(jìn)行正式編譯,替換進(jìn)去的3.14159就會(huì)被理解為是一個(gè)實(shí)數(shù)。第63頁(yè)/共198頁(yè)2023/3/2664#include“stdio.h”#definePI3.14159intmain(){floatr,c,s,v;r=20;c=2*PI*r;……
PI=100;
……return(0);}使用符號(hào)常量的注意事項(xiàng)錯(cuò)誤注意1:符號(hào)常量不是變量,不能被賦值。第64頁(yè)/共198頁(yè)2023/3/2665#include“stdio.h”#definePI3.14159intmain(){floatr,c,s,v;r=20;c=2*PI*r;……printf(“PI=%f\n”,PI);……return(0);}使用符號(hào)常量的注意事項(xiàng)不替換注意2:如果指定的符號(hào)出現(xiàn)在雙引號(hào)中,則不被替換。要替換第65頁(yè)/共198頁(yè)2023/3/2666#include“stdio.h”constPI=3.14159;intmain(){floatr,c,s,v;r=20;c=2*PI*r;printf(“周長(zhǎng)=%f”,c);s=PI*r*r;printf(“面積=%f”,s);v=4*PI*r*r*r/3;printf(“體積=%f”,v);return(0);}常變量const關(guān)鍵字的用法:const標(biāo)識(shí)符=常量值常變量名:PI常變量必須初始化,在定義的同時(shí)給以值同樣要注意的是:
雖然PI是變量,但是它是用const關(guān)鍵字定義的常變量,所以也不能被賦值。PI=100;第66頁(yè)/共198頁(yè)2023/3/2667小結(jié)①習(xí)慣上,符號(hào)常量用大寫(xiě)字母表示;②定義符號(hào)常量時(shí),不能以“;”結(jié)束;③一個(gè)#define占一行,且要從第一列開(kāi)始書(shū)寫(xiě);④一個(gè)源程序文件中可含有若干個(gè)define命令,不同的define命令中指定的“標(biāo)識(shí)符”不能相同;第67頁(yè)/共198頁(yè)2023/3/26682.3.2變量賦初值第68頁(yè)/共198頁(yè)2023/3/2669◆當(dāng)一次定義多個(gè)變量時(shí),不能用連續(xù)=號(hào)的方式對(duì)多個(gè)變量進(jìn)行初始化變量賦初值一個(gè)變量在定義之后,第一次賦值之前,它的值是不確定的。
在賦初值前,不能讓其參與運(yùn)算,否則會(huì)得到不可預(yù)知的結(jié)果。
對(duì)變量進(jìn)行定義的同時(shí)給變量賦初值,稱為初始化,
◆在定義變量的同時(shí)進(jìn)行初始化除static,extern變量外,初始化與定義,賦值等價(jià)◆當(dāng)一次定義多個(gè)變量時(shí),可以對(duì)其全部或部分進(jìn)行初始化如:intTotalStudent=40;等價(jià)于:intTotalStudent;TotalStudent=40;如:intTotalStudent=40,TotalScore=0,average;如:intTotalScore=AverScore=0;是錯(cuò)誤的。正確的應(yīng)該是:intTotalScore=0,AverScore=0;第69頁(yè)/共198頁(yè)2023/3/2670下列變量定義中合法的是A)short_a=1-.1e1;B)doubleb=1+5e2.5;C)longdo=0xfdaL;D)float2_and=1-e-3;-第70頁(yè)/共198頁(yè)2023/3/2671一、已定義ch為字符型變量,在下列賦值語(yǔ)句中錯(cuò)誤的是:A)ch=‘\’;B)ch=62+3;C)ch=NULL;D)ch=‘\xaa’;二在以下選項(xiàng)中可做為C語(yǔ)言合法整數(shù)的是:A)10110BB)0386c)0XffaD)x2a2三、在以下選項(xiàng)中可做為C語(yǔ)言合法常量的是:A)-80B)-080C)-8e1.0D)-80.0e第71頁(yè)/共198頁(yè)2023/3/2672
字符輸出函數(shù)putchar
字符輸入函數(shù)getchar
格式輸出函數(shù)printf
格式輸入函數(shù)scanf
各種格式控制字符的含義和用法簡(jiǎn)單的程序設(shè)計(jì)2.7數(shù)據(jù)的輸入輸出第72頁(yè)/共198頁(yè)2023/3/2673輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn)第73頁(yè)/共198頁(yè)2023/3/2674輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn)
輸入是指從外部設(shè)備(如鍵盤(pán),掃描儀,文件等)向計(jì)算機(jī)主機(jī)送入數(shù)據(jù);輸出是從計(jì)算機(jī)主機(jī)向外部設(shè)備(如顯示器,打印機(jī),文件等)送出數(shù)據(jù)。
C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。要實(shí)現(xiàn)這些操作,必須調(diào)用相應(yīng)的系統(tǒng)庫(kù)函數(shù)。比如printf函數(shù)用于輸出,scanf函數(shù)用于輸入,等等。
不同版本的C語(yǔ)言(C編譯器)均帶有不同數(shù)量不同用途的系統(tǒng)庫(kù)函數(shù),以.obj文件或.lib文件的形式提供,供用戶與自己的.obj文件鏈接以形成.exe的可執(zhí)行文件。注意:這些系統(tǒng)庫(kù)函數(shù)名并非C語(yǔ)言的關(guān)鍵字。第74頁(yè)/共198頁(yè)2023/3/2675C語(yǔ)言中的頭文件
要想正確成功的調(diào)用C系統(tǒng)庫(kù)函數(shù),就必須在源程序文件開(kāi)頭用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括進(jìn)來(lái)。如:要想調(diào)用系統(tǒng)輸出庫(kù)函數(shù)printf,在源程序文件開(kāi)頭必須有如下預(yù)編譯命令#include<stdio.h>C語(yǔ)言中的頭文件(headerfile)是指后綴名習(xí)慣為“.h”的一些文本文件。在頭文件中,包含有關(guān)系統(tǒng)庫(kù)函數(shù)的原型、有關(guān)系統(tǒng)全局變量的聲明、有關(guān)系統(tǒng)符號(hào)常量的宏定義、有關(guān)數(shù)據(jù)類型的定義等等信息。其中,系統(tǒng)庫(kù)函數(shù)的原型就告訴編譯系統(tǒng)該函數(shù)的名稱、返回值類型、形參數(shù)量及類型等信息,這樣編譯系統(tǒng)才能正確編譯,否則會(huì)給出出錯(cuò)信息。第75頁(yè)/共198頁(yè)2023/3/2676C語(yǔ)言中的頭文件stdio.h頭文件中包含了與標(biāo)準(zhǔn)I/O操作有關(guān)的系統(tǒng)庫(kù)函數(shù)的聲明,所以調(diào)用如printf、scanf等標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí),必須在源程序文件中包含該頭文件。否則,編譯時(shí)會(huì)給出錯(cuò)誤信息如下:Function‘printf’shouldhaveaprototype
函數(shù)‘printf’應(yīng)該有一個(gè)原型提示:要想知道某個(gè)版本的C語(yǔ)言提供哪些系統(tǒng)庫(kù)函數(shù)以及各種庫(kù)函數(shù)所對(duì)應(yīng)的頭文件的名稱,必須參考該版本C語(yǔ)言的系統(tǒng)庫(kù)函數(shù)手冊(cè)或聯(lián)機(jī)幫助。庫(kù)函數(shù)類別頭文件名庫(kù)函數(shù)類別頭文件名標(biāo)準(zhǔn)輸入輸出stdio.h字符串處理string.h數(shù)學(xué)math.h圖形處理graphics.h字符處理ctype.h第76頁(yè)/共198頁(yè)2023/3/26772.7.1字符數(shù)據(jù)的輸入輸出
字符輸出函數(shù)putchar
字符輸入函數(shù)getchar第77頁(yè)/共198頁(yè)2023/3/2678字符輸出函數(shù)putchar原型:intputchar(intch);參數(shù):一個(gè)字符型或整型的數(shù)據(jù)功能:在默認(rèn)的輸出設(shè)備(顯示器)上輸出一個(gè)字符用法:putchar(字符型或整型數(shù)據(jù));返回值:所輸出的字符。絕大多數(shù)情況下不使用該返回值。第78頁(yè)/共198頁(yè)2023/3/2679#include<stdio.h>intmain(){chara,b;intc,d;a='B';b='O';c=65;d=66;putchar(a);putchar(b);putchar('Y');putchar(‘\n’);putchar(c);putchar(d+32);return(0);}字符輸出函數(shù)putchar:例參數(shù)可以是int
或char型變量運(yùn)行結(jié)果: BOY
Ab參數(shù)可以是int
或char型常量參數(shù)也可以是int或char型表達(dá)式第79頁(yè)/共198頁(yè)2023/3/2680字符輸入函數(shù)getchar原型:intgetchar(void);參數(shù):無(wú)功能:從默認(rèn)的輸入設(shè)備(鍵盤(pán))上接收用戶鍵入的一個(gè)字符,并把該字符作為函數(shù)值返回用法:ch=getchar();返回值:用戶從鍵盤(pán)鍵入的字符。絕大多數(shù)情況該字符都會(huì)被賦值給某個(gè)字符型或整型的變量,或者作為表達(dá)式的一部分參與其它的運(yùn)算。
注意:getchar函數(shù)只能接收并返回一個(gè)字符。執(zhí)行過(guò)程:當(dāng)程序運(yùn)行到包含有g(shù)etchar函數(shù)調(diào)用的語(yǔ)句時(shí),會(huì)暫時(shí)停下來(lái),此時(shí)屏幕上有一個(gè)閃爍的光標(biāo),等待用戶從鍵盤(pán)上的輸入。用戶必須鍵入有關(guān)信息并按Enter鍵后程序才能繼續(xù)向下執(zhí)行。第80頁(yè)/共198頁(yè)2023/3/2681#include<stdio.h>intmain(){charch;ch=getchar();putchar(ch);return(0);}字符輸入函數(shù)getchar:例由于getchar函數(shù)要接收用戶從鍵盤(pán)輸入的字符,所以程序執(zhí)行流程到這兒會(huì)暫時(shí)停下來(lái)等待用戶的輸入。B↙(用戶鍵入字符B后,在打“回車”鍵)B(putchar函數(shù)再在屏幕上輸出一個(gè)字符B)運(yùn)行結(jié)果:當(dāng)用戶鍵入一個(gè)字符并按下Enter鍵后,該字符被getchar函數(shù)接收并作為函數(shù)值返回。此處,將這個(gè)返回值同時(shí)賦值給一個(gè)字符型的變量ch,保存起來(lái)以作后用。見(jiàn)習(xí)題P141頁(yè)71第81頁(yè)/共198頁(yè)2023/3/2682字符輸入函數(shù)getchar進(jìn)一步說(shuō)明鍵盤(pán)輸入有1k以上的緩存空間,一次鍵盤(pán)輸入是以鍵入enter為結(jié)束。getchar等待鍵盤(pán)緩存空間中出現(xiàn)enter,當(dāng)其出現(xiàn)enter,getchar從鍵盤(pán)緩存空間中取一個(gè)字符返回。如果鍵盤(pán)緩存空間還有字符,下一個(gè)getchar就不再等待,立刻從鍵盤(pán)緩存空間中取一個(gè)字符返回。
#include"stdio.h"voidmain(){charc;inti=0;while(1){c=getchar();putchar(c);i++;if(i>1000)break;}}第82頁(yè)/共198頁(yè)2023/3/26832.7.2格式輸入輸出函數(shù)
格式輸出函數(shù)printf
格式輸入函數(shù)scanf第83頁(yè)/共198頁(yè)2023/3/2684格式輸出函數(shù)printf
原型:
intprintf(constchar*format[,argument,...]);
參數(shù):兩部分第一部分:為字符型常指針,大多數(shù)情況下都是字符串常量第二部分:若干個(gè)待輸出的數(shù)據(jù)的列表功能:一次函數(shù)調(diào)用可以在默認(rèn)的輸出設(shè)備上(顯示器)輸出經(jīng)格式化后的若干個(gè)不同類型的數(shù)據(jù)。用法:printf(格式控制字符串,輸出數(shù)據(jù)列表);
返回值:輸出的所有數(shù)據(jù)的字節(jié)數(shù)。絕大多數(shù)情況下不使用該返回值。第84頁(yè)/共198頁(yè)2023/3/2685格式輸出函數(shù)printf的參數(shù)printf(格式控制字符串,輸出數(shù)據(jù)列表);⒈格式控制字符串:常字符指針,既可以是字符串常量,也可以是字符數(shù)組或字符指針。
格式控制字符:由%和規(guī)定的格式字符組成,一個(gè)格式控制字符串中可以有一個(gè)或多個(gè)格式控制字符。其作用是把后面的輸出項(xiàng)目列表中對(duì)應(yīng)位置上的數(shù)據(jù)格式化成該格式字符所規(guī)定的數(shù)據(jù)類型。
普通字符:除格式字符以外的所有其它字符。它們不起任何格式作用,只簡(jiǎn)單被printf函數(shù)原樣輸出到顯示器上。通常用于說(shuō)明輸出數(shù)據(jù)或給用戶有關(guān)的提示說(shuō)明信息。⒉輸出數(shù)據(jù)列表:將要輸出的數(shù)據(jù),用逗號(hào)分隔??梢允浅A?,變量、函數(shù)調(diào)用或任何合法的C表達(dá)式。第85頁(yè)/共198頁(yè)2023/3/2686intnum=15;printf(“Twice%dis%d.\n”,num,2*num);格式輸出函數(shù)printf的執(zhí)行過(guò)程Twice普通字符格式字符普通字符格式字符普通字符15is30._待輸出的數(shù)據(jù)第86頁(yè)/共198頁(yè)2023/3/2687printf函數(shù)中的格式字符格式字符格式作用整型d,i格式化為有符號(hào)的十進(jìn)制整數(shù)u格式化為無(wú)符號(hào)的十進(jìn)制整數(shù)o格式化為無(wú)符號(hào)的八進(jìn)制整數(shù)x,X格式化為無(wú)符號(hào)的十六進(jìn)制整數(shù)字符型c格式化為一個(gè)字符s格式化為一個(gè)字符串實(shí)型f格式化為小數(shù)形式的實(shí)數(shù),隱含輸出6位小數(shù)e,E格式化為指數(shù)形式的實(shí)數(shù),數(shù)字部分有6位小數(shù)g,G選用%f或%e格式中輸出寬度較短的一種格式,不輸出無(wú)意義的0第87頁(yè)/共198頁(yè)2023/3/2688printf函數(shù)中的附加格式字符附加格式字符格式作用l用于格式化長(zhǎng)整型數(shù)據(jù),可加在格式符d、o、x、u的前面m用于確定數(shù)據(jù)輸出時(shí)所占最小寬度,即列數(shù).n對(duì)實(shí)型數(shù),表示輸出n位小數(shù);對(duì)字符串,表示截取的字符個(gè)數(shù)-輸出的數(shù)字或字符在輸出域內(nèi)向左對(duì)齊(默認(rèn)是右對(duì)齊的)
在格式說(shuō)明時(shí),還可以在%和上述格式字符之間插入以下幾種附加的格式字符(又叫修飾符)。%[附加格式字符]格式字符%[-][m][.n][l]格式字符第88頁(yè)/共198頁(yè)2023/3/2689printf函數(shù)使用中的注意事項(xiàng)一定要分清哪些是格式字符,哪些是普通字符;同時(shí)也要注意區(qū)分普通字符中轉(zhuǎn)義字符常量。
%d%D%cf如果作為第一部分參數(shù)的字符串中,全部是普通字符,則具有輸出字符串的效果,這通常用于在程序運(yùn)行時(shí)給使用者有關(guān)提示信息,或?qū)敵鲂畔⒆饔嘘P(guān)的注釋和說(shuō)明。
printf(“Welcometousethisprogram.\n”);printf(“ProgramAuthor:LiChangsong”);待輸出數(shù)據(jù)的個(gè)數(shù)不能少于格式說(shuō)明字符的個(gè)數(shù);如果多于格式說(shuō)明字符的個(gè)數(shù),則多出的數(shù)據(jù)不被輸出。
printf(“%d,%d,%c\n”,a,b,ch,d,e);用%%輸出一個(gè)%printf(“percent=%d%%\n”,percent);習(xí)題見(jiàn)P137頁(yè)31、42、58、第89頁(yè)/共198頁(yè)2023/3/2690printf函數(shù)的使用:例#include<stdio.h>voidmain(){unsignedshortinta=65535;shortintb=-2;printf("a=%d,%o,%x,%u\n",a,a,a,a);printf("b=%d,%o,%x,%u\n",b,b,b,b);}運(yùn)行結(jié)果:a=-1,177777,ffff,65535b=-2,177776,fffe,65534第90頁(yè)/共198頁(yè)2023/3/2691printf函數(shù)的使用:例#include<stdio.h>voidmain(){longc=4000000;floatf1=12345.67;printf("c=%ld\n",c);printf("f1=%f,%e\n",f1,f1);}運(yùn)行結(jié)果:c=4000000f1=12345.669922,1.234567e+04第91頁(yè)/共198頁(yè)2023/3/2692printf函數(shù)的使用:例#include<stdio.h>voidmain(){printf("%c%c%c",'B','O','Y');printf("%c",'\n');printf("%s","China");printf("%s","\n");printf("Pleaseinputthreedata:");}運(yùn)行結(jié)果: BOY China Pleaseinputthreedata:第92頁(yè)/共198頁(yè)2023/3/2693格式輸入函數(shù)scanf
原型:
intscanf(constchar*format[,address,...]);
參數(shù):兩部分第一部分:為字符型常指針,大多數(shù)情況下都是字符串常量第二部分:若干個(gè)內(nèi)存單元地址的列表功能:一次函數(shù)調(diào)用可以從默認(rèn)的輸入設(shè)備上(鍵盤(pán))掃描用戶的輸入并經(jīng)格式化為若干個(gè)不同類型的數(shù)據(jù)后依次保存到指定的地址列表中。用法:scanf(格式控制字符串,地址列表);
返回值:掃描、格式化后保存的數(shù)據(jù)的個(gè)數(shù)。絕大多數(shù)情況下不使用該返回值。第93頁(yè)/共198頁(yè)2023/3/2694格式輸入函數(shù)scanf的參數(shù)scanf(格式控制字符串,地址列表);⒈格式控制字符串:常字符指針,既可以是字符串常量,也可以是字符數(shù)組或字符指針。
格式控制字符:由%和規(guī)定的格式字符組成,一個(gè)格式控制字符串中可以有一個(gè)或多個(gè)格式控制字符。其作用是把掃描用戶鍵盤(pán)輸入后得到的數(shù)據(jù)格式化成該格式字符所規(guī)定的數(shù)據(jù)類型。
普通字符:除格式字符以外的所有其它字符。它們不但不起任何格式作用,也不被顯示,反而要求使用者在輸入信息時(shí)照原樣輸入,否則函數(shù)將不能掃描到正確的數(shù)據(jù)。因此,通常在scanf函數(shù)的第一部分參數(shù)中,不要包含除必要的分隔符號(hào)之外的任何字符。⒉地址列表:一些已經(jīng)分配給某些變量的內(nèi)存單元的地址的列表,scanf函數(shù)將把掃描用戶輸入并格式化后的數(shù)據(jù)按順序依次送到這些地址所指向的單元中去。第94頁(yè)/共198頁(yè)2023/3/2695取變量地址運(yùn)算符&◆取地址運(yùn)算符(單目)運(yùn)算符:
&用法:&變量?jī)?yōu)先級(jí):處于整個(gè)運(yùn)算符優(yōu)先級(jí)表中的第二級(jí),高于所有的雙目運(yùn)算符結(jié)合性:自右向左作用:得到變量所占內(nèi)存單元的地址注意:&運(yùn)算符的運(yùn)算量只能是變量,即是說(shuō)只能取變量的地址,不能取常量或表達(dá)式的地址。如:inta;floatfnum;&a,&fnum;&10&(x+y)第95頁(yè)/共198頁(yè)2023/3/2696intnum1,num2;scanf(“num1=%d,num2=%d”,&num1,&num2);格式輸入函數(shù)scanf的執(zhí)行過(guò)程鍵盤(pán)輸入:num1=普通
字符格式字符普通
字符格式字符15,num2=30↙地址列表1530num1num2第96頁(yè)/共198頁(yè)2023/3/2697scanf函數(shù)中的格式字符格式字符格式作用整型d,i把用戶的輸入格式化為有符號(hào)的十進(jìn)制整數(shù)u把用戶的輸入格式化為無(wú)符號(hào)的十進(jìn)制整數(shù)o把用戶的輸入格式化為無(wú)符號(hào)的八進(jìn)制整數(shù)x,X把用戶的輸入格式化為無(wú)符號(hào)的十六進(jìn)制整數(shù)字符型c把用戶的輸入格式化為一個(gè)字符s把用戶的輸入格式化為一個(gè)字符串實(shí)型f把用戶的輸入格式化為實(shí)數(shù),用戶可以用小數(shù)形式或指數(shù)形式輸入e,E與f的作用相同g,G與f的作用相同第97頁(yè)/共198頁(yè)2023/3/2698scanf函數(shù)使用中的注
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化創(chuàng)意技術(shù)合作合同匯編
- 工作室合伙合同書(shū)模板
- 設(shè)備租賃和購(gòu)買(mǎi)合同模板
- 2024年讓與擔(dān)保合同范本
- 商品住宅購(gòu)銷合同
- 個(gè)人債務(wù)轉(zhuǎn)讓協(xié)議書(shū)撰寫(xiě)指南
- 房產(chǎn)二次抵押借款合同
- 房地產(chǎn)中介服務(wù)協(xié)議書(shū)正規(guī)范本2024年
- 債權(quán)轉(zhuǎn)讓協(xié)議合同
- 新型能源供電協(xié)議書(shū)
- 15MW源網(wǎng)荷儲(chǔ)一體化項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-備案審批
- 少先隊(duì)輔導(dǎo)員筆試題庫(kù)附有答案
- 嬰兒培養(yǎng)箱校準(zhǔn)規(guī)范
- 《補(bǔ)貼與反補(bǔ)貼措施協(xié)議》對(duì)出口信貸的法律規(guī)制研究2
- 鐵道運(yùn)輸實(shí)訓(xùn)總結(jié)報(bào)告
- MOOC 光纖光學(xué)-華中科技大學(xué) 中國(guó)大學(xué)慕課答案
- 中國(guó)醫(yī)藥流通行業(yè)情況分析
- 兒童民航知識(shí)課件
- 對(duì)科學(xué)施肥方法的
- (修改后) 電子工程中級(jí)職稱考試題
- 家長(zhǎng)會(huì)示范課件引導(dǎo)孩子擁抱自信與勇氣
評(píng)論
0/150
提交評(píng)論