版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023/10/81
第二章基本數(shù)據(jù)類型及運(yùn)算本章主要內(nèi)容:
數(shù)據(jù)類型、常量、變量、基本運(yùn)算、類型轉(zhuǎn)換及運(yùn)算的優(yōu)先級(jí)與結(jié)合性等。2023/10/71
第二章基本數(shù)2023/10/82數(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語言共有34種運(yùn)算符。
表達(dá)式:按照運(yùn)算符的性質(zhì),用運(yùn)算符把數(shù)據(jù)連接起來以
達(dá)到數(shù)據(jù)運(yùn)算目的而構(gòu)成的式子。寫表達(dá)式的最終目的是要進(jìn)行計(jì)算它求出它的值。求解表達(dá)式的過程是由計(jì)算機(jī)完成的,因此,要想得到正確的結(jié)果,就必須寫出正確的表達(dá)式。而一個(gè)表達(dá)式中往往包含多個(gè)運(yùn)算符,所以必須熟悉每一種運(yùn)算符的性質(zhì)(優(yōu)先級(jí)別和結(jié)合性),才能寫出有正確求解結(jié)果的表達(dá)式。2023/10/72數(shù)據(jù)類型、運(yùn)算符和表達(dá)式的概念數(shù)據(jù)類型2023/10/83
常量與變量整型、浮點(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á)式2023/10/73常量與變量第二章數(shù)據(jù)類型、
運(yùn)算2023/10/842.1基本數(shù)據(jù)類型2023/10/742.1基本數(shù)據(jù)類型2023/10/85數(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ì)有所不同.2023/10/75數(shù)據(jù)類型數(shù)據(jù)類型:數(shù)據(jù)存在的組織和形式。2023/10/86C的數(shù)據(jù)類型C的數(shù)據(jù)類型基本類型構(gòu)造類型整型單精度型雙精度型數(shù)組類型結(jié)構(gòu)體類型浮點(diǎn)型聯(lián)合類型指針類型字符型枚舉類型空類型2023/10/76C的數(shù)據(jù)類型C的數(shù)據(jù)類型基本類型構(gòu)造類型2023/10/87
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)-38382023/10/772.1基本數(shù)據(jù)類型2023/10/88
類型修飾符:shortintlongintunsignedintunsignedchar輸出浮點(diǎn)型數(shù)有效位為6
7位十進(jìn)制數(shù)位輸出雙精度型數(shù)有效位為15
16位十進(jìn)制數(shù)位數(shù)據(jù)分為常量和變量。2023/10/78類型修飾符:2023/10/892.2常量與變量2023/10/792.2常量與變量2023/10/810常量
符號(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í)符名可以清楚地看出該常量的含義,做到“見名知意”在需要修改常量的值時(shí)可以做到“一改全改”,容易調(diào)整整型常量浮點(diǎn)型常量字符型常量字符串常量2023/10/710常量符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常2023/10/811變量
C允許把值存放在變量中,每個(gè)變量都由一個(gè)變量名來標(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)存單元2023/10/711變量C允許把值存放在變量中,每個(gè)變量2023/10/812在程序中使用一個(gè)變量之前,先要對(duì)它進(jìn)行定義:為每個(gè)變量取一個(gè)名稱(變量名),同時(shí)還要規(guī)定它的數(shù)據(jù)類型,以便編譯程序根據(jù)不同的數(shù)據(jù)類型分配內(nèi)存空間。2023/10/712在程序中使用一個(gè)變量之前,先要對(duì)它進(jìn)行2023/10/813變量的命名規(guī)定合法的C變量名:area,sum,answer,month,name,Name,Step1,step2,number_of_student,average_score,_class1C語言中,變量(標(biāo)識(shí)符)的命名規(guī)定:
只能由大小寫字母、下劃線和數(shù)字組成;開頭的第一個(gè)字符只能是大小寫字母或下劃線;大小寫是敏感的;不能與C的關(guān)鍵字重復(fù);名字在整個(gè)程序中必須是唯一的;名字的長(zhǎng)度不能超過系統(tǒng)的規(guī)定。非法的C變量名:3rd_entry(數(shù)字開頭)all$done (包含非法字符$)theend (包含空格)
int (系統(tǒng)關(guān)鍵字)標(biāo)識(shí)符是用來為變量、符號(hào)常量、函數(shù)、數(shù)組、類型、文件取名字的有效字符序列即用戶為程序中各種對(duì)象取的名字。2023/10/713變量的命名規(guī)定合法的C變量名:C語言中2023/10/814
.關(guān)鍵字預(yù)先定義的具有特定含義的標(biāo)識(shí)符。也稱為保留字,不能另作他用。如:intcharfloatdoubleunsignedstructifdowhileswitchreturngotodefineincludeundefsizeof2023/10/714.關(guān)鍵字2023/10/815
避免使用無意義的名字,應(yīng)盡量做到“見名知意”;盡量使用代表變量實(shí)際含義的英文單詞或縮寫作標(biāo)識(shí)符名;當(dāng)名字包含多個(gè)單詞時(shí),通常使每個(gè)單詞的首字母大寫;以下劃線開頭的名字通常是系統(tǒng)內(nèi)部保留的標(biāo)識(shí)符名;在整個(gè)程序中保持統(tǒng)一的命名方式。變量的命名習(xí)慣C語言中,變量(標(biāo)識(shí)符)的命名習(xí)慣:好的C變量名:CircleArea,TotalScore,UserSelection,choice,StudentNumber,AverageScore,SampleFrequency不是很好的C變量名:a,aa (不知何意)
numberofstudent
(全部小寫難以辨認(rèn))
total
totals(名字太相似)2023/10/715避免使用無意義的名字,應(yīng)盡量做到“見2023/10/816變量的定義和使用變量定義具有三個(gè)目的:⑴定義變量名;⑵定義變量類型;⑶向程序員描述該變量。C語言中,變量必須“先定義,后使用”intradius;/*theradiusofcircle*/關(guān)鍵字int
告訴編譯系統(tǒng)我要定義一個(gè)整型變量,用它來保存一個(gè)整型的數(shù)值。這是變量的名字。以后的程序中就用這個(gè)名字來訪問這個(gè)變量。注釋用來解釋這個(gè)變量,它是給程序員的信息。對(duì)程序主要的變量作注釋是很好的習(xí)慣。2023/10/716變量的定義和使用變量定義具有三個(gè)目的:2023/10/817#include<stdio.h>intmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(“sum=%d\n”,sim);return(0);}變量的定義和使用變量“先定義,后使用”的好處是:
C只允許使用定義過的變量。凡是未被事先定義的符號(hào),不作為變量名。這樣可以檢查出程序中錯(cuò)誤使用的變量名。此處定義的變量名是sum
。此處由于輸入錯(cuò)誤或其它原因,出現(xiàn)了名字為sim
的符號(hào)。由于該符號(hào)在這之前從未定義過,所以在編譯時(shí),便會(huì)出現(xiàn)錯(cuò)誤信息。Error:Undefinedsymbol'sim'2023/10/717#include<stdio.h>變2023/10/818#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)型的2023/10/718#include<stdio.h>變2023/10/819變量的定義和使用intage;/*theageofstudent*/floatscore;/*thescoreofstudent*/floataverage;/*theaverageofscore*/longnumber;/*thenumberofstudent*/doubledistance;/*betweenearth&moon*/charUserSelection;/*keyuserhit*/變量定義的一般格式是:typename;/*comment*/
類型名字;
/*注釋*/系統(tǒng)將根據(jù)變量的定義為其分配相應(yīng)大小的內(nèi)存單元。2023/10/719變量的定義和使用int2023/10/8204.以下不能定義為用戶標(biāo)識(shí)符的是
。A)scanfB)VoidC)_3comD)int課堂練習(xí)答案:D5.以下可作為C語言用戶定義標(biāo)識(shí)符的是()組標(biāo)識(shí)符。A.voiddefineWORDB.a(chǎn)3_b3_123IFC.For-abcCaseD.2aDosizeof答案:B注意:這些系統(tǒng)庫函數(shù)名并非C語言的關(guān)鍵字。2023/10/7204.以下不能定義為用戶標(biāo)識(shí)符的是2023/10/8212.2.1整型數(shù)據(jù)
整型常量整型變量整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式2023/10/7212.2.1整型數(shù)據(jù)整型常量2023/10/822整型常量十進(jìn)制整型常量:如123,-456,0
八進(jìn)制整型常量:以數(shù)字“0”開頭的整型常量如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”開頭的整型常量如0xFF,即(0xFF)16
,等于(255)10
-0x11,即(-0x11)16
,等于(-17)10
十六進(jìn)制整型常量中不應(yīng)出現(xiàn)“F”以上的數(shù)碼。C語言中沒有二進(jìn)制整型常量,用十六進(jìn)制整型常量表示二進(jìn)制整數(shù)2023/10/722整型常量十進(jìn)制整型常量:如123,2023/10/823補(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)102023/10/723補(bǔ)充:各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制十進(jìn)制方2023/10/8242562282142723210各種計(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
2023/10/7242562282142722023/10/825各種計(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ù)?!?0.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ù)即可。2023/10/725各種計(jì)數(shù)制間的轉(zhuǎn)換十進(jìn)制二進(jìn)制方法:整2023/10/826各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制八進(jìn)制方法:把二進(jìn)制數(shù)從低位開始每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ù)從低位開始每1位數(shù)碼轉(zhuǎn)換為3位的二進(jìn)制數(shù)碼(∵8=23
)010170532
結(jié)果是:(170532)8=
(1111000101011010)20111010001110012023/10/726各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制八進(jìn)制方法:把2023/10/827各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制十六
進(jìn)制方法:把二進(jìn)制數(shù)從低位開始每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ù)從低位開始每1位數(shù)碼轉(zhuǎn)換為4位的二進(jìn)制數(shù)碼。(∵16=24
)0010AF0952
結(jié)果是:(AF0952)16=
(101011110000100101010010)2010110010000111110102023/10/727各種計(jì)數(shù)制間的轉(zhuǎn)換二進(jìn)制十六
進(jìn)制方法2023/10/828長(zhǎng)整型:-56l;3567L;04L無符號(hào)整型:586u;077765U;0xfffdU無符號(hào)長(zhǎng)整型:0375ul;0x45feUL整型常量的類型2023/10/728長(zhǎng)整型:-56l;3567L;04L整2023/10/829課堂練習(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)–0x48a2e50x2023/10/729課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是不合法2023/10/830整型變量的分類注:有符號(hào)整型變量中,關(guān)鍵字signed可以省略。(有符號(hào)與無符號(hào)不同的取值范圍詳見教材P23頁)類型關(guān)鍵字占字節(jié)數(shù)目
(VisualC++)有符號(hào)signed基本整型signedint4字節(jié)短整型signedshortint
(signedshort)2字節(jié)長(zhǎng)整型signedlongint
(signedlong)4字節(jié)無符號(hào)unsigned基本整型unsignedint4字節(jié)短整型unsignedshortint
(unsignedshort)2字節(jié)長(zhǎng)整型unsignedlongint
(unsignedlong)4字節(jié)2023/10/730整型變量的分類注:有符號(hào)整型變量中,關(guān)2023/10/831整型數(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ǔ)碼的方法:2023/10/731整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式數(shù)據(jù)在內(nèi)存中2023/10/832計(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é)Ns1010101010101012023/10/732計(jì)算機(jī)中數(shù)的表示一個(gè)數(shù)據(jù)總要占據(jù)一2023/10/833
對(duì)于有符號(hào)變量:把最高位作為符號(hào)位保存數(shù)據(jù)的符號(hào)(0為正,1為負(fù)),其余位保存具體數(shù)值,因此可以用于正確保存限值范圍內(nèi)的正數(shù)或負(fù)數(shù)。有符號(hào)和無符號(hào)的區(qū)別◆
有符號(hào)和無符號(hào)的區(qū)別是什么?關(guān)鍵在于“最高位”的性質(zhì)。如果有:inta;
那么a的有效數(shù)值范圍為-32768~32767有符號(hào)整型變量a=32767:0111111111111111如果有:unsignedintb;
那么b的有效數(shù)值范圍為0~65535最高位代表符號(hào)
對(duì)于無符號(hào)變量:最高位不作為符號(hào)位,全部的位都用來保存數(shù)據(jù)的數(shù)值,因此可以用于正確保存限值范圍內(nèi)的正數(shù)。無符號(hào)整型變量b=65535:1111111111111111最高位代表數(shù)值2023/10/733對(duì)于有符號(hào)變量:把最高位作為符號(hào)位2023/10/834整型數(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~+42949672952023/10/734整型數(shù)據(jù)的表示范圍由于每一種整型數(shù)據(jù)2023/10/835整型變量的定義變量的定義一般放在函數(shù)體的開頭部分。定義方法:類型符變量名列表;(用逗號(hào)分隔)如:intnum;unsignedintage,score;longdistant,SampleTimes;2023/10/735整型變量的定義變量的定義一般放在函數(shù)體2023/10/836#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ù)溢出”的問題?!鬷nt型的有效表示范圍是-32768~+32767
。max是:0111111111111111max+1→over是:100000000000000032767-32768數(shù)據(jù)溢出了!將變量over定義成long型就能得到正確的結(jié)果。2023/10/736#include<stdio.h>整2023/10/837作業(yè)1:將下列各數(shù)用八進(jìn)制和十六進(jìn)制表示:(1)—617(2)—111(3)—28654(4)210032023/10/737作業(yè)1:將下列各數(shù)用八進(jìn)制和十六進(jìn)制表2023/10/8382.2.2浮點(diǎn)型數(shù)據(jù)
浮點(diǎn)型常量浮點(diǎn)型變量浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式2023/10/7382.2.2浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型常量2023/10/839浮點(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ù)形式”輸出2023/10/739浮點(diǎn)型常量十進(jìn)制小數(shù)形式:由數(shù)字和小2023/10/840課堂練習(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-02023/10/740課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是不合法2023/10/841浮點(diǎn)數(shù)在計(jì)算機(jī)中,既有整數(shù)部分又有小數(shù)部分的數(shù)稱為浮點(diǎn)數(shù)P=±S×2±N可見,浮點(diǎn)數(shù)表示中的各部分又都是定點(diǎn)數(shù)。在一個(gè)浮點(diǎn)數(shù)所占字節(jié)單元中,一部分位用來保存階碼,一部分位用來保存尾數(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位2023/10/741浮點(diǎn)數(shù)在計(jì)算機(jī)中,既有整數(shù)部分又有小數(shù)2023/10/842浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式浮點(diǎn)型數(shù)據(jù)在內(nèi)存中是以“尾數(shù)”和“階碼”的形式存放的。在一個(gè)浮點(diǎn)型數(shù)據(jù)(浮點(diǎn)數(shù))所占字節(jié)單元中,一部分位用來保存階碼,一部分位用來保存尾數(shù)?!牢矓?shù)部分±階碼部分不同的編譯系統(tǒng)位數(shù)分配不同??傊矓?shù)部分位數(shù)越多,可以表示的數(shù)的有效數(shù)字位數(shù)就越多,精度就越高;階碼部分位數(shù)越多,可以表示的數(shù)的范圍就越大。+.745623+1例:float7.456230.745623×1012023/10/742浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式浮點(diǎn)型數(shù)據(jù)2023/10/843浮點(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ù)也是不同而且是有限的。2023/10/743浮點(diǎn)型變量的分類類型單精度雙精度長(zhǎng)雙精2023/10/844浮點(diǎn)型變量的定義變量的定義一般放在函數(shù)體的開頭部分。定義方法:類型符變量名列表;(用逗號(hào)分隔)如:floatSinValue,CosValue;doublearea,result;注:C語言中的所有關(guān)鍵字都是小寫的。2023/10/744浮點(diǎn)型變量的定義變量的定義一般放在函數(shù)2023/10/8452.2.3字符型數(shù)據(jù)
字符常量字符變量字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式2023/10/7452.2.3字符型數(shù)據(jù)字符常量2023/10/846字符型常量比如:‘a(chǎn)’,‘A’,‘d’,‘D’,‘?’,‘%’,‘$’,‘2’,‘4’注意:‘a(chǎn)’和‘A’,‘d’和‘D’都是不同的字符常量。
C的字符常量是用單引號(hào)(‘)括起來的一個(gè)字符。另外:C語言還存在另一種形式的特殊的字符常量。它是用單引號(hào)括起來的以一個(gè)“\”字符開頭的規(guī)定的字符序列。“\”字符叫反斜杠字符。這種特殊的字符常量稱為“轉(zhuǎn)義字符”。2023/10/746字符型常量比如:‘a(chǎn)’,‘A’2023/10/847轉(zhuǎn)義字符常量及其含義轉(zhuǎn)義字符含義ASCII
代碼控制字符\n回車換行(光標(biāo)移到下一行第一列)10\t水平制表(光標(biāo)移到下一個(gè)Tab位置)9\b退格(光標(biāo)移回到同一行前一列)8\r回車(光標(biāo)移到同一行第一列)13\f換頁(光標(biāo)移到下一頁開頭)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)制整型常量寫法不同\x0x2023/10/747轉(zhuǎn)義字符常量及其含義轉(zhuǎn)義字符含義ASC2023/10/848課堂練習(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’2023/10/748課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是合法的2023/10/849字符型變量字符型變量用來存儲(chǔ)字符型常量。一個(gè)字符變量只能保存一個(gè)字符。如charInputKey,UserSelection;
unsigned
charlines,grade;定義方法:類型符變量名列表;(用逗號(hào)分隔)類型關(guān)鍵字占字節(jié)數(shù)目有符號(hào)[signed]char1字節(jié)無符號(hào)unsignedchar1字節(jié)2023/10/749字符型變量字符型變量用來存儲(chǔ)字符型常量2023/10/850字符型數(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ù)來講,它的那一個(gè)字節(jié)中保存的就是這個(gè)整數(shù)。2023/10/750字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式每個(gè)字符型2023/10/851常用字符及對(duì)應(yīng)ASCII碼常用字符及對(duì)應(yīng)ASCII碼ASCII值字符ASCII值字符ASCII值字符ASCII值字符0NUL48065A97a10LF
換行49166B98b13CR
回車………………32空格57990Z122z2023/10/751常用字符及對(duì)應(yīng)ASCII碼常用字符及對(duì)2023/10/852可見,字符型數(shù)據(jù)存儲(chǔ)對(duì)應(yīng)的ASCII
碼,而ASCII
碼是一個(gè)整數(shù),按整型數(shù)據(jù)的存儲(chǔ)方式存儲(chǔ),因此在C語言中兩者的存儲(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無符號(hào)型整數(shù):0~255→0100000165這個(gè)字節(jié)存儲(chǔ)的內(nèi)容是01000001。
如果它是一個(gè)整型數(shù)據(jù),那就是整數(shù)65;
如果它是一個(gè)字符型數(shù)據(jù),那就是字符‘A’。ASCII值=652023/10/752可見,字符型數(shù)據(jù)存儲(chǔ)對(duì)應(yīng)的ASCII2023/10/853#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字符型格式符)2023/10/753#include<stdio.h>2023/10/854#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碼=322023/10/754#include<stdio.h>2023/10/8552.2.4字符串常量
字符串常量字符串結(jié)束標(biāo)志字符字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式2023/10/7552.2.4字符串常量字符串常量2023/10/856字符串常量比如:“a”,“”,“Hello,world”,“9811113”,“LCS”?
C的字符串常量是用雙引號(hào)(“)括起來的若干個(gè)字符?!糇址A吭趦?nèi)存中占用連續(xù)的字節(jié)單元,每個(gè)字符按順序占一個(gè)字節(jié)。C語言規(guī)定:自動(dòng)在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志字符”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。一個(gè)字符串常量中包含的字符個(gè)數(shù)是不確定的。那么,系統(tǒng)在處理字符串常量時(shí)如何知道何處結(jié)束呢?2023/10/756字符串常量比如:“a”,“”,2023/10/857字符串結(jié)束標(biāo)志字符◆‘\0’是ASCII碼為0的字符,即位于字符表中的第一個(gè)NUL字符。它是一個(gè)“空操作字符”,就是說,它既不引起任何控制動(dòng)作,也不產(chǎn)生任何顯示。C的字符串結(jié)束標(biāo)志字符是
‘\0’
?!粢虼耍玫淖址A吭趦?nèi)存中占用的字節(jié)數(shù)等于可見字符數(shù)加上1,即結(jié)束標(biāo)志字符占用的一個(gè)字節(jié)?!癏ELLO”HELLO\0字符串結(jié)束標(biāo)志字符也是一個(gè)字符,也要占用一個(gè)字節(jié)??偣舱加?個(gè)字節(jié)5個(gè)可見字符2023/10/757字符串結(jié)束標(biāo)志字符◆‘\0’是AS2023/10/858‘A’和“A”的區(qū)別◆由于C語言對(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é),所以無法賦值;原因2:真正的原因。C語言實(shí)際上把字符串處理成字符指針,把一個(gè)指針賦值給一個(gè)字符變量當(dāng)然是錯(cuò)誤的。2023/10/758‘A’和“A”的區(qū)別◆由于C語言對(duì)每2023/10/859課堂練習(xí)◆問題1:字符串“”占幾個(gè)字節(jié)單元?
(A)0個(gè)
(B)1個(gè)
(C)2個(gè)◆問題2:這樣的賦值charc1=“”;是否正確?
(A)正確
(B)不正確◆問題3:1和‘1’是否相同?為什么?◆問題4:1+‘0’和‘1’是否相同?為什么?答案:(c)答案:(B)答案:不相同。因?yàn)榍罢呤钦麛?shù)1,它的值是1,而后者是字符‘1’,它的值是49(ASCII碼)。答案:相同。因?yàn)樽址?’的值是48,加1等于49,正好是字符‘1’的值。2023/10/759課堂練習(xí)◆問題1:字符串“”占2023/10/860課堂練習(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.2023/10/760課堂練習(xí)◆下面四個(gè)選項(xiàng)中,均是正確的2023/10/8612.2.5符號(hào)常量
預(yù)處理符號(hào)變量的實(shí)現(xiàn)使用符號(hào)常量的注意事項(xiàng)2023/10/7612.2.5符號(hào)常量預(yù)處理2023/10/862預(yù)處理編譯預(yù)處理:是指在對(duì)源程序進(jìn)行正式編譯之前所作的一些處理。這些處理是由預(yù)處理命令指定的。源程序經(jīng)過預(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語言本身的組成部分,不能直接對(duì)它進(jìn)行編譯。預(yù)處理命令都是以符號(hào)“#”開頭的。2023/10/762預(yù)處理編譯預(yù)處理:是指在對(duì)源程序進(jìn)行正2023/10/863#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ù)。2023/10/763#include“stdio.h”符2023/10/864#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)常量不是變量,不能被賦值。2023/10/764#include“stdio.h”使2023/10/865#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)中,則不被替換。要替換2023/10/765#include“stdio.h”使2023/10/866#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;2023/10/766#include“stdio.h”常2023/10/867小結(jié)①習(xí)慣上,符號(hào)常量用大寫字母表示;②定義符號(hào)常量時(shí),不能以“;”結(jié)束;③一個(gè)#define占一行,且要從第一列開始書寫;④一個(gè)源程序文件中可含有若干個(gè)define命令,不同的define命令中指定的“標(biāo)識(shí)符”不能相同;2023/10/767小結(jié)①習(xí)慣上,符號(hào)常量用2023/10/8682.3.2變量賦初值2023/10/7682.3.2變量賦初值2023/10/869◆當(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;2023/10/769◆當(dāng)一次定義多個(gè)變量時(shí),不能用連續(xù)=2023/10/870下列變量定義中合法的是A)short_a=1-.1e1;B)doubleb=1+5e2.5;C)longdo=0xfdaL;D)float2_and=1-e-3;-2023/10/770下列變量定義中合法的是A)short_2023/10/871一、已定義ch為字符型變量,在下列賦值語句中錯(cuò)誤的是:A)ch=‘\’;B)ch=62+3;C)ch=NULL;D)ch=‘\xaa’;二在以下選項(xiàng)中可做為C語言合法整數(shù)的是:A)10110BB)0386c)0XffaD)x2a2三、在以下選項(xiàng)中可做為C語言合法常量的是:A)-80B)-080C)-8e1.0D)-80.0e2023/10/771一、已定義ch為字符型變量,在下列賦值2023/10/872
字符輸出函數(shù)putchar
字符輸入函數(shù)getchar
格式輸出函數(shù)printf
格式輸入函數(shù)scanf
各種格式控制字符的含義和用法簡(jiǎn)單的程序設(shè)計(jì)2.7數(shù)據(jù)的輸入輸出2023/10/772字符輸出函數(shù)putchar2.7數(shù)2023/10/873輸入輸出的概念及在C語言中的實(shí)現(xiàn)2023/10/773輸入輸出的概念及在C語言中的實(shí)現(xiàn)2023/10/874輸入輸出的概念及在C語言中的實(shí)現(xiàn)
輸入是指從外部設(shè)備(如鍵盤,掃描儀,文件等)向計(jì)算機(jī)主機(jī)送入數(shù)據(jù);輸出是從計(jì)算機(jī)主機(jī)向外部設(shè)備(如顯示器,打印機(jī),文件等)送出數(shù)據(jù)。
C語言本身沒有輸入輸出語句。要實(shí)現(xiàn)這些操作,必須調(diào)用相應(yīng)的系統(tǒng)庫函數(shù)。比如printf函數(shù)用于輸出,scanf函數(shù)用于輸入,等等。
不同版本的C語言(C編譯器)均帶有不同數(shù)量不同用途的系統(tǒng)庫函數(shù),以.obj文件或.lib文件的形式提供,供用戶與自己的.obj文件鏈接以形成.exe的可執(zhí)行文件。注意:這些系統(tǒng)庫函數(shù)名并非C語言的關(guān)鍵字。2023/10/774輸入輸出的概念及在C語言中的實(shí)現(xiàn)輸2023/10/875C語言中的頭文件
要想正確成功的調(diào)用C系統(tǒng)庫函數(shù),就必須在源程序文件開頭用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括進(jìn)來。如:要想調(diào)用系統(tǒng)輸出庫函數(shù)printf,在源程序文件開頭必須有如下預(yù)編譯命令#include<stdio.h>C語言中的頭文件(headerfile)是指后綴名習(xí)慣為“.h”的一些文本文件。在頭文件中,包含有關(guān)系統(tǒng)庫函數(shù)的原型、有關(guān)系統(tǒng)全局變量的聲明、有關(guān)系統(tǒng)符號(hào)常量的宏定義、有關(guān)數(shù)據(jù)類型的定義等等信息。其中,系統(tǒng)庫函數(shù)的原型就告訴編譯系統(tǒng)該函數(shù)的名稱、返回值類型、形參數(shù)量及類型等信息,這樣編譯系統(tǒng)才能正確編譯,否則會(huì)給出出錯(cuò)信息。2023/10/775C語言中的頭文件要想正確成功的調(diào)用2023/10/876C語言中的頭文件stdio.h頭文件中包含了與標(biāo)準(zhǔn)I/O操作有關(guān)的系統(tǒng)庫函數(shù)的聲明,所以調(diào)用如printf、scanf等標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí),必須在源程序文件中包含該頭文件。否則,編譯時(shí)會(huì)給出錯(cuò)誤信息如下:Function‘printf’shouldhaveaprototype
函數(shù)‘printf’應(yīng)該有一個(gè)原型提示:要想知道某個(gè)版本的C語言提供哪些系統(tǒng)庫函數(shù)以及各種庫函數(shù)所對(duì)應(yīng)的頭文件的名稱,必須參考該版本C語言的系統(tǒng)庫函數(shù)手冊(cè)或聯(lián)機(jī)幫助。庫函數(shù)類別頭文件名庫函數(shù)類別頭文件名標(biāo)準(zhǔn)輸入輸出stdio.h字符串處理string.h數(shù)學(xué)math.h圖形處理graphics.h字符處理ctype.h2023/10/776C語言中的頭文件stdio.h頭文件2023/10/8772.7.1字符數(shù)據(jù)的輸入輸出
字符輸出函數(shù)putchar
字符輸入函數(shù)getchar2023/10/7772.7.1字符數(shù)據(jù)的輸入輸出字符2023/10/878字符輸出函數(shù)putchar原型:intputchar(intch);參數(shù):一個(gè)字符型或整型的數(shù)據(jù)功能:在默認(rèn)的輸出設(shè)備(顯示器)上輸出一個(gè)字符用法:putchar(字符型或整型數(shù)據(jù));返回值:所輸出的字符。絕大多數(shù)情況下不使用該返回值。2023/10/778字符輸出函數(shù)putchar原型:int2023/10/879#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á)式2023/10/779#include<stdio.h>2023/10/880字符輸入函數(shù)getchar原型:intgetchar(void);參數(shù):無功能:從默認(rèn)的輸入設(shè)備(鍵盤)上接收用戶鍵入的一個(gè)字符,并把該字符作為函數(shù)值返回用法:ch=getchar();返回值:用戶從鍵盤鍵入的字符。絕大多數(shù)情況該字符都會(huì)被賦值給某個(gè)字符型或整型的變量,或者作為表達(dá)式的一部分參與其它的運(yùn)算。
注意:getchar函數(shù)只能接收并返回一個(gè)字符。執(zhí)行過程:當(dāng)程序運(yùn)行到包含有g(shù)etchar函數(shù)調(diào)用的語句時(shí),會(huì)暫時(shí)停下來,此時(shí)屏幕上有一個(gè)閃爍的光標(biāo),等待用戶從鍵盤上的輸入。用戶必須鍵入有關(guān)信息并按Enter鍵后程序才能繼續(xù)向下執(zhí)行。2023/10/780字符輸入函數(shù)getchar原型:int2023/10/881#include<stdio.h>intmain(){charch;ch=getchar();putchar(ch);return(0);}字符輸入函數(shù)getchar:例由于getchar函數(shù)要接收用戶從鍵盤輸入的字符,所以程序執(zhí)行流程到這兒會(huì)暫時(shí)停下來等待用戶的輸入。B↙(用戶鍵入字符B后,在打“回車”鍵)B(putchar函數(shù)再在屏幕上輸出一個(gè)字符B)運(yùn)行結(jié)果:當(dāng)用戶鍵入一個(gè)字符并按下Enter鍵后,該字符被getchar函數(shù)接收并作為函數(shù)值返回。此處,將這個(gè)返回值同時(shí)賦值給一個(gè)字符型的變量ch,保存起來以作后用。見習(xí)題P141頁712023/10/781#include<stdio.h>2023/10/882字符輸入函數(shù)getchar進(jìn)一步說明鍵盤輸入有1k以上的緩存空間,一次鍵盤輸入是以鍵入enter為結(jié)束。getchar等待鍵盤緩存空間中出現(xiàn)enter,當(dāng)其出現(xiàn)enter,getchar從鍵盤緩存空間中取一個(gè)字符返回。如果鍵盤緩存空間還有字符,下一個(gè)getchar就不再等待,立刻從鍵盤緩存空間中取一個(gè)字符返回。
#include"stdio.h"voidmain(){charc;inti=0;while(1){c=getchar();putchar(c);i++;if(i>1000)break;}}2023/10/782字符輸入函數(shù)getchar進(jìn)一步說明2023/10/8832.7.2格式輸入輸出函數(shù)
格式輸出函數(shù)printf
格式輸入函數(shù)scanf2023/10/7832.7.2格式輸入輸出函數(shù)格式輸2023/10/884格式輸出函數(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ù)情況下不使用該返回值。2023/10/784格式輸出函數(shù)printf原型:
in2023/10/885格式輸出函數(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ù)原樣輸出到顯示器上。通常用于說明輸出數(shù)據(jù)或給用戶有關(guān)的提示說明信息。⒉輸出數(shù)據(jù)列表:將要輸出的數(shù)據(jù),用逗號(hào)分隔??梢允浅A浚兞?、函數(shù)調(diào)用或任何合法的C表達(dá)式。2023/10/785格式輸出函數(shù)printf的參數(shù)prin2023/10/886intnum=15;printf(“Twice%dis%d.\n”,num,2*num);格式輸出函數(shù)printf的執(zhí)行過程Twice普通字符格式字符普通字符格式字符普通字符15is30._待輸出的數(shù)據(jù)2023/10/786intnum=15;print2023/10/887printf函數(shù)中的格式字符格式字符格式作用整型d,i格式化為有符號(hào)的十進(jìn)制整數(shù)u格式化為無符號(hào)的十進(jìn)制整數(shù)o格式化為無符號(hào)的八進(jìn)制整數(shù)x,X格式化為無符號(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格式中輸出寬度較短的一種格式,不輸出無意義的02023/10/787printf函數(shù)中的格式字符格式字符格2023/10/888printf函數(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ì)齊的)
在格式說明時(shí),還可以在%和上述格式字符之間插入以下幾種附加的格式字符(又叫修飾符)。%[附加格式字符]格式字符%[-][m][.n][l]格式字符2023/10/788printf函數(shù)中的附加格式字符附加格2023/10/889printf函數(shù)使用中的注意事項(xiàng)一定要分清哪些是格式字符,哪些是普通字符;同時(shí)也要注意區(qū)分普通字符中轉(zhuǎn)義字符常量。
%d%D%cf如果作為第一部分參數(shù)的字符串中,全部是普通字符,則具有輸出字符串的效果,這通常用于在程序運(yùn)行時(shí)給使用者有關(guān)提示信息,或?qū)敵鲂畔⒆饔嘘P(guān)的注釋和說明。
printf(“Welcometousethisprogram.\n”);printf(“ProgramAuthor:LiChangsong”);待輸出數(shù)據(jù)的個(gè)數(shù)不能少于格式說明字符的個(gè)數(shù);如果多于格式說明字符的個(gè)數(shù),則多出的數(shù)據(jù)不被輸出。
printf(“%d,%d,%c\n”,a,b,ch,d,e);用%%輸出一個(gè)%printf(“percent=%d%%\n”,percent);習(xí)題見P137頁31、42、58、2023/10/789printf函數(shù)使用中的注意事項(xiàng)一定要2023/10/890printf函數(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,655342023/10/790printf函數(shù)的使用:例#inclu2023/10/891printf函數(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+042023/10/791printf函數(shù)的使用:例#inclu2023/10/892printf函數(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:2023/10/792printf函數(shù)的使用:例#inclu2023/10/893格式輸入函數(shù)scanf
原型:
intscanf(constchar*format[,address,...]);
參數(shù):兩部分第一部分:為字符型常指針,大多數(shù)情況下都是字符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職數(shù)據(jù)錄入基礎(chǔ)(錄入基礎(chǔ))試題及答案
- 2025年大學(xué)第二學(xué)年(藥品生產(chǎn)技術(shù))制劑工藝模擬測(cè)試試題及答案
- 2025年中職航空服務(wù)(客艙服務(wù)基礎(chǔ))試題及答案
- 2025年高職(企業(yè)文化)文化建設(shè)專項(xiàng)測(cè)試試題及答案
- 2025年高職有色金屬冶煉技術(shù)(煙氣處理)試題及答案
- 摩西奶奶幼師培訓(xùn)課件
- 軟件框架開發(fā)技術(shù)(SSM)期末考試試卷(1)及答案
- 養(yǎng)老院老人生活照顧人員管理制度
- 養(yǎng)老院老人健康飲食營(yíng)養(yǎng)師培訓(xùn)制度
- 養(yǎng)老院入住老人健康監(jiān)測(cè)制度
- 中班美味蔬菜教學(xué)課件下載
- 2025外研社小學(xué)英語三年級(jí)下冊(cè)單詞表(帶音標(biāo))
- 2025年蘇州市事業(yè)單位招聘考試教師招聘體育學(xué)科專業(yè)知識(shí)試卷(秋季卷)
- 2025年村干部考公務(wù)員試題及答案筆試
- 行政事務(wù)處理員高級(jí)工工勤技師迎考測(cè)試題及答案-行政事務(wù)人員
- 老年照護(hù)初級(jí)理論知識(shí)考試試題庫及答案
- 保密工作臺(tái)帳(模板)
- 逐級(jí)消防安全責(zé)任制崗位消防安全責(zé)任制
- 兒童文學(xué)教程(第4版)課件 第一章 兒童文學(xué)的基本原理
- 高中物理教師個(gè)人總結(jié)
- 醫(yī)院智慧管理分級(jí)評(píng)估標(biāo)準(zhǔn)體系(試行)-全文及附表
評(píng)論
0/150
提交評(píng)論