第2章2014數(shù)據(jù)類(lèi)型_第1頁(yè)
第2章2014數(shù)據(jù)類(lèi)型_第2頁(yè)
第2章2014數(shù)據(jù)類(lèi)型_第3頁(yè)
第2章2014數(shù)據(jù)類(lèi)型_第4頁(yè)
第2章2014數(shù)據(jù)類(lèi)型_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第2章數(shù)據(jù)類(lèi)型在定義變量時(shí)必須指定變量的類(lèi)型。為什么要指定變量的類(lèi)型呢?定義變量時(shí)明確地說(shuō)明其類(lèi)型有利于內(nèi)存的分配。本章將重點(diǎn)介紹C語(yǔ)言的基本數(shù)據(jù)類(lèi)型和數(shù)據(jù)類(lèi)型的轉(zhuǎn)換。本章內(nèi)容2.1數(shù)據(jù)類(lèi)型的分類(lèi)2.2整型數(shù)據(jù)2.3實(shí)型數(shù)據(jù)2.4字符型數(shù)據(jù)2.5數(shù)據(jù)類(lèi)型轉(zhuǎn)換2.6格式化輸入、輸出函數(shù)【學(xué)習(xí)目標(biāo)】掌握C語(yǔ)言的基本數(shù)據(jù)類(lèi)型掌握C語(yǔ)言中常量和變量的使用方法理解數(shù)據(jù)類(lèi)型的轉(zhuǎn)換掌握格式化輸入、輸出函數(shù)2.1.2數(shù)據(jù)類(lèi)型的分類(lèi)

C語(yǔ)言中,數(shù)據(jù)有兩種表現(xiàn)形式:常量和變量。常量是指在程序運(yùn)行過(guò)程中,其值不能被改變的量。

例如:300、2.1等。而變量在程序運(yùn)行過(guò)程中其值是可以改變的。

例如:intx,y,sum等。2.2整型數(shù)據(jù)

2.2.1整型變量

整型變量是用來(lái)保存整數(shù)的變量。例如,在學(xué)生信息管理系統(tǒng)中,變量的定義如下:

intage; //年齡

intc; //C語(yǔ)言分?jǐn)?shù)

intmath; //數(shù)學(xué)分?jǐn)?shù)

inten; //英語(yǔ)分?jǐn)?shù)根據(jù)變量所占存儲(chǔ)空間的大小和取值范圍的不同,整型變量可以分為基本整型、短整型和長(zhǎng)整型三種。類(lèi)型類(lèi)型說(shuō)明符占用字節(jié)數(shù)取值范圍舉例基本整型int4-231~231-1inti;短整型short[int]2-215~215-1shortinti;長(zhǎng)整型long[int]4-231~231-1longinti;長(zhǎng)度運(yùn)算符可以用來(lái)計(jì)算某種類(lèi)型的數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)。其語(yǔ)法格式如下:sizeof(類(lèi)型名、常量或變量名)【例2-1】分析下面程序的運(yùn)行結(jié)果。#include<stdio.h>voidmain(){ doubles=1.0; printf("%3d",sizeof(int)); printf("%3d",sizeof(short)); printf("%3d\n",sizeof(s));}程序運(yùn)行結(jié)果如下:428。根據(jù)整型變量的值能否取負(fù)數(shù),將上面的每種類(lèi)型又進(jìn)一步分為以下兩種: 有符號(hào):signed

無(wú)符號(hào):unsigned。對(duì)于有符號(hào)整數(shù),關(guān)鍵詞signed可以省略。 例如:singedintage;

等價(jià)于 intage;學(xué)生的年齡不可能為負(fù)數(shù),因此,也可以定義為無(wú)符號(hào)類(lèi)型:

例如:unsingedintage;

正、負(fù)號(hào)的表示對(duì)于有符號(hào)整型變量中保存的數(shù)據(jù),計(jì)算機(jī)是如何表示其正、負(fù)號(hào)的呢?所有數(shù)據(jù)在計(jì)算機(jī)中都是以二進(jìn)制形式存儲(chǔ)的,對(duì)于有符號(hào)整數(shù),最高二進(jìn)制位表示符號(hào)位(0表示“正”,1表示“負(fù)”)。整型變量的取值范圍有符號(hào)基本整型(singedint)變量雖然占用4個(gè)字節(jié)(32位),但只有31位用來(lái)表示數(shù)值;而無(wú)符號(hào)整型變量,由于沒(méi)有符號(hào)位,所有的二進(jìn)制位都用來(lái)表示數(shù)值。這樣有符號(hào)整型變量和無(wú)符號(hào)整型變量的取值范圍不同。例如:singedint 取值范圍為 -231~231-1unsingedint 取值范圍為 0~232-12.2.2整型常量

整型常量即整數(shù),在程序中可用以下三種進(jìn)制來(lái)表示:十進(jìn)制整型常量(如:212、0、-25)八進(jìn)制整型常量(用數(shù)字0作為前導(dǎo),如:0236,042,0321)十六進(jìn)制整型常量(用0x作為前導(dǎo),如:0x2AF,0x42,0x3E1)缺省情況下,整型常量的數(shù)據(jù)類(lèi)型是singedint型??梢栽谡统A亢竺婕由项?lèi)型標(biāo)識(shí)符,明確說(shuō)明其所屬類(lèi)型。類(lèi)型標(biāo)識(shí)符有以下兩種:(1)大寫(xiě)字母L或小寫(xiě)字母l,表示長(zhǎng)整型。例如: longinti=-12L; longintj=0x3E1L; (2)大寫(xiě)字線(xiàn)U或小寫(xiě)字母u,表示無(wú)符號(hào)整型。 unsignedinti=12U; unsignedintj=0x3E1U;類(lèi)型類(lèi)型說(shuō)明符占用字節(jié)數(shù)有效數(shù)字取值范圍(絕對(duì)值)單精度型float463.4×10-38~3.4×1038雙精度型double8151.7×10-308~1.7×103082.3實(shí)型數(shù)據(jù)

2.3.1實(shí)型變量實(shí)型(也稱(chēng)浮點(diǎn)型)變量用來(lái)保存具有小數(shù)點(diǎn)的實(shí)數(shù)。例:floatave;//平均分根據(jù)實(shí)型變量的取值范圍和有效數(shù)字位數(shù)(也稱(chēng)精度)的不同,將實(shí)型變量分為單精度型和雙精度型兩種。2.3.2實(shí)型常量實(shí)型常量有兩種表現(xiàn)形式:小數(shù)形式。例如:2.15、0.56。指數(shù)形式。例如:-7.18e1、-0.718e2。其中,小寫(xiě)字母e也可以采用大寫(xiě)形式,表示以10為底的指數(shù)。應(yīng)當(dāng)注意:e或E之前必須有數(shù)字,且e或E后面必須為整數(shù)。例如:e3、13e2.3都是錯(cuò)誤的。在存儲(chǔ)時(shí),實(shí)數(shù)的小數(shù)點(diǎn)如何表示?系統(tǒng)將實(shí)數(shù)分成尾數(shù)和指數(shù)(也稱(chēng)階碼)兩個(gè)部分來(lái)存儲(chǔ),其中,尾數(shù)部分小數(shù)點(diǎn)前面的數(shù)為0。例如,-71.8、-7.18e1存儲(chǔ)時(shí)系統(tǒng)先將其轉(zhuǎn)換成標(biāo)準(zhǔn)形式-0.718e2,再存儲(chǔ)。尾數(shù)所占的位數(shù)決定了實(shí)數(shù)的精度,指數(shù)所占的位數(shù)決定了實(shí)數(shù)的取值范圍。C標(biāo)準(zhǔn)并沒(méi)有規(guī)定尾數(shù)和指數(shù)所占多少位,而是由各編譯系統(tǒng)自定,這樣,存儲(chǔ)時(shí)實(shí)數(shù)的小數(shù)點(diǎn)隱含在了二進(jìn)制數(shù)據(jù)中。為了保證處理精度,實(shí)型常量自動(dòng)按雙精度型(double)處理,除非在實(shí)數(shù)后面加上字母f或F,這樣才會(huì)按單精度型(float)處理。例如:floati=2.15f;doublej=7.18e1;

字符型變量用來(lái)保存一個(gè)字符,在內(nèi)存中占一個(gè)字節(jié),以標(biāo)識(shí)符char表示。例如:chara; //定義了字符型變量c。實(shí)際上字符型數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼。2.4字符型數(shù)據(jù)

2.4.1字符型變量#include<stdio.h>voidmain(){ chara,b; scanf("%c",&a); printf("%c的ASCII碼是%d\n",a,a); b=a+32; printf("%c\n",b);}【例2-2】從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,輸出其ASCII碼和對(duì)應(yīng)的小寫(xiě)字母。程序運(yùn)行結(jié)果如下:D↙D的ASCII碼是68d#include<stdio.h>voidmain(){ chara,b; getchar(a); printf("%c的ASCII碼是%d\n",a,a); b=a+32; putchar(b);}C語(yǔ)言還提供了專(zhuān)門(mén)用于字符輸入/輸出的庫(kù)函數(shù)getchar()和putchar()。getchar()函數(shù)用于從鍵盤(pán)輸入一個(gè)字符,而putchar()函數(shù)用于將一個(gè)字符輸出到屏幕上。2.4.2字符型常量在程序中有以下二種形式的字符型常量:(1)普通字符常量 用一對(duì)單撇號(hào)將一個(gè)字符括起來(lái)。 例如:charc2=’A’;(2)轉(zhuǎn)義字符 以反斜杠(\)開(kāi)頭的字符序列,是一種特殊形式的字符常量。轉(zhuǎn)義字符轉(zhuǎn)義字符有以下兩種形式:①

反斜杠后面跟一個(gè)字符,表示特定的功能。例如:printf("%d\n",c1);\n表示“換行”。②反斜杠后面跟一個(gè)字符的ASCII碼,表示其所對(duì)應(yīng)的字符。ASCII碼可以是1~3位的八進(jìn)制數(shù)字或字母x后面跟1~2位的十六進(jìn)制數(shù)字。例如:'\101'(3位八進(jìn)制數(shù)字),即'A'。'\x41'(2位十六進(jìn)制數(shù)字),即'A'。轉(zhuǎn)義字符及其含義<轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車(chē)響鈴單引號(hào)3位8進(jìn)制數(shù)代表的字符水平制表退格換頁(yè)反斜線(xiàn)雙引號(hào)2位16進(jìn)制數(shù)代表的字符例,要在屏幕輸出 Isay:"Howareyou?"轉(zhuǎn)義字符舉例#include"stdio.h"void

main(){ printf("Isay:\"Howareyou?\"\n"); printf("\101\x42C\n");}

在C語(yǔ)言程序設(shè)計(jì)中,有時(shí)需要將數(shù)據(jù)的類(lèi)型轉(zhuǎn)換成另一種類(lèi)型,才能得到正確的計(jì)算結(jié)果。2.5數(shù)據(jù)類(lèi)型轉(zhuǎn)換

【例2-3】分析下面程序的運(yùn)行結(jié)果。#include<stdio.h>voidmain(){ doublea; intb=2; a=1/b; printf("%lf\n",a);}

兩個(gè)整數(shù)相除,結(jié)果為整數(shù)。

針對(duì)這一問(wèn)題,有兩種解決方法:

1.自動(dòng)轉(zhuǎn)換

在表達(dá)式中,當(dāng)不同類(lèi)型的數(shù)據(jù)混合在一起進(jìn)行運(yùn)算時(shí),系統(tǒng)會(huì)自動(dòng)將運(yùn)算符兩側(cè)的操作數(shù)轉(zhuǎn)換成同一種類(lèi)型,然后再進(jìn)行計(jì)算。

為了保證運(yùn)算結(jié)果的正確和運(yùn)算精度,轉(zhuǎn)換方向是由低類(lèi)型向高類(lèi)型進(jìn)行轉(zhuǎn)換。

例如:C=1.0/b;2.強(qiáng)制類(lèi)型轉(zhuǎn)換

強(qiáng)制類(lèi)型轉(zhuǎn)換是將一個(gè)常量、變量或表達(dá)式的值強(qiáng)制轉(zhuǎn)換成用戶(hù)指定的類(lèi)型。例如: (double)a (int)(a+b)對(duì)于例2-3,也可以采用以下方法加以解決:將語(yǔ)句a=1/b;改為a=(double)1/b;2.6格式化輸入、輸出函數(shù)

2.6.1格式化輸入函數(shù)按指定的格式從鍵盤(pán)輸入數(shù)據(jù)給變量。格式:scanf("格式控制字符串",變量地址列表);例:inta,b; floatb; scanf("%d,%f",&a,&b);格式控制字符串中的普通字符原樣輸入。格式說(shuō)明符含義舉例輸入數(shù)據(jù)%d輸入有符號(hào)十進(jìn)制整數(shù)inta;scanf("%d",&a);162%o輸入無(wú)符號(hào)八進(jìn)制整數(shù)inta;scanf("%o",&a);103%x或%X輸入無(wú)符號(hào)十六進(jìn)制整數(shù)inta;scanf("%x",&a);ff%u輸入無(wú)符號(hào)十進(jìn)制整數(shù)inta;scanf("%u",&a);162%c輸入字符chara;scanf("%c",&a);B%s輸入字符串chara[10];scanf("%s",a);ABC%f(或%e)以小數(shù)形式(或指數(shù)形式)輸入單精度實(shí)數(shù)floata;scanf("%f",&a);162.789%lf(或%le)以小數(shù)形式(或指數(shù)形式)輸入雙精度實(shí)數(shù)doublea;scanf("%lf",&a);1.62%ld、%lo、%lx、%lu輸入long型整數(shù)longa;scanf("%ld",&a);162將數(shù)據(jù)按指定的格式顯示在屏幕上。格式如下:

printf("格式控制字符串",輸出列表);

例:inta,b; floatb; printf("%d,%f\n",a,b);格式控制字符串由普通字符、控制字符和格式說(shuō)明符組成,其中,普通字符原樣輸出。2.6.2格式化輸出函數(shù)格式說(shuō)明符含義舉例輸出結(jié)果%d輸出有符號(hào)十進(jìn)制整數(shù)inta=162;printf("%d",a);162%o輸出無(wú)符號(hào)八進(jìn)制整數(shù)inta=67;printf("%o",a);103%x或%X輸出無(wú)符號(hào)十六進(jìn)制整數(shù)inta=255;printf("%x",a);ff%u輸出無(wú)符號(hào)十進(jìn)制整數(shù)inta=162;printf("%u",a);162%c輸出字符chara='B';printf("%c",a);B%s輸出字符串printf("%s","ABC");ABC%f以小數(shù)形式輸出單精度實(shí)數(shù),默認(rèn)6位小數(shù)floata=162.789;printf("%f",a);162.789000%e或%E以指數(shù)形式輸出單精度實(shí)數(shù)floata=162.789;printf("%e",a);1.627890e+002%g自動(dòng)選取e和f中輸出寬度較短的一種floata=162.789;printf("%g",a);162.789%%輸出百分號(hào)%printf("%%");%附加格式說(shuō)明符格式說(shuō)明符含義舉例輸出結(jié)果m設(shè)置輸出數(shù)據(jù)的寬度,當(dāng)數(shù)據(jù)寬度小于m時(shí),左端補(bǔ)空格,否則按實(shí)際輸出inta=-32;printf("%6d",a);-32(表示空格).n對(duì)于實(shí)數(shù),指定輸出n位小數(shù);對(duì)按%s輸出的字符串表示從字符串左側(cè)截取n個(gè)字符intfloat=35.124;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論