C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型課件_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型課件_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型課件_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型課件_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型課件_第5頁(yè)
已閱讀5頁(yè),還剩34頁(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)介

高級(jí)語(yǔ)言程序設(shè)計(jì)

2023/7/241概況1

您的內(nèi)容打在這里,或者通過(guò)復(fù)制您的文本后。概況2

您的內(nèi)容打在這里,或者通過(guò)復(fù)制您的文本后。概況3

您的內(nèi)容打在這里,或者通過(guò)復(fù)制您的文本后。+++整體概況第二章基本數(shù)據(jù)類型主講:計(jì)算機(jī)學(xué)院朱立華內(nèi)容提要C語(yǔ)言的數(shù)據(jù)類型——存儲(chǔ)與處理的整體體現(xiàn)常量與變量的概念、區(qū)別基本類型之整型、字符型、實(shí)型:常量在源程序中的表示形式及取值范圍常量在內(nèi)存中的存儲(chǔ)格式變量的定義及值的獲取對(duì)該類型提供的基本操作C源程序的基本結(jié)構(gòu)及程序中的6種基本符號(hào)輸入/輸出控制2023/7/244C語(yǔ)言的數(shù)據(jù)類型

計(jì)算機(jī)處理存儲(chǔ)的數(shù)據(jù),存儲(chǔ)是為了處理,處理依賴于存儲(chǔ)數(shù)據(jù)存儲(chǔ)兩要素:存儲(chǔ)空間的大小,數(shù)據(jù)的存儲(chǔ)格式數(shù)據(jù)的處理主要是指對(duì)數(shù)據(jù)可以實(shí)施的最基本操作C語(yǔ)言通過(guò)數(shù)據(jù)類型體現(xiàn)存儲(chǔ)與處理的統(tǒng)一因此,C語(yǔ)言的每一種數(shù)據(jù)類型,掌握以下幾方面:該類型數(shù)據(jù)占多少字節(jié)

該類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式對(duì)該類型的數(shù)據(jù)提供哪些基本操作該類型數(shù)據(jù)的取值范圍2023/7/245C語(yǔ)言的數(shù)據(jù)類型

基本整型(int)長(zhǎng)類型(long)數(shù)據(jù)類型基本類型短類型(short)無(wú)符號(hào)整型(unsigned)整型實(shí)型(浮點(diǎn)型)單精度實(shí)型(float)雙精度實(shí)型(double)字符型(char)枚舉型共同體類型數(shù)組類型結(jié)構(gòu)體類型構(gòu)造類型指針類型空類型(void)2023/7/246常量與變量無(wú)論何種類型的數(shù)據(jù),在程序運(yùn)行過(guò)程中,其存儲(chǔ)空間中的內(nèi)容有兩種狀態(tài):可以變化和不可以變化,對(duì)應(yīng)于變量與常量。

變量:存儲(chǔ)空間中的數(shù)據(jù)可以被修改,這個(gè)空間就稱為變量空間,簡(jiǎn)稱變量。常量:存儲(chǔ)空間中的數(shù)據(jù)不能被修改,這個(gè)空間就稱為常量空間,簡(jiǎn)稱常量(有字面常量和符號(hào)常量?jī)煞N)

無(wú)論是變量還是常量,都需要一個(gè)名稱,在程序中代表相應(yīng)的存儲(chǔ)空間中的內(nèi)容。變量名需要定義,而字面常量名無(wú)需定義,直接用字面常量值(有時(shí)后面再加特定后綴)表示。

2023/7/247常量與變量變量名的定義:數(shù)據(jù)類型名 變量名1[,變量名2,變量名3,…,變量名n];例1:inta;例2:intx,y,z;在變量名定義之后,系統(tǒng)根據(jù)其類型為變量分配了一定大小的內(nèi)存空間,該內(nèi)存空間中是隨機(jī)數(shù),要使變量有確切值,可以通過(guò)下列3種方式之一:賦值:先定義變量,再用賦值號(hào)“=”進(jìn)行賦值初始化:在定義變量的同時(shí)指定初值讀入:先定義變量,再?gòu)逆I盤(pán)或文件提供數(shù)據(jù)必須以分號(hào)結(jié)束[]中的內(nèi)容為可選項(xiàng),可能沒(méi)有同一類型定義多個(gè)變量時(shí),變量間以逗號(hào)隔開(kāi)變量名必須是用戶自定義標(biāo)識(shí)符定義一個(gè)整型變量,變量名為a定義3個(gè)整型變量,彼此逗號(hào)隔開(kāi)2023/7/2483.1416F52388L常量與變量intm;m=345;longn=52388L;

doublex=3.1416;floaty=3.1416F;charch='A';?m345345345定義變量賦值初始化n5238852388x3.14163.14163.14163.1416y3.1416初始化初始化3.1416初始化‘A’chAA總結(jié):以上例子中,白字代表變量名,黃字代表常量名,綠框代表變量空間,紅框代表常量空間在程序中變量以變量名的形式出現(xiàn),代表的是變量空間中的內(nèi)容,變量名需要定義;字面常量以(字面)常量名的形式出現(xiàn),代表的是字面常量空間中的內(nèi)容,字面常量名無(wú)需定義,其真正代表的常量是不帶后綴等標(biāo)識(shí)的。2023/7/249常量與變量程序2.1 常量空間與變量空間操作示例#include<stdio.h> intmain(){

intm,n; n=125; m=n;printf("Theresultis:\n");printf("%d,%d,%d\n",n,m,125); printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125)); printf("%x,%x\n",&n,&m);

return0;}

通過(guò)本程序,介紹下面3方面知識(shí):(1)C語(yǔ)言源程序的結(jié)構(gòu)(2)C語(yǔ)言源程序中的6種符號(hào)(3)輸出函數(shù)printf的使用<運(yùn)行結(jié)果>Theresultis:125,125,1254,4,412ff78,12ff7

動(dòng)態(tài)演示過(guò)程2023/7/2410C語(yǔ)言源程序的結(jié)構(gòu)C語(yǔ)言的源程序可以由一個(gè)或多個(gè)文件組成每個(gè)文件可由一個(gè)或多個(gè)函數(shù)組成,函數(shù)是組成C程序的基本單位

程序必須有且只有一個(gè)main函數(shù),是系統(tǒng)調(diào)用應(yīng)用程序的起點(diǎn)函數(shù)由函數(shù)頭和函數(shù)體兩部分組成函數(shù)頭3要素:返回類型函數(shù)名(形參表)函數(shù)體:由一對(duì)大括號(hào)括起,內(nèi)含0或多條語(yǔ)句語(yǔ)句必須由分號(hào)結(jié)束源程序中可以有注釋(不參加編譯):/*…*/或//…2023/7/2411#include<stdio.h> intmain(){//以左大括號(hào)表示主函數(shù)體開(kāi)始

intm,n; n=125; m=n;printf("Theresultis:\n");printf("%d,%d,%d\n",n,m,125); printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125));printf("%x,%x\n",&n,&m);

return0;}

//以左大括號(hào)表示主函數(shù)體開(kāi)始

函數(shù)頭函數(shù)體函數(shù)返回類型函數(shù)名形參表,此時(shí)無(wú)形參定義兩個(gè)整型變量賦值,將常量賦給變量賦值,用有確定值的變量賦給另一個(gè)變量輸出提示信息輸出變量和常量的值輸出變量和常量所占字節(jié)大小C語(yǔ)言中的一個(gè)運(yùn)算符,計(jì)算數(shù)據(jù)所占字節(jié)大小的,參數(shù)可以是常量、變量、表達(dá)式、類型名以十六進(jìn)制形式輸出變量在內(nèi)存中的起始地址返回調(diào)用點(diǎn),結(jié)束程序文件包含,此文件中有printf函數(shù)的原型/*程序2.1常量空間與變量空間操作示例,這是一個(gè)單文件的程序,文件名:li2_1.c*/多行注釋形式單行注釋形式單行注釋形式2023/7/2412C語(yǔ)言源程序中的6種符號(hào)(1)關(guān)鍵字(Keyword):C語(yǔ)言中預(yù)先規(guī)定的具有固定功能和意義的單詞或單詞的縮寫(xiě),32個(gè)都有特定意義,用法固定(2)標(biāo)識(shí)符(identifier):以字母或下劃線開(kāi)頭,后面跟字母、數(shù)字、下劃線的任意序列。標(biāo)識(shí)符又分為系統(tǒng)預(yù)定義標(biāo)識(shí)符和用戶自定義標(biāo)識(shí)符兩種。(標(biāo)識(shí)符中的大小寫(xiě)字母有區(qū)別)(3)運(yùn)算符(operator):C語(yǔ)言提供了34個(gè)運(yùn)算符,分為15個(gè)不同的優(yōu)先級(jí),完成不同的運(yùn)算功能(4)分隔符(separator):相鄰的關(guān)鍵字、標(biāo)識(shí)符之間必須使用分隔符,不同場(chǎng)合選用:空格、回車/換行、逗號(hào)、分號(hào)

(5)其它符號(hào):有一些有特定含義的其它符號(hào):{}、//、/**/(6)數(shù)據(jù)(data):各種類型的字面值常量

不可以用關(guān)鍵字,最好也不用系統(tǒng)預(yù)定義標(biāo)識(shí)符2023/7/2413#include<stdio.h> intmain(){//以左大括號(hào)表示主函數(shù)體開(kāi)始

intm,n; n=125; m=n;printf("Theresultis:\n");printf("%d,%d,%d\n",n,m,125); printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125));printf("%x,%x\n",&n,&m);

return0;}

//以左大括號(hào)表示主函數(shù)體開(kāi)始

/*程序2.1常量空間與變量空間操作示例,這是一個(gè)單文件的程序,文件名:li2_1.c*/系統(tǒng)預(yù)定義標(biāo)識(shí)符用戶自定義標(biāo)識(shí)符關(guān)鍵字逗號(hào),分隔一條語(yǔ)句中的并列成分分號(hào),用于語(yǔ)句結(jié)束后,分隔相鄰語(yǔ)句空格,用于相鄰關(guān)鍵字、標(biāo)識(shí)符之間,不可用其他分隔符時(shí)其他符號(hào)常量運(yùn)算符2023/7/2414C程序通過(guò)格式輸出函數(shù)printf輸出任何類型的數(shù)據(jù)printf函數(shù)的調(diào)用形式:printf(格式控制字符串

[,輸出參數(shù)1,輸出參數(shù)2,……,輸出參數(shù)n]);printf("Theresultis:\n");

printf("%d,%d,%d\n",n,m,125);

printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125));printf("%x,%x\n",&n,&m);printf(“%x,%x,%x\n”,&n,&m,&125);X小結(jié):每一種類型的數(shù)據(jù)都有特定的格式轉(zhuǎn)換說(shuō)明符控制其輸出格式,具體請(qǐng)參考附錄I,在以后的使用中逐步熟悉輸出函數(shù)printf的使用該函數(shù)原型在stdio.h頭文件中,因此要用#include<stdio.h>文件包含命令用雙引號(hào)括起來(lái)的字符串

,其中的普通字符原樣輸出,格式轉(zhuǎn)換說(shuō)明符以%開(kāi)頭后跟一個(gè)字母,控制不同類型數(shù)據(jù)特定的輸出格式輸出參數(shù)可以是常量、變量、表達(dá)式,個(gè)數(shù)取決于格式控制串中格式轉(zhuǎn)換說(shuō)明符的個(gè)數(shù),按從左到右的順序一一對(duì)應(yīng)格式?jīng)]有格式轉(zhuǎn)換說(shuō)明符,原樣輸出所有字符輸出結(jié)果:Theresultis:有3個(gè)格式轉(zhuǎn)換說(shuō)明符依次控制后面的3個(gè)參數(shù),按十進(jìn)制整數(shù)格式輸出,3個(gè)普通字符原樣輸出輸出結(jié)果:125,125,125輸出結(jié)果:4,4,4有兩個(gè)格式轉(zhuǎn)換說(shuō)明符依次控制后面的2個(gè)參數(shù),按十六進(jìn)制整數(shù)格式輸出,兩個(gè)普通字符原樣輸出獲取變量的起始地址值輸出結(jié)果:12ff78,12ff7c對(duì)常量不能取地址2023/7/2415整型的種類數(shù)據(jù)類型名稱類型全稱

類型簡(jiǎn)稱占字節(jié)數(shù)

取值范圍有符號(hào)基本整型signedintint2或4?取決于編譯器有符號(hào)短整型signedshortintshort2-216-1~216-1-1有符號(hào)長(zhǎng)整型signedlongintlong4-232-1~232-1-1無(wú)符號(hào)基本整型unsignedintunsigned2或4?取決于編譯器無(wú)符號(hào)短整型unsignedshortintunsignedshort20~216-1無(wú)符號(hào)長(zhǎng)整型unsignedlongintunsignedlong40~232-1整型:C語(yǔ)言中最常用最基本的類型。根據(jù)整型數(shù)據(jù)所占內(nèi)存空間大小分為:short、int、long根據(jù)二進(jìn)制數(shù)最高位的意義分為:signed、unsigned綜合考慮兩方面因素,共有6種整型,如下表所示:2字節(jié)2或4字節(jié)4字節(jié)最高位0表示正數(shù),1表示負(fù)數(shù)最高位0或1表示數(shù)值本身,不表示正負(fù)號(hào)2023/7/2416在C語(yǔ)言源程序中,可以用十進(jìn)制、八進(jìn)制、十六進(jìn)制這三種制式的數(shù)來(lái)表示各種類型的整型字面值常量形式:例:十進(jìn)制整數(shù):12、-91、-12L、93U、123Lu、902LU八進(jìn)制整數(shù):012、-071、-016L、072U、016LU、072lu、十六進(jìn)制整數(shù):0XA2、-0X9C3、-0X16L、0x1AU、0X2fLuN進(jìn)制數(shù)轉(zhuǎn)為十進(jìn)制數(shù)的方法:每一位的位值乘以位權(quán)再求和十進(jìn)制數(shù)轉(zhuǎn)為N進(jìn)制數(shù)的方法:除以N取余,本次商作為下一次被除數(shù),再除以N取余,直到被除數(shù)為0,所求余數(shù)按相反順序輸出例:072=7*8+2=58

7整型字面值常量的表示

正號(hào)+可以缺省,負(fù)號(hào)-必須要有符號(hào)位制式前綴該進(jìn)制數(shù)字(字母)序列后綴十進(jìn)制數(shù)無(wú)前綴八進(jìn)制數(shù)有前綴0十六進(jìn)制數(shù)有前綴0x(0X)十進(jìn)制數(shù)字:0~9八進(jìn)制數(shù)字:0~7十六進(jìn)制數(shù)字加字母:0~9、A~F(或a~f)長(zhǎng)整型后綴L(或l)無(wú)符號(hào)數(shù)后綴U(或u)所以:58=07258870282023/7/2417剛才講到的三種進(jìn)制表示整型值是在C源程序中的,無(wú)論何種制式經(jīng)編譯后都以二進(jìn)制數(shù)的形式存在于內(nèi)存中整數(shù)的二進(jìn)制數(shù)有3種編碼方式:原碼、反碼、補(bǔ)碼,為了將減法統(tǒng)一到加法運(yùn)算中,一般用補(bǔ)碼形式。正數(shù):原碼、反碼、補(bǔ)碼形式統(tǒng)一,最高位為0表示是正數(shù),余下的二進(jìn)制碼是其等效二進(jìn)制表示例:short型常量97轉(zhuǎn)換為二進(jìn)制數(shù)為:1100001,則其原碼、反碼、補(bǔ)碼為:負(fù)數(shù)的原碼:最高位為1,其余位與其相反數(shù)相同

負(fù)數(shù)的反碼:最高位為1,其余位是其原碼各位取反負(fù)數(shù)的補(bǔ)碼:最高位為1,其余位是其反碼最低位加1整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式-97的原碼1000000001100001-97的反碼1111111110011110-97的補(bǔ)碼100000000011000010的原碼有兩種形式:000000000000000010000000000000000的反碼有兩種形式:000000000000000011111111111111110的補(bǔ)碼只有一種形式:00000000000000002023/7/2418同一個(gè)二進(jìn)制序列,當(dāng)表示的整數(shù)是有符號(hào)數(shù)時(shí),最高位代表正負(fù)性質(zhì),而不作為值計(jì)算;當(dāng)表示的整數(shù)是無(wú)符號(hào)數(shù)時(shí),最高位就是數(shù)值本身,這時(shí)沒(méi)有負(fù)數(shù)。例:1000000000000000不同整數(shù)類型的數(shù)據(jù)范圍由數(shù)據(jù)所占的字節(jié)數(shù)以及是否為有符號(hào)數(shù)來(lái)決定。例:short的范圍:-215~215-1,1000000000000000~0111111111111111unsignedshort的范圍:0~216-1,0000000000000000~1111111111111111整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式當(dāng)表示無(wú)符號(hào)數(shù)時(shí),此位代表數(shù)值本身,即215=32768當(dāng)表示有符號(hào)數(shù)時(shí),此位代表負(fù)數(shù)。其絕對(duì)值為后面各位取反再加1,得到:1000000000000000,即215=32768,因此該數(shù)的值為:-327682023/7/2419整型變量的定義及值的獲取變量定義實(shí)質(zhì)上是為數(shù)據(jù)創(chuàng)建變量空間,需要指明類型和空間的名稱即變量名。C語(yǔ)言通過(guò)定義語(yǔ)句來(lái)完成這項(xiàng)工作。例:inta,b;shortc;unsignedlongx,y;變量值的獲取仍是通過(guò)三種方式之一:初始化、賦值、讀入。前兩種已介紹過(guò),讀入方式可以使變量在運(yùn)行時(shí)根據(jù)用戶的需要獲得相應(yīng)的值,比較靈活。scanf的調(diào)用:scanf(格式控制字符串,地址1[,地址2,…]);例:scanf(“%d%d”,&a,&b);scanf("%2d%3d%4d",&a,&b,&c);

scanf("%d,%d,%d",&a,&b,&c);

需熟悉的格式轉(zhuǎn)換說(shuō)明符:%d(%i)、%c、%f(%e)、%lf、%s該函數(shù)原型定義在頭文件stdio.h中,因此要作文件包含:#include<stdio.h>究竟有幾個(gè)地址取決于格式控制串中有幾個(gè)格式轉(zhuǎn)換說(shuō)明符,依從左到右順序一一對(duì)應(yīng)控制格式控制字符串包含格式轉(zhuǎn)換說(shuō)明符和輸入分隔符,格式轉(zhuǎn)換說(shuō)明符的意思和用法與printf函數(shù)中基本一致,輸入分隔符需要原樣輸入,建議用默認(rèn)的空白符來(lái)分隔,減少差錯(cuò)使用空白符(空格、Tab、回車分隔數(shù)據(jù),輸入:1234<回車>,則a和b的值分別為12和34,建議使用這種形式輸入按指定寬度輸入數(shù)據(jù),輸入:123456789<回車>,則a、b、c的值分別為12、345、6789按指定分隔符輸入數(shù)據(jù),輸入:12,3456,78<回車>,則a、b、c的值分別為12、3456、782023/7/2420對(duì)整型數(shù)據(jù)的基本操作對(duì)整型數(shù)據(jù),C語(yǔ)言提供了多種運(yùn)算:算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、位運(yùn)算等,下一章詳細(xì)介紹算術(shù)運(yùn)算中:%---取余,只能是兩個(gè)整數(shù)運(yùn)算,結(jié)果為整數(shù)/---除法,如果兩個(gè)整數(shù)相除,得到整數(shù)商,正負(fù)號(hào)同被除數(shù)程序2.2

分別求出一個(gè)3位整數(shù)的各個(gè)數(shù)位上的值,然后按逆序輸出。分析:利用整數(shù)的取余運(yùn)算和除法運(yùn)算,求得3位數(shù)n的每1位上的數(shù)字,先求個(gè)位,再求十位,最后求百位。如果每求得一個(gè)數(shù)字就輸出1個(gè),則只要用同一個(gè)變量存當(dāng)前位數(shù)字就可以了求百位:n/100求十位:n%100/10或n/10%10求個(gè)位:n%102023/7/2421對(duì)整型數(shù)據(jù)的基本操作#include<stdio.h>intmain(){ inti,n;//定義兩個(gè)整型變量i,n,變量先定義后使用n=578;//通過(guò)賦值語(yǔ)句使n獲得一個(gè)3位整數(shù)值

i=n%10; //對(duì)10取余求得個(gè)位數(shù)

printf("%d",i);//輸出個(gè)位數(shù)

i=n/10%10; //先整除10再對(duì)10取余求得十位數(shù)

printf("%d",i);//輸出十位數(shù)

i=n/100; //用整除100求得百位數(shù)

printf("%d\n",i);//輸出百位數(shù)

return0;} <運(yùn)行結(jié)果>875動(dòng)態(tài)演示過(guò)程2023/7/2422★對(duì)整型的總結(jié)整型有6種具體的類型:int、short、long、unsignedint、unsignedshort、unsignedlong,明確其長(zhǎng)短及是否有符號(hào).整型字面值常量在C源程序中有十進(jìn)制、八進(jìn)制、十六進(jìn)制表示在內(nèi)存中,整數(shù)的二進(jìn)制數(shù)以補(bǔ)碼形式存儲(chǔ),注意最高位在表示無(wú)符號(hào)數(shù)和有符號(hào)數(shù)時(shí)的區(qū)別獲取整型變量值通過(guò)初始化、賦值、讀入3種方式之一讀入調(diào)用scanf函數(shù),注意格式轉(zhuǎn)換字符的正確使用,必須對(duì)變量取地址,盡量不用或少用分隔字符對(duì)整型數(shù)提供多種基本運(yùn)算,注意除和取余的用法2023/7/2423字符型字面值常量的表示C語(yǔ)言中采用ASCII字符集中的字符表示字符型字面值常量,每個(gè)字符對(duì)應(yīng)一個(gè)唯一的整數(shù)編碼,占1字節(jié)在C語(yǔ)言源程序中,字符字面值常量需要用一對(duì)單引號(hào)作為定界符將字符值括起,有兩種表示方法:(1)用單引號(hào)括起的一個(gè)字符,例如:’A’、’9’、’%’。(2)用單引號(hào)括起的以反斜杠開(kāi)頭的轉(zhuǎn)義字符,例如:’\n’、’\a’、’\t’、’\\’、’\’’、’\”’兩種通用的轉(zhuǎn)義字符表示:(1)’\ddd’:1到3位八進(jìn)制數(shù)所代表的字符(2)’\xhh’:1到2位十六進(jìn)制數(shù)所代表的字符例如字符A常量就有3種等效的表示:’A’、’\101’和’\x41’

例如換行符有3種等效的表示:’\n’、’\12’和’\xA’這種表示通常用于可見(jiàn)字符

這種表示通常用于控制字符??刂谱址豢芍苯语@示,而是起特定的控制作用

可以用來(lái)表示任何字符,實(shí)際上是用該字符ASCII碼的八進(jìn)制和十六進(jìn)制數(shù)來(lái)表示

2023/7/2424字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式128個(gè)標(biāo)準(zhǔn)字符和數(shù)值0~127一一對(duì)應(yīng),這種對(duì)應(yīng)使字符型數(shù)據(jù)在內(nèi)存中以1字節(jié)的整數(shù)二進(jìn)制形式存儲(chǔ)因此在C語(yǔ)言中,字符型數(shù)據(jù)可以當(dāng)作整型數(shù)據(jù)使用,而0~127之間的整數(shù)也可以當(dāng)作字符數(shù)據(jù)使用需要熟記的幾個(gè)字符的ASCII碼:‘A’----65,其他的大寫(xiě)字母字符依序增加,例:‘E’---69‘a(chǎn)’----97,其他的小寫(xiě)字母字符依序增加,例:‘f’---102‘0’----48,其他的數(shù)字字符依序增加,例:‘7’---55‘‘----32,空格字符的ASCII碼為32熟練掌握以下兩組轉(zhuǎn)換關(guān)系:對(duì)應(yīng)大小寫(xiě)字母字符的轉(zhuǎn)換:小寫(xiě)字母-32=大寫(xiě)字母對(duì)應(yīng)數(shù)字字符與整數(shù)數(shù)字的轉(zhuǎn)換:數(shù)字字符-48=整數(shù)數(shù)字例:’B’+32=’b’’d’-32=’D’例:’8’-48=8或’8’-’0’=8;8+48=’8’或8+’0’=’8’2023/7/2425字符變量的定義及獲得值字符類型的關(guān)鍵字為:char,定義字符變量的格式:char字符變量名1[

,字符變量名2,…];字符變量也用初始化、賦值、讀入這3種方式獲得值初始化:charc1=‘A’,c2=98;賦值:charc3;c3=‘N’;

讀入:scanf(“%c”,&c3);//從鍵盤(pán)輸入時(shí)不能輸入定界符字符值的輸出:用printf輸出時(shí),格式轉(zhuǎn)換字符如果是%c,則輸出字符形式,格式轉(zhuǎn)換符如果是%d,則輸出其對(duì)應(yīng)的ASCII碼(整數(shù))專用于字符型數(shù)據(jù)輸入輸出的兩個(gè)函數(shù):輸入單個(gè)字符:getchar();例:c3=getchar();getchar();輸出單個(gè)字符值:putchar(字符值);例:putchar(65);putchar(‘D’);putchar(‘\n’);putchar(‘A’+35);必須用%c作為格式轉(zhuǎn)換控制符必須對(duì)字符變量取地址調(diào)用形式1:字符變量=getchar();將鍵盤(pán)輸入的一個(gè)字符存入變量中調(diào)用形式2:getchar();從鍵盤(pán)輸入的一個(gè)字符不賦給任何變量可以用字符的ASCII碼作為參數(shù)可以用普通字符作為參數(shù)可以用轉(zhuǎn)義字符作為參數(shù)可以用字符表達(dá)式作為參數(shù)作為字面值常量的字符一定要用定界符,這是為了區(qū)別于標(biāo)識(shí)符或整數(shù)。例如:’A’與A,’9’與92023/7/2426字符處理程序舉例程序2.3:字符常量與字符變量的定義及賦值。#include<stdio.h>intmain(){ charch1,ch2,ch3,ch4,ch5,ch6; ch1='N'; //直接用字符常量賦值

ch2=78; //用字符N的十進(jìn)制代碼賦值

ch3=0x4e; //用字符N的十六進(jìn)制代碼賦值

ch4=0116; //用字符N的八進(jìn)制代碼賦值

ch5='\x4e'; //用十六進(jìn)制整數(shù)代表的轉(zhuǎn)義字符賦值

ch6='\116'; //用八進(jìn)制整數(shù)代表的轉(zhuǎn)義字符賦值

printf(“%c\t%c\t%c\t\n”,ch1,ch2,ch3);//按水平制表格式輸出字符

printf("\a"); //轉(zhuǎn)義字符\a代表一聲鈴響

printf(“%c\t%c\t%c\t\n”,ch4,ch5,ch6);//按平制表格式輸出字符

printf("\a"); //轉(zhuǎn)義字符\a代表一聲鈴響

return0;}<運(yùn)行結(jié)果>NNNNNN動(dòng)態(tài)演示過(guò)程2023/7/2427字符處理程序舉例程序2.4:大小寫(xiě)字母的轉(zhuǎn)換、字符的輸入與輸出示例

#include<stdio.h>intmain(){ charch1,ch2; scanf(“%c”,&ch1);//從鍵盤(pán)上輸入一個(gè)大寫(xiě)字符

ch2=ch1+32;

//ch2的值為小寫(xiě)字符a

printf("%c,%c\n",ch1,ch2);//顯示字符輸出格式:%c按字符形式輸出printf("%d,%d\n",ch1,ch2);//顯示字符代碼%d按十進(jìn)制形式輸出ch1=102; //ch1的值賦值為fch2=ch1-32; //ch2的值賦值為Fprintf("%c,%c\n",ch1,ch2);//顯示字符 printf("%d,%d\n",ch1,ch2);//顯示字符代碼

return0;}如果從鍵盤(pán)輸入:A則輸出結(jié)果為:A,a65,97f,F102,70ch1=getchar();putchar(ch1);putchar(ch2);putchar(‘\n’);putchar(ch1);putchar(ch2);putchar(‘\n’);動(dòng)態(tài)演示過(guò)程2023/7/2428實(shí)型的種類數(shù)據(jù)類型名稱類型全稱占字節(jié)有效數(shù)字絕對(duì)值范圍單精度浮點(diǎn)型float47位3.4E-38~3.4E+38雙精度浮點(diǎn)型double816位1.7E-308~1.7e+308長(zhǎng)精度浮點(diǎn)型longdouble816位1.7E-308~1.7e+308實(shí)型:也稱浮點(diǎn)型,是C語(yǔ)言中常用的基本類型。根據(jù)實(shí)型數(shù)據(jù)精度以及所占字節(jié)數(shù)的不同,劃分為單精度浮點(diǎn)型、雙精度浮點(diǎn)型和長(zhǎng)精度浮點(diǎn)型。如下表所示:在不同的編譯器中占用字節(jié)數(shù)不一定相同,不少于double類型是基本原則,在gcc中占12字節(jié)2023/7/2429在C語(yǔ)言源程序中,只能用十進(jìn)制實(shí)數(shù)來(lái)表示實(shí)型字面值常量具體有兩種形式:(1)小數(shù)形式的實(shí)數(shù),形式:(2)指數(shù)形式的實(shí)數(shù),形式:例:合法的實(shí)數(shù):0.0、.25、6.、0.23、-23.41、314.159F-123e3、.123e6、123.e-3、3.14159E2L

非法的實(shí)數(shù):1,23.4、-12、23.4D、E90、12E4.5、1E400

實(shí)型字面值常量的表示

正號(hào)+可以缺省,負(fù)號(hào)-必須要有符號(hào)位0~9數(shù)字序列小數(shù)點(diǎn)后綴十進(jìn)制整數(shù),可以缺省,但是小數(shù)點(diǎn)左右兩邊不能同時(shí)缺省float型后綴F(或f)Double型無(wú)后綴longdouble型后綴L(或l)0~9數(shù)字序列必須有,不可缺省十進(jìn)制整數(shù),可以缺省,但是小數(shù)點(diǎn)左右兩邊不能同時(shí)缺省十進(jìn)制整數(shù)或小數(shù)形式的實(shí)數(shù)E(或e)十進(jìn)制整數(shù)尾數(shù)部分,不可缺省必須有,不可缺省指數(shù)部分,不可缺省,注意范圍,只能是整數(shù),表示乘以10的多少次方后綴float型后綴F(或f)Double型無(wú)后綴longdouble型后綴L(或l)2023/7/2430剛才講到的小數(shù)形式和指數(shù)形式表示實(shí)型值是在C源程序中的,無(wú)論何種形式經(jīng)編譯后都以二進(jìn)制數(shù)的形式存在于內(nèi)存中。此時(shí)的二進(jìn)制序列必須包含有兩個(gè)信息——實(shí)數(shù)的尾數(shù)、指數(shù),也就是說(shuō),尾數(shù)和指數(shù)都需要占用一定的存儲(chǔ)空間。不同的實(shí)型所占存儲(chǔ)空間大小不同,分配給這兩部分的比例也不一樣,于是有了精度與范圍上的差別。實(shí)型數(shù)在內(nèi)存的存儲(chǔ)格式示意(忽略每一部分具體二進(jìn)制位數(shù))例:-111.1101B

在內(nèi)存中的存儲(chǔ)形式,先轉(zhuǎn)化成:-0.1111101B×211B(保證尾數(shù)的小數(shù)點(diǎn)后第一位非0)實(shí)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式階符階碼的數(shù)值尾符尾數(shù)的數(shù)值階碼(指數(shù))尾數(shù)01111111101階碼(指數(shù))尾數(shù)2023/7/2431實(shí)型變量的定義及獲得值實(shí)數(shù)類型的關(guān)鍵字為:float、double、longdouble,定義字符變量的格式:實(shí)數(shù)類型關(guān)鍵字

實(shí)型變量名1[

,字符變量名2,…];實(shí)型變量也用初始化、賦值、讀入這3種方式獲得值初始化:doubled1=23.3,d2=9.8E5;賦值:floatf;f=23.4F;

讀入:scanf(“%f”,&f);//float型變量用格式控制字符f

scanf(“%lf”,&d1);//double型變量用格式控制字符lf讀入時(shí)可以控制總寬度,但是不能控制精度實(shí)型值的輸出:用printf輸出時(shí),無(wú)論何種實(shí)型均可以使用格式轉(zhuǎn)換字符%f,即使是double型的值也不必使用%lf,與讀入不同2023/7/2432對(duì)實(shí)型數(shù)據(jù)的基本操作對(duì)實(shí)型數(shù)據(jù),C語(yǔ)言提供了多種運(yùn)算:算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算等,下一章詳細(xì)介紹。算術(shù)運(yùn)算中:%---取余,不能用于實(shí)型數(shù)求解/---除法,如果兩個(gè)相除的數(shù)中有一個(gè)實(shí)型數(shù),則得到實(shí)數(shù)商,正負(fù)號(hào)同被除數(shù)例:5/2=2、5.0/2.0=2.5、5.0/2=2.52023/7/2433基本類型數(shù)據(jù)的輸入/輸出示例

#include<stdio.h>intmain(void){ doubled; //定義一個(gè)double型的變量

floatf1=3.14F,f2;//初始化float型變量f1

intx;//定義一個(gè)int型的變量

charch;//定義一個(gè)char型的變量

f2=-90.5f;//用賦值的方法使變量f2

溫馨提示

  • 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)論