




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計(jì)基礎(chǔ) 2007.9 第三講 數(shù)據(jù)類型與關(guān)系運(yùn)算 本講內(nèi)容 ?再說數(shù)據(jù)與數(shù)據(jù)類型 ?字節(jié)與字 ?各類數(shù)據(jù)變量的二進(jìn)制表示方法 ?字符與字符串?dāng)?shù)與數(shù)組初步 ?簡單的例子 ?float與double的區(qū)別 ?基本的關(guān)系運(yùn)算表達(dá)式 ?結(jié)構(gòu)體的概念-數(shù)據(jù)封裝 為什么要區(qū)分?jǐn)?shù)據(jù)類型? ?程序中能否用一種數(shù)據(jù)類型描述所有的數(shù)據(jù)? ?這個(gè)問題對于數(shù)值計(jì)算來說,好像還有道理,比如實(shí)數(shù)型的數(shù)據(jù)也可以表示整數(shù)。 ?但對于計(jì)算機(jī)要處理的文字信息來說,就顯然不合適了。比如,英文字母、漢字可以用多大、是正數(shù)還是負(fù)數(shù)的實(shí)數(shù)型數(shù)據(jù)來描述? ?數(shù)據(jù)類型的劃分,代表了程序適應(yīng)各種商業(yè)處理用途的能力。比如時(shí)間類型、錢
2、幣數(shù)據(jù)類型等。 二進(jìn)制碼與變量類型 字節(jié)是構(gòu)成各?計(jì)算機(jī)內(nèi)部用二進(jìn)制碼表示所有的信息. 種數(shù)據(jù)類型的基本單元 不同的二進(jìn)制碼形式,表示不同的變量類型. 二進(jìn)制碼,就是每個(gè)數(shù)位的值非零即一,沒有第三種狀態(tài). 8位是一個(gè)字節(jié) 非零即一,只有兩種狀態(tài) 位數(shù) 數(shù)值 7 6 0 1 5 0 4 0 3 0 2 0 1 0 0 1 高8位字節(jié) 2個(gè)字節(jié)組成一個(gè)字 4 低8位字節(jié) 3 2 1 0 Bit 15 14 13 12 11 10 9 8 7 6 5 數(shù)值 表2.3 C數(shù)據(jù)類型關(guān)鍵字 三種常用類型變量 K&R關(guān)鍵字 int long short Unsigned char C90關(guān)鍵字 C9
3、9關(guān)鍵字 數(shù)據(jù)類型 整型變量 長整型變量 短整型變量 字節(jié)數(shù) 2 4 1 2 1 用它描述大于int數(shù)據(jù)范圍的整型變量 無符號數(shù) 字符型變量 float double signed void 浮點(diǎn)型變量 雙精度浮點(diǎn)數(shù) 有符號數(shù) 空類型 _Bool 布爾型變量 4 8 用它描述大于float數(shù)據(jù)范圍的浮點(diǎn)變量 1 _Complex _imaginary 復(fù)數(shù) 虛數(shù) 簡單的例子 #include 變量名字含義說明了一個(gè)圓要清晰,見名#include #include 周率常數(shù) 知意。大小寫#define PI 3.1415926 代表不同名字int main(void) 的變量。 分別定義了一個(gè)c
4、har ch_a; /定義字符變量 字符變量、整數(shù)int i_pi; /定義整數(shù)變量 變量和實(shí)數(shù)變量. float f_pi; /定義實(shí)數(shù)變量 ch_a=A;i_pi=PI;f_pi=PI; coutan example of outputendl;/提示 coutch_a; i_pi; f_pi;name; #include #include #include #include int main(void) 字符串在初始化時(shí)置入s1 輸入字符串char s120=; 中,如果有char s220,s320; 運(yùn)行時(shí)用庫函數(shù)strcpy(),將 空格怎么辦?strcpy(s2,lwz); 字符
5、串”lwz” 送入數(shù)組s2 coutinput of s3:s3; 運(yùn)行時(shí)從鍵盤輸入字符串到s3 couts1=s1endl; couts2=s2endl; couts3=s3endl; getch(); 分別輸出各個(gè)字符串 return(0); C語言的輸入輸出函數(shù) 輸入字符串中不能有空格 既可輸入字符也可輸入數(shù)值 緩沖型 input cin 非緩沖型 混合型:scanf() 輸入一個(gè)字符 getchar() gets() 字符型 回顯在屏幕上 getche() getch() 屏幕上不回顯 輸入一個(gè)字符串,可以有空格 ?實(shí)型也稱為浮點(diǎn)型,定義方式如下 實(shí)數(shù)數(shù)據(jù)類型 float的有效位數(shù)與精
6、度: 12345671038 float x,y; /x,y為單精度實(shí)型變量 float的取值范?float類型占用內(nèi)存是4個(gè)字節(jié). 圍與精度? 指數(shù)是1字節(jié) 272020尾數(shù)有3個(gè)字節(jié) 2627214215222尾數(shù)的符號位 假想的小數(shù)點(diǎn)位置 223=8106:精度是7位數(shù) 2127=23023023023027=1038 ?當(dāng)float類型表示范圍不夠時(shí),可以采用雙精度數(shù)據(jù)類型double,它占用了8個(gè)字節(jié)。 230=109,27102 Float與double的區(qū)別 故float精度是8位有效數(shù) #include cout和cin的格式說明文件 #include #include dou
7、ble有13位有效數(shù) #include int main(void) 定義單精度和雙精度變量 float a; double b; coutthe example of float and double:endl; 給a、b賦的值是8位 a=12345678.1234567; 數(shù),小數(shù)點(diǎn)后保留7位 b=12345678.1234567; couta=setiosflags(ios:fixed)aendl; coutb=setiosflags(ios:fixed)bendl; getch(); 設(shè)定cout的輸出格式,分別以定點(diǎn) return(0); 小數(shù)方式輸出a、b的值 Float在8位數(shù)以
8、后的數(shù)值無法保存 double有13標(biāo)準(zhǔn)c的輸出函數(shù)舉例之一 float有8位有效數(shù) #include #include 定義單精度和雙精度變量 int main(void) 輸出格式符號n表示換行 Printf()是標(biāo)準(zhǔn)c的輸出函數(shù) float a; 直接輸出 里的內(nèi)容 double b; printf()輸出格式printf(the example of float and double:n); 可以查閱格式說 明表 給a、b賦的值是8位a=12345678.1234567; 數(shù),小數(shù)點(diǎn)后保留7位 b=12345678.1234567; “ ” 內(nèi)是格式控制符 printf(a=%fn b
9、=%fn,a,b); a,b輸出變量,個(gè)數(shù)必須和getch(); 格式描述符的個(gè)數(shù)相等 輸出格式符號n表return(0); 輸出格式符號%f示在屏幕上換行 表示輸出浮點(diǎn)數(shù) 位有效數(shù) 變量與關(guān)系運(yùn)算式 排序是計(jì)算機(jī)最普通的一種運(yùn)算方式。假設(shè)從鍵盤否則,去檢輸入三個(gè)整數(shù),將這三個(gè)數(shù)按遞減的順序輸出。 查j=k? if(條件判別) cinijk; j=k? else 關(guān)系運(yùn)算:,=j? cout=k? y 如果i大于等于j coutkj=k? k=i? y y coutkij; cout=j? y coutkil; coutik; coutkj; coutjk; int main(void) 關(guān)系
10、運(yùn)算: i大于等于j? int i,j,k; 如cout 請輸入三個(gè)整數(shù):=j運(yùn)算結(jié)果為真,果cinijk; 執(zhí)行復(fù)合語句內(nèi)容 if(i=j) if(i=k) cout=j)coutkjendl; 注意縱 else coutjkendl; 向?qū)R elsecoutk; coutij=k) cout=i)coutkiendl; else coutikendl; else coutk; coutjixgrade ; 是少數(shù)民族,加20分 等于的關(guān)系運(yùn)算: = C語言中,用= 表示 等于 的意思 否則,x就是最終錄取分?jǐn)?shù) grade =1? y x=x+20; mark=x; = 表示把x的值賦給m
11、ark #include #include 初始化為0 #include int main(void) x=x+20? int x,grade=0,mark; 輸入x和grade coutinput value of x and grade:xgrade; X等于自身加上20 if(grade=1)x=x+20; mark=x; C語言中用= 表示 等于 的意思 運(yùn)算結(jié)果送 coutmark=markendl; 回到內(nèi)存 x getch(); return(0); 內(nèi)存 控制器 + y 數(shù)據(jù)類型的多樣化意義 字符類型 屬性 學(xué)號 姓名 表2.1 學(xué)生屬性 字符類型 系別 性別 出生日期 民族
12、家庭住址 變量 number Name sex birthday nation address Department 我們可以直接定義字符類型 一個(gè)學(xué)生變量嗎? int student; -有意義嗎 短整數(shù)類型 字符類型 字符類型 字符類型 表2.2 一條學(xué)生記錄就是屬性集合的取值 sex 男 Birthday 1985年11月 nation 漢 Address department Number 031005 name 李遠(yuǎn) 杭州黃龍洞 自動(dòng)化系 表2.2的學(xué)生對象,是由多個(gè)基本類型的數(shù)據(jù)變量描述的; 假定在程序中處理100個(gè)學(xué)生數(shù)據(jù),因?yàn)椴荒苤苯訉W(xué)生定義成一個(gè)變量,所以,我們需要在程序中
13、將學(xué)生的各個(gè)屬性變量分別寫出來,程序非常臃腫。 int main(void) int main(void) 定義學(xué)號變量 char num20; char num20; char name20; char name20; 定義名字變量 構(gòu)造一個(gè)學(xué)生數(shù)據(jù)類型? char sex; char sex; 定義性別變量 char birthday20; char birthday20; 定義出生年月變量 input(num,name,&sex,birthday); input(num,name,&sex,birthday); 調(diào)用輸入函數(shù) printf(“ %s %s %d %s pr
14、intf(“ %s %s %d %s n”,n”,num , name , sex , birthday); ); 字符串輸整數(shù)輸換行符在 輸出學(xué)生屬性值 出格式 出格式 return(0); return(0); 比較煩,程序也很凌亂 抽象說明:struct struct 類型: teacher 本例是教師teacher 把教師個(gè)體一個(gè)客觀個(gè)體有多種屬性 該類型包含的基個(gè)體具有的抽象成一新姓名:char name40; 新定義的組和變量類型 本數(shù)據(jù):多個(gè)屬性 char name40; 的變量類型 int age; 年齡:int age; char sex; 性別: char sex; 不同數(shù)
15、據(jù)變量的封裝 身高:int high; int high; 身份證號: char paper 40; char paper40; char metier40; 職業(yè):char metier40; c語言中的多種數(shù)據(jù)類型用來描述一個(gè)客觀物體的多種屬性 結(jié)構(gòu)體的概念-封裝數(shù)據(jù) C C語言支持的數(shù)據(jù)結(jié)構(gòu)定義能力,你可以將所需要的基本型語言支持的數(shù)據(jù)結(jié)構(gòu)定義能力,你可以將所需要的基本型數(shù)據(jù)匯集到一起,作為一個(gè)新的數(shù)據(jù)類型來使用;數(shù)據(jù)匯集到一起,作為一個(gè)新的數(shù)據(jù)類型來使用; 我們稱之為結(jié)構(gòu);我們稱之為結(jié)構(gòu); 如果把程序理解成一個(gè)書包,結(jié)構(gòu)則好像這個(gè)新數(shù)據(jù)類型定義之后,可以直接在程序中如同使用基本這個(gè)新數(shù)
16、據(jù)類型定義之后,可以直接在程序中如同使用基本書包里的文具盒; 數(shù)據(jù)類型一樣的進(jìn)行引用。數(shù)據(jù)類型一樣的進(jìn)行引用。 各種基本數(shù)據(jù)類型封裝在結(jié)構(gòu)體里,好像學(xué)習(xí)用品放在文具盒中; 結(jié)構(gòu)體讓程序能直接存儲、操作一個(gè)客觀實(shí)體; 書包里還可以有化妝盒、飯盒; 程序中可以定義各種不同的結(jié)構(gòu)體。 結(jié)構(gòu)類型名 結(jié)構(gòu)體起止 struct std struct std 結(jié)構(gòu)體關(guān)鍵字 char num20; 該結(jié)構(gòu)類型內(nèi)封裝的基本數(shù)據(jù) char name20; char sex; char birthday20; 定義了一個(gè)學(xué)生結(jié)構(gòu)類型; 把std看成一個(gè)數(shù)據(jù)類型,進(jìn)而可以定義是該類型的變量。 struct std a
17、; a是 std 結(jié)構(gòu)類型的變量 struct std char num20; char name20; char sex; char birthday; 學(xué)生結(jié)構(gòu)類型內(nèi)封裝的各分量名稱 通過結(jié)構(gòu),清晰了變量與程序的關(guān)系 int main(void) int main(void) 學(xué)生變量a struct std a; struct std a; 讀入變量a數(shù)據(jù) input(&a); input(&a); 訪問a printf(“ %s %s %d %s printf(“ %s %s %d %s n”,n”,a.num , ,a.sex , a.birthday);
18、 ); “ .” 后面說明了a的分量 return(0); return(0); #include #include s:字符串 struct std struct std char num20; char num20; c:字符 char name20; char name20; ; ; i:整型數(shù) void input(struct std void input(struct std * *);/);/函數(shù)聲明函數(shù)聲明 int main(void) int main(void) f:浮點(diǎn)數(shù) struct std a; struct std a; /定義變量定義變量 換行符input(&a); input(&a); /調(diào)用參數(shù)輸入函數(shù)調(diào)用參數(shù)輸入函數(shù) printf(n n); printf(n n); printf(printf( 輸入的學(xué)號、名字是:輸入的學(xué)號、名字是:n); n); printf(%s %sn,a.num,); printf(%s %sn,a.num,); /輸出學(xué)生數(shù)據(jù)輸出學(xué)生數(shù)據(jù) retur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石家莊智能終端產(chǎn)品項(xiàng)目商業(yè)計(jì)劃書
- 強(qiáng)化廣州日報(bào)育兒平臺,進(jìn)入線下嬰童市場計(jì)劃書商業(yè)計(jì)劃書集團(tuán)
- 美業(yè)員工入股合同協(xié)議書
- 破產(chǎn)創(chuàng)業(yè)方案
- 螃蟹養(yǎng)殖合同協(xié)議書模板
- 食堂搭伙合同協(xié)議書模板
- 找工作合同協(xié)議書怎么寫
- 學(xué)校教師用工合同協(xié)議書
- 創(chuàng)業(yè)計(jì)劃書范文服裝店
- 機(jī)械租賃合同終止協(xié)議書
- 道路交通安全宣傳課件
- 藝術(shù)基金授課協(xié)議書
- 2024年廣東省普寧市事業(yè)單位公開招聘警務(wù)崗筆試題帶答案
- 《農(nóng)業(yè)機(jī)械操作培訓(xùn)》課件
- 2025委托維修服務(wù)合同模板
- 廣告設(shè)計(jì)師項(xiàng)目實(shí)操試題及答案
- 2025年上海市春考語文試卷(較為完整版暫無答案)
- 企業(yè)安全環(huán)保責(zé)任體系構(gòu)建與實(shí)施路徑
- 陜西電網(wǎng)面試試題及答案
- 人流綜合征試題及答案
- 2025下半年廣東省東莞市事業(yè)單位考試筆試易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論