版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式C語(yǔ)言程序設(shè)計(jì)2本章主要內(nèi)容2.1 基本字符、標(biāo)識(shí)符和關(guān)鍵字2.2 數(shù)據(jù)類型與變量2.3 基本類型與數(shù)據(jù)表示2.4 運(yùn)算符與表達(dá)式2.5 計(jì)算和類型32.1 基本字符、標(biāo)識(shí)符和關(guān)鍵字 2.1.1 基本字符 一個(gè)C程序就是C語(yǔ)言基本字符的一個(gè)符合規(guī)定形式的序列。C語(yǔ)言的基本字符包括: (1)數(shù)字字符(0,1,2,3,4,5,6,7,8,9)。 (2)大小寫英文字母(az,AZ)。 (3)其他一些可打?。梢燥@示)的字符(如各種標(biāo)點(diǎn)符號(hào)、運(yùn)算符號(hào)、括號(hào)等),包括: ! % & * ( ) _ - + = : ; “ , . ? / | (4)還有一些特殊字符(如空格
2、符、換行符、制表符等)。 空格符、換行符、制表符等統(tǒng)稱為空白字符??瞻鬃址诔绦蛑兄饕糜诜指羝渌煞?。按規(guī)定,C 程序中大部分地方增加空白字符都不影響程序的意義。因此用戶寫程序時(shí)常利用這種性質(zhì),通過(guò)加入一些空白字符,把程序排成適當(dāng)?shù)母袷?,以增?qiáng)程序的可讀性。 4例如:算術(shù)運(yùn)算符:+ - * / % + -關(guān)系運(yùn)算符: = 條件運(yùn)算符: ?: 和賦值運(yùn)算符:= 其他分隔符: ( ) . , ;2.1 基本字符、標(biāo)識(shí)符和關(guān)鍵字5 2.1.2 名字(標(biāo)識(shí)符)的構(gòu)成 一個(gè)標(biāo)識(shí)符是字母、數(shù)字字符和下劃線的一個(gè)連續(xù)序列,其中不能有空白字符,而且要求第一個(gè)字符必須是字母或下劃線。如果一個(gè)字符序列中出現(xiàn)了非
3、字母、數(shù)字、下劃線的字符,那么它就不是一個(gè)標(biāo)識(shí)符了。下面是一些非標(biāo)識(shí)符的字符序列: += 3set a32 $ sin(2+5) :ab4= C語(yǔ)言還規(guī)定,標(biāo)識(shí)符中同一字母的大寫形式和小寫形式將看作不同字符,這樣,a和A不同,name、Name、NAME、naMe 和nMAE 是互不相同的標(biāo)識(shí)符。 下面是一些標(biāo)識(shí)符的例子: abcd Beijing C_Programming_f2048 sia a3b06 xt386ex A_great_machine Small_talk_80 FORTRAN_90 以下劃線開始的標(biāo)識(shí)符保留給系統(tǒng)使用,用戶不要使用這種標(biāo)識(shí)符,以免與系統(tǒng)內(nèi)部的名字沖突造成程
4、序問(wèn)題。2.1 基本字符、標(biāo)識(shí)符和關(guān)鍵字6 2.1.3 關(guān)鍵字 所謂關(guān)鍵字就是已被Turbo C 2.0本身使用,不能作其他用途使用的名字。如關(guān)鍵字不能用做變量名、函數(shù)名等。Turbo C 2.0有以下關(guān)鍵字: (1)擴(kuò)展的11個(gè) asm _cs _ds _es _ss cdecl far near huge interrupt pascal (2)由ANSI標(biāo)準(zhǔn)定義的32個(gè) auto double int struct break else long switch case enum register typedef char extern return union const float
5、short unsigned continue for signed void default goto sizeof volatile do if while static2.1 基本字符、標(biāo)識(shí)符和關(guān)鍵字72.2 數(shù)據(jù)類型與變量 2.2.1 數(shù)據(jù)類型 字符型(char) 整型(short,int,long,unsigned) 基本類型 數(shù)值類型 單精度型(float) 實(shí)型 雙精度型(double) 枚舉類型(enum) 數(shù)據(jù)類型 數(shù)組類型( ) 構(gòu)造類型 結(jié)構(gòu)體類型(struct) 共用體類型(union) 指針類型(*) 空類型(void)8表2-1 ANSI標(biāo)準(zhǔn)中的數(shù)據(jù)類型及其范圍類
6、型 長(zhǎng)度(字節(jié)) 范 圍char(字符型) 1ASC字符 unsigned char(無(wú)符號(hào)字符)10255signed char(有符號(hào)字符型)1-128127int(整型)2-32 76832 767unsigned int(無(wú)符號(hào)整型)2065 535 signed int(有符號(hào)整型)2同 intshort(短整型)1-128127unsigned short int(無(wú)符號(hào)短整型)10255signed short int(有符號(hào)短整型)1同short intlong int(長(zhǎng)整型)4-2 147 483 6482 147 483 649signed long int(有符號(hào)長(zhǎng)整型
7、)4-2 147 483 6482 147 483 649unsigned long int(無(wú)符號(hào)長(zhǎng)整型)404 294 967 296float(單精度型)4提供7位有效數(shù)字double(雙精度型)8提供16位有效數(shù)字double(長(zhǎng)雙精度型)10提供19位有效數(shù)字void(空值)0無(wú)值9 說(shuō)明:表中的長(zhǎng)度和范圍的取值是在假定CPU的字長(zhǎng)為16 bit的情況下。 注意: (1)程序中書寫的、執(zhí)行中處理的每個(gè)基本數(shù)據(jù)都屬于某個(gè)確定的數(shù)據(jù)類型。 (2)類型確定了屬于它的數(shù)據(jù)對(duì)象的許多性質(zhì),特別是確定了數(shù)據(jù)的表示范圍。在具體的C語(yǔ)言系統(tǒng)中,每種類型都有確定的表示(編碼)方式,這就確定了可能表示的
8、數(shù)據(jù)范圍。例如,一個(gè)整數(shù)類型中的所有整數(shù)只是數(shù)學(xué)中整數(shù)的一個(gè)子集,其中只包含有限個(gè)整數(shù)值,存在該類型能表示的最小和最大整數(shù)。其他整數(shù)在這個(gè)類型中沒(méi)有容身之地,無(wú)法在此類型中表示。2.2 數(shù)據(jù)類型與變量 10 2.2.2 變量 1變量說(shuō)明。所謂變量,就是在程序運(yùn)行中其值可以變化的量,從賦值的角度講,它在不同時(shí)期可以賦予不同的值。 Turbo C 2.0規(guī)定所有變量在使用前都必須首先說(shuō)明。一條變量說(shuō)明語(yǔ)句由數(shù)據(jù)類型和其后的一個(gè)或多個(gè)變量名組成。變量說(shuō)明的形式如下: 類型 ; 此處類型是指Turbo C 2.0的有效數(shù)據(jù)類型。變量表是一個(gè)或多個(gè)標(biāo)識(shí)符名,每個(gè)標(biāo)識(shí)符之間用“,”分隔。 例 2.1 in
9、t i,j,k; unsigned char c,str5,*p; float a,b; double x,y;2.2 數(shù)據(jù)類型與變量 11 2變量的初始化。變量的初始化是指變量在被說(shuō)明的同時(shí)賦給的一個(gè)初值。Turbo C 2.0中外部變量和靜態(tài)全局變量在程序開始處被初始化, 局部變量(包括靜態(tài)局部變量)是在進(jìn)入定義它們的函數(shù)或復(fù)合語(yǔ)句時(shí)才作初始化。所有全局變量在沒(méi)有明確的初始化時(shí)將被自動(dòng)清零,而局部變量和寄存器變量在未賦值前其值是不確定的。 對(duì)于外部變量和靜態(tài)變量,初值必須是常數(shù)表達(dá)式,而自動(dòng)變量和寄存器變量可以是任意的表達(dá)式,這個(gè)表達(dá)式可以包括常數(shù)和前面說(shuō)明過(guò)的變量和函數(shù)。 2.2 數(shù)據(jù)類
10、型與變量 12例2.2float f0,f1=0.2; /*定義全局變量,在初始化時(shí)f0被清零,f1被賦0.2*/ main() static int i=10,j; /*定義靜態(tài)局部變量,初始化時(shí)i被賦10,j不確定*/ int k=i*5; /*定義局部變量,初始化時(shí)k被賦10*5=50*/ char c=y; /*定義字符型變量并初始化*/ 2.2 數(shù)據(jù)類型與變量 13 3變量的賦值 變量賦值是給已說(shuō)明的變量賦予一個(gè)特定值。 (1)整型變量和浮點(diǎn)型變量 這兩種變量采用下列格式賦值: 變量名=表達(dá)式; 例2.3 main() int a,m; /*定義局部整型變量a,m*/ float n
11、; /*定義局部浮點(diǎn)變量f*/ a=100,m=20; /*給變量賦值*/ n=a*m*0.1; 說(shuō)明:Turbo C 2.0中允許給多個(gè)變量賦同一值時(shí)用連等的方式。 2.2 數(shù)據(jù)類型與變量 14 (2)字符型變量 字符型變量可以用三種方法賦值。 例2.4 main() char a0,a1,a2; /*定義局部字符型變量a0,a1,a2*/ a0=b; /*將字母b賦給a0*/ a1=50; /*將數(shù)字2(十進(jìn)制ASC值為50)賦給a1*/ a2=x0d; /*將回車符賦給a2*/ 2.2 數(shù)據(jù)類型與變量 15 2.3.1 整數(shù)類型和整數(shù)的表示 C語(yǔ)言提供了多個(gè)整數(shù)類型以適應(yīng)不同需要。不同整
12、數(shù)類型間的差異在于它們可能具有不同的二進(jìn)制編碼位數(shù),因此表示范圍可能不同。程序中用得最多的是一般整數(shù)類型(簡(jiǎn)稱為“整數(shù)類型”或“整型”)和長(zhǎng)整數(shù)類型(簡(jiǎn)稱為“長(zhǎng)整型”)。整數(shù)類型的類型名是int;長(zhǎng)整型的類型名為long int,可簡(jiǎn)寫為long。int 和long 都是關(guān)鍵字。 1整數(shù)類型 整數(shù)(int 類型的數(shù)據(jù))有幾種書寫形式,程序中的整數(shù)一般采用十進(jìn)制寫法。 (1)十進(jìn)制數(shù):用十進(jìn)制方式寫出的一個(gè)整數(shù)就是普通數(shù)字字符組成的一個(gè)連續(xù)序列,其中不能有空格、換行或其他字符。C 語(yǔ)言規(guī)定十進(jìn)制表示的數(shù)字序列的第一個(gè)字符不是0,除非要寫的整數(shù)本身就是0。 2.3 基本類型與數(shù)據(jù)表示 16 (2)
13、八進(jìn)制數(shù): 用八進(jìn)制形式寫出的整數(shù)是由數(shù)字0 開始的連續(xù)數(shù)字序列,在序列中只允許0-7這8個(gè)數(shù)字。下面是用八進(jìn)制寫法寫出的一些整數(shù)和長(zhǎng)整數(shù): 0236 0527 06254 0531 0765432L (3)十六進(jìn)制數(shù):整數(shù)的十六進(jìn)制形式是由0 x 或0X 開頭的數(shù)字序列。由于數(shù)字只有10 個(gè),而在十六進(jìn)制寫法中需要16 個(gè)數(shù)字,C語(yǔ)言采用計(jì)算機(jī)領(lǐng)域通行的方式,用字母a-f 或A-F 表示其余的6 個(gè)十六進(jìn)制數(shù)字,其對(duì)應(yīng)關(guān)系如下。 字母:a/A b/B c/C d/D E/E f/F 數(shù)字: 10 1 1 12 13 14 15 下面是用十六進(jìn)制形式寫出的一些整數(shù)和長(zhǎng)整數(shù): 0 x2073 0
14、 xA3B5 0XABCD 0XFFFF 0XF0F00000L2.3 基本類型與數(shù)據(jù)表示 17 2表示范圍 C語(yǔ)言沒(méi)有規(guī)定各種整數(shù)類型的表示范圍,也就是說(shuō),沒(méi)有規(guī)定各種整數(shù)的二進(jìn)制編碼長(zhǎng)度。對(duì)于int 和long,只規(guī)定了long 類型的表示范圍不小于int ,但也允許它們的表示范圍相同。具體C語(yǔ)言系統(tǒng)則會(huì)對(duì)整型和長(zhǎng)整型規(guī)定明確的表示方式和表示范圍。例如,早期微型機(jī)的一些C系統(tǒng)采用16位二進(jìn)制表示的整數(shù)(一個(gè)int 占2個(gè)字節(jié))和32位表示的長(zhǎng)整數(shù)(一個(gè)long占4個(gè)字節(jié))。這樣,整型的表示范圍就是-32 76832767,即-215215-1。長(zhǎng)整型表示范圍是-2147483 648214
15、7483 647,即-231231-1。在許多新的微機(jī)C語(yǔ)言系統(tǒng)中,整數(shù)和長(zhǎng)整數(shù)都采用32 位的二進(jìn)制數(shù)表示。 C語(yǔ)言允許在整數(shù)的前面寫正負(fù)號(hào),加上負(fù)號(hào)的整數(shù)就表示負(fù)整數(shù)。 2.3 基本類型與數(shù)據(jù)表示 18 2.3.2 實(shí)數(shù)類型和實(shí)數(shù)的表示 1實(shí)數(shù)類型 C語(yǔ)言提供了三種表示實(shí)數(shù)的類型:?jiǎn)尉雀↑c(diǎn)數(shù)類型(簡(jiǎn)稱浮點(diǎn)類型),類型名為float;雙精度浮點(diǎn)數(shù)類型(簡(jiǎn)稱雙精度類型),類型名為double;長(zhǎng)雙精度類型,類型名為long double 。這些類型的數(shù)據(jù)也分別稱做“浮點(diǎn)數(shù)”、“雙精度數(shù)”和“長(zhǎng)雙精度數(shù)”。所有整數(shù)類型和實(shí)數(shù)類型統(tǒng)稱為算術(shù)類型。 (1)浮點(diǎn)類型的數(shù)用4個(gè)字節(jié)32 位二進(jìn)制表示。
16、這樣表示的數(shù)大約有7 位十進(jìn)制有效數(shù)字,數(shù)值的表示范圍約為(3.410-383.41038 )。2.3 基本類型與數(shù)據(jù)表示 19(2)雙精度類型的數(shù)用8個(gè)字節(jié)64 位二進(jìn)制表示,這樣表示的數(shù)大約有16 位十進(jìn)制有效數(shù)字,數(shù)值的表示范圍約為(1.710-308 1.710308 ) 。(3)長(zhǎng)雙精度類型的數(shù)用10個(gè)字節(jié)80位二進(jìn)制表示,這樣表示的數(shù)大約有19位十進(jìn)制有效數(shù)字,其數(shù)值的表示范圍約為(1.210-4932L 1.2104932 L)。對(duì)于浮點(diǎn)數(shù)也有類似情況。例如,在一些C 語(yǔ)言系統(tǒng)中,long double 采用與double 同樣的表示方式。有關(guān)具體C 語(yǔ)言系統(tǒng)中浮點(diǎn)數(shù)表示的情況,
17、也應(yīng)查閱系統(tǒng)手冊(cè),還可以查閱名為float.h 的標(biāo)準(zhǔn)文件。2.3 基本類型與數(shù)據(jù)表示 202實(shí)型常數(shù)表示C語(yǔ)言中最基本的實(shí)數(shù)類型是雙精度類型。雙精度數(shù)書寫形式中的基本部分是一個(gè)數(shù)字序列,在序列中或者包含了一個(gè)表示小數(shù)點(diǎn)的圓點(diǎn)“.”(可以是第一個(gè)或最后一個(gè)字符),或者在表示數(shù)值的數(shù)字序列后面有一個(gè)指數(shù)部分。指數(shù)部分是以e 或E 開頭的另一(可以包括正負(fù)號(hào)的)數(shù)字序列,指數(shù)以10為底,這種形式稱為科學(xué)記數(shù)法。也可以既有小數(shù)點(diǎn),又有指數(shù)部分。下面是一些雙精度數(shù)的例子:3.2 3.2E-3 2.45e17 0.038 105.4E-10 304.24E82.3 基本類型與數(shù)據(jù)表示 21浮點(diǎn)數(shù)的寫法與
18、雙精度數(shù)類似,只是在數(shù)最后應(yīng)附后綴字符f 或者F。表示長(zhǎng)雙精度數(shù)的后綴用l 和L。下面是一些浮點(diǎn)數(shù)類型和長(zhǎng)雙精度類型數(shù)的例子:13.2F 1.7853E-2F 24.68700f .32F 0.337f。12.869L 3.417E34L .05L 5.E88L 1.L。負(fù)實(shí)數(shù)同樣通過(guò)在數(shù)前加負(fù)號(hào)表示。說(shuō)明:(1)實(shí)型常數(shù)只有一種進(jìn)制(十進(jìn)制)。(2)所有實(shí)型常數(shù)都被默認(rèn)為double。 (3)絕對(duì)值小于1的實(shí)型數(shù),其小數(shù)點(diǎn)前面的零可以省略。如0.22可寫為.22,0.0015E-3可寫為-.0015E-3。(4)Turbo C默認(rèn)格式輸出實(shí)型數(shù)時(shí),最多只保留小數(shù)點(diǎn)后6位。2.3 基本類型與數(shù)
19、據(jù)表示 222.3.3 字符類型和字符的表示字符類型數(shù)據(jù)主要用于程序的輸入輸出。此外,文字處理也是計(jì)算機(jī)的一個(gè)重要應(yīng)用領(lǐng)域,該應(yīng)用領(lǐng)域的應(yīng)用程序必須能使用和處理字符形式的數(shù)據(jù)。由于大部分程序都需要與用戶打交道,需要接收用戶的輸入信息(如用戶給程序發(fā)的命令,或者提供的數(shù)據(jù)),還需要給用戶輸出信息,因此字符類型的數(shù)據(jù)在程序中的使用很廣泛。1字符類型加上不同的修飾符,可以定義有符號(hào)和無(wú)符號(hào)兩種類型的字符型變量。 char a: /*a被定義為有符號(hào)字符變量*/ unsigned char l; /*l被定義為無(wú)符號(hào)字符變量*/ 2.3 基本類型與數(shù)據(jù)表示 23 字符在計(jì)算機(jī)中是以其ASC碼方式表示的
20、,其長(zhǎng)度為1個(gè)字節(jié),有符號(hào)字符型數(shù)的取值范圍為-128-127,無(wú)符號(hào)字符型數(shù)的取值范圍是0-255。因此在Turbo C語(yǔ)言中,字符型數(shù)據(jù)在操作時(shí)將按整型數(shù)處理,如果某個(gè)變量定義成char,則表明該變量是有符號(hào)的,即它將轉(zhuǎn)換成有符號(hào)的整型數(shù)。 Turbo C中規(guī)定ASC碼值大于0 x80的字符將被認(rèn)為是負(fù)數(shù)。如ASC碼值為0 x8c的字符,定義成char時(shí),被轉(zhuǎn)換成十六進(jìn)制的整數(shù)0 xff8c。這是因?yàn)楫?dāng)ASC碼值大于0 x80時(shí),該字節(jié)的最高位為1,計(jì)算機(jī)會(huì)認(rèn)為該數(shù)為負(fù)數(shù),對(duì)于0 x8c表示的數(shù)實(shí)際上是-74(8c的各位取反再加1),而-74轉(zhuǎn)換成兩字節(jié)整型數(shù)并在計(jì)算機(jī)中表示時(shí)就是0 xf
21、f8c(對(duì)0074各位取反再加1)。因此只有定義為unsigned char 0 x8c,轉(zhuǎn)換成整型數(shù)時(shí)才是8c。這一點(diǎn)在處理大于0 x80的ASC碼字符時(shí)(如漢字碼)要特別注意。一般漢字均定義為unsigned char(在以后的程序中會(huì)經(jīng)常碰到)。2.3 基本類型與數(shù)據(jù)表示 24 另外,也可以定義一個(gè)字符型數(shù)組(關(guān)于數(shù)組后面再作詳細(xì)介紹),此時(shí)該數(shù)組表示一個(gè)字符串。 例如: char str10; 計(jì)算機(jī)在編譯時(shí),將留出連續(xù)10個(gè)字符的空間,即str0 str9共10個(gè)變量,但只有前9個(gè)供用戶使用。第10個(gè)str9用來(lái)存放字符串終止符NULL(即“0”),但終止符是編譯程序自動(dòng)加上的,這一
22、點(diǎn)應(yīng)特別注意。2.3 基本類型與數(shù)據(jù)表示 25 2字符常數(shù)表示 能用符號(hào)表示的字符可直接用單引號(hào)括起來(lái)表示,如a、9、Z,也可用該字符的ASC碼值表示,例如,十進(jìn)制數(shù)85表示大寫字母U,十六進(jìn)制數(shù)0 x5d表示,八進(jìn)制數(shù)0102表示大寫字母B。 一些不能用符號(hào)表示的控制符,只能用ASC碼值來(lái)表示,如十進(jìn)制數(shù)10 表示換行, 十六進(jìn)制數(shù)0 x0d表示回車,八進(jìn)制數(shù)033表示Esc。Turbo C 2.0中也有另外一種表示方法, 如033表示Esc,這里0符號(hào)后面的數(shù)字表示十六進(jìn)制的ASC值,當(dāng)然這種表示方法也適用于可直接用符號(hào)表示的字符。 2.3 基本類型與數(shù)據(jù)表示 26 3轉(zhuǎn)義字符轉(zhuǎn)義字符意
23、義ASC碼值(十進(jìn)制)a響鈴(BEL)007b退格(BS)008f換頁(yè)(FF)012n換行(LF)010r回車(CR)013t水平制表(HT)009v垂直制表(VT)011反斜杠092?問(wèn)號(hào)字符063單引號(hào)字符039”雙引號(hào)字符0340空字符(NULL)000ddd任意字符三位八進(jìn)制xhh任意字符二位十六進(jìn)制2.3 基本類型與數(shù)據(jù)表示 27 字符常量中使用單引號(hào)和反斜杠以及字符常量中使用雙引號(hào)和反斜杠時(shí),都必須使用轉(zhuǎn)義字符表示,即在這些字符前加上反斜杠。 在C程序中使用轉(zhuǎn)義字符ddd或者xhh可以方便靈活地表示任意字符。ddd為斜杠后面跟三位八進(jìn)制數(shù),該三位八進(jìn)制數(shù)的值即為對(duì)應(yīng)的八進(jìn)制ASC碼
24、值。x后面跟兩位十六進(jìn)制數(shù),該兩位十六進(jìn)制數(shù)為對(duì)應(yīng)字符的十六進(jìn)制ASC碼值。 使用轉(zhuǎn)義字符時(shí)需要注意以下問(wèn)題: (1)轉(zhuǎn)義字符中只能使用小寫字母,每個(gè)轉(zhuǎn)義字符只能看作一個(gè)字符。 (2)v垂直制表符和f換頁(yè)符對(duì)屏幕沒(méi)有任何影響,但會(huì)影響打印機(jī)執(zhí)行響應(yīng)操作。 (3)在C程序中,使用不可打印字符時(shí),通常用轉(zhuǎn)義字符表示。2.3 基本類型與數(shù)據(jù)表示 28 4字符串 字符串是C 程序中可以直接寫出來(lái)的另一類數(shù)據(jù),其形式是用雙引號(hào)括起的一系列字符。下面是幾個(gè)字符串的例子:CHINA Beijing Daxue Welcomen 在字符串中的特殊字符也用轉(zhuǎn)義序列的形式書寫,如上面第4個(gè)字符串的最后是一個(gè)轉(zhuǎn)義序
25、列,表示了一個(gè)換行字符。 程序中的字符串主要用于輸入輸出,例如: printf(Good morning!n); 小括號(hào)里就是一個(gè)字符串。 C語(yǔ)言規(guī)定程序不能在字符串中間換行,否則編譯會(huì)出錯(cuò)。2.3 基本類型與數(shù)據(jù)表示 29 2.3.4 數(shù)據(jù)的外部表示及內(nèi)部表示 數(shù)據(jù)的外部表示指的是用戶在寫出的C語(yǔ)言源程序中寫數(shù)據(jù)所用的形式,或者用戶給正在運(yùn)行中的程序提供數(shù)據(jù)時(shí)所用的形式,或者用戶從程序中得到的輸出所具有的形式。內(nèi)部表示指程序運(yùn)行中,各種數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的二進(jìn)制編碼形式,也就是計(jì)算機(jī)內(nèi)部存儲(chǔ)和處理數(shù)據(jù)時(shí)所用的形式。顯然這是兩種不同的形式。例如,如果我們?cè)谠闯绦蛑袑懻麛?shù)123,而在程序運(yùn)行時(shí)實(shí)際
26、使用的則是存在內(nèi)存某(幾)個(gè)單元中的二進(jìn)制形式1111011。如果在程序中寫字符a,程序運(yùn)行中將會(huì)把字符a 的編碼的二進(jìn)制形式保存在計(jì)算機(jī)的某個(gè)地方。 2.3 基本類型與數(shù)據(jù)表示 302.4 運(yùn)算符與表達(dá)式運(yùn)算符的分類 分類依據(jù):運(yùn)算符的功能分類:算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符賦值運(yùn)算符按位運(yùn)算符其它運(yùn)算符表達(dá)式:是由操作數(shù)和運(yùn)算符組成的序列。312.4.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式1、算術(shù)運(yùn)算符+:加法-:減法*:乘法/:除法%:取余或模3+51+1+33-51-1-33*5aba.b3/5=03./5=0.63/5.=0.63%5=3a%b=a-n*b a、b必須為整數(shù)5%(-3)=5-(-
27、1)*(-3)=2(-12)%(-5)=(-12)-2*(-5)=-2322、算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括符將操作數(shù)連接起來(lái)的式子。優(yōu)先級(jí):( )* / %+ -結(jié)合性自左向右,與數(shù)學(xué)上一致。表達(dá)式的值:數(shù)值型:int、long、unsigned、double結(jié)合性是指同級(jí)運(yùn)算時(shí)運(yùn)算符的結(jié)合方向。如a#b#c (#代表某一運(yùn)算符)若先運(yùn)算a#b,再將其結(jié)果與c運(yùn)算,稱為左結(jié)合性;從左至右運(yùn)算規(guī)則若先運(yùn)算b#c,再將a與其結(jié)果運(yùn)算,則稱右結(jié)合性。從右至左運(yùn)算規(guī)則33例2.5 已知: float a=2.0; int b =6,c =3;求解: a*b/c-1.5+ A +abs(-5)=?12.0
28、/34.0 - 1.52.5+65(int)67.5572.5343.自增與自減運(yùn)算符 (重點(diǎn)和難點(diǎn))+i,-i先增(減)1,再使用ii+,i-先使用i,再增(減)1(1) 單獨(dú)使用時(shí)+i;等 價(jià)i+;等 價(jià)i=i+1;(2) j=+i;(3) j=i+;若i的初始值為3i=4;j=4;i=4;j=3;35結(jié)合性:自右向左例:i = 2; j = -i+;分析:(1)+、-、+(正號(hào))、-(取負(fù))是同級(jí)運(yùn)算符,結(jié)合方向:自右向左。(2) -i+等價(jià)于-(i+)(3) 對(duì)于括號(hào)內(nèi)的自增運(yùn)算,又要先使用i,再使i增加1。運(yùn)算結(jié)果: i的值為3,j的值為-2。362.4.2 關(guān)系運(yùn)算符和邏輯運(yùn)算關(guān)系
29、運(yùn)算 關(guān)系運(yùn)算:比較運(yùn)算,比較兩個(gè)操作數(shù),看是否滿足給定的關(guān)系。(1) 關(guān)系運(yùn)算符:小于 ,53, 35=:小于等于,5=3,3:大于,53,35=:大于等于,5 =3,3 =5 ,與數(shù)學(xué)上()不同=:等于,5=3 ,與數(shù)學(xué)上(=)不同!=:不等于,5!=3 ,與數(shù)學(xué)上()不同37(2) 關(guān)系表達(dá)式用關(guān)系運(yùn)算符將表達(dá)式連接起來(lái)的式子優(yōu)先級(jí) =高 低= !=結(jié)合方向自左向右表達(dá)式的值關(guān)系成立,即為真,結(jié)果為1;關(guān)系不成立,即為假,結(jié)果為0;算術(shù)運(yùn)算符高 低C語(yǔ)言中,真:非0值,假:0值 第二章 2.3 運(yùn)算符和表達(dá)式382. 邏輯運(yùn)算符(1)邏輯運(yùn)算符?。哼壿嫹?,一元運(yùn)算符運(yùn)算規(guī)則:取反,真假,
30、假真&:邏輯與 。又稱邏輯乘。運(yùn)算規(guī)則:兩個(gè)操作數(shù)均為真,結(jié)果為真。|:邏輯或 。又稱邏輯加。運(yùn)算規(guī)則:只要兩個(gè)操作數(shù)有一個(gè)為真,結(jié)果為真。39邏輯量或邏輯表達(dá)式的值非0 值:真0值:假整型實(shí)型字符型指針類型00.00NULL第二章 2.3 運(yùn)算符和表達(dá)式40(2) 邏輯表達(dá)式用邏輯運(yùn)算符將表達(dá)式連接起來(lái)的式子。優(yōu)先級(jí)關(guān)系運(yùn)算符高 低&邏輯與算術(shù)運(yùn)算符高 低!邏輯非高 低高 低|邏輯或結(jié)合性?。鹤杂蚁蜃?、|:自左向右41例2.6int a=5; float b=3.5;!a0!b0a&b1a|b1 !a&!b 0424、注意在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行
31、下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。43例2.7a=0; b=1; c=2; d=a+&b+&- -c;d=(a+)&(b+)&(- -c);運(yùn)算結(jié)果: d=0,a=1,b=1,c=2(1)a & b & c求解方法:只有a為真(非0),才需要判斷b的值,只有a和b都為真,才需要判斷c的值。只要a為假,就不必判斷b和c,運(yùn)算立即中止。44(2)a | b | c求解方法:只要a為真(非0),就不必判斷b和c;只有a 為假,才判斷b;a和b都為假,才判斷c。例2.8 a=0; b=1; c=2; d=a+|b+|- -c; d=(a+)|(b+)|(- -c); 運(yùn)算結(jié)果: d
32、=1,a=1,b=2,c=2 452.4.3 賦值 1、賦值運(yùn)算符= (數(shù)學(xué)上的等號(hào))功能:將一個(gè)表達(dá)式的值賦給一個(gè)變量。2、簡(jiǎn)單的賦值表達(dá)式用賦值運(yùn)算符將變量和表達(dá)式連接起來(lái)的式子形式: =求值規(guī)則: 將“=”右邊表達(dá)式的值賦給左邊的變量。結(jié)合性:自右至左 463.賦值語(yǔ)句 在語(yǔ)言中也可以組成賦值語(yǔ)句,按照語(yǔ)言規(guī)定,任何表達(dá)式在其未尾加上分號(hào)就構(gòu)成為語(yǔ)句。因此如x=8和a=b=c=5;都是賦值語(yǔ)句,在前面各例中已大量使用過(guò)了。 如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型轉(zhuǎn)換成左邊的類型。具體規(guī)定如下: (1)實(shí)型賦予整型,舍去小數(shù)部分。 (2)整型賦予實(shí)
33、型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。 (3)字符型賦予整型,由于字符型為一個(gè)字節(jié),而整型為兩個(gè)字節(jié),故將字符的ASC碼值放到整型量的低8位中,高8位為0。 (4)整型賦予字符型,只把低8位賦予字符量。47例2.9 (1) x=(y=12)/4y值為12,x值為3,表達(dá)式的值為3(2) x=y=12/4y值為3,x值為3,表達(dá)式的值為3 (3) x=(y=12/4)(y值為3,x值為3,表達(dá)式的值為3 (4) (x=y)=12/4該賦值運(yùn)算符左邊不是變量,而是一個(gè)表達(dá)式484.復(fù)合賦值 *=、/=、%=、+=、-=、=、&=、=、=共10個(gè)由賦值運(yùn)算符與算術(shù)、位
34、移、位邏輯運(yùn)算符組成。復(fù)合運(yùn)算符是一個(gè)運(yùn)算符,但功能上,是兩個(gè)運(yùn)算符功能的組合。例2.10 a+=b 相當(dāng)于 a=a+ba*=b+c 相當(dāng)于 a=a*(b+c)a=2; a+=a*=a;492.4.4 逗號(hào)運(yùn)算 形式:逗號(hào)表達(dá)式1,逗號(hào)表達(dá)式2,逗號(hào)表達(dá)式n 求值規(guī)則:從左至右依次計(jì)算各表達(dá)式的值優(yōu)先級(jí)最低 結(jié)合性:自左至右 表達(dá)式的值最后一個(gè)表達(dá)式的值。50例2.11 a b y 逗號(hào)表達(dá)式 y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10注意:
35、C語(yǔ)言常用逗號(hào)作為分隔符, 例如: int a=3,b=4,c=5; printf(%d,%d,%d,(a,b,c); printf(%d,%d,%d,a,(a,b,c),c); 512.4.5 條件運(yùn)算1.條件運(yùn)算符有兩個(gè)符號(hào):?、:,它與三個(gè)操作數(shù)組成三元運(yùn)算。2.條件表達(dá)式 ? :求值規(guī)則和表達(dá)式的值:求解表達(dá)式1真(非0)求解表達(dá)式2假(0)求解表達(dá)式3表達(dá)式的值52優(yōu)先級(jí):邏輯 條件 賦值結(jié)合性: 自右至左例2.12 int max,a=5;b=3; max=ab?a:b-a=b+ ? a+ : b+ y = x10 ? x/10 : x0 ? x: -x;53求字節(jié)運(yùn)算 形式:si
36、zeof 變量名sizeof (類型名)功能:求得變量或某種數(shù)據(jù)類型所需的字節(jié)數(shù)。運(yùn)算結(jié)果:整型數(shù)例2.13 int a;float x;sizeof a,sizeof x,sizeof(int),sizeof(float) 54 2.5 計(jì)算和類型 2.5.1 類型對(duì)計(jì)算的限制 兩個(gè)int 類型的數(shù)據(jù)經(jīng)過(guò)計(jì)算,得到的還是int 類型的結(jié)果。對(duì)長(zhǎng)整數(shù) 類型、各種實(shí)數(shù)類型,情況也一樣。這個(gè)事實(shí)將帶來(lái)許多問(wèn)題。 首先,int 類型(以及l(fā)ong 類型)數(shù)據(jù)的除法是整除,計(jì)算得到的商仍為整數(shù),余數(shù)將被丟掉。這種情況有時(shí)會(huì)帶來(lái)一些容易迷惑用戶的結(jié)果。 例如,1/3*3和1*3/3, 這兩個(gè)表達(dá)表計(jì)算得
37、到的結(jié)果是不同的,前一個(gè)表達(dá)式計(jì)算出的值是0。對(duì)所有整數(shù)類型都有這個(gè)問(wèn)題,在寫程序時(shí)必須注意。下面的程序也不能正確地算出平均值: #include main() printf(Average of %d and %d is %dn“,68,39,(68+39)/2); 55intunsigned intlong intdoublefloatchar, short2.5.2 混合類型計(jì)算和類型轉(zhuǎn)換存儲(chǔ)長(zhǎng)度較短存儲(chǔ)長(zhǎng)度較長(zhǎng)總趨勢(shì):56例2.14 int x=2;float y=1.6;char c=A;c+x*y=?65(int)2(int)1.6 (double)3.2(double)68.2(
38、double)57賦值轉(zhuǎn)換在賦值時(shí),將賦值符右邊值的類型轉(zhuǎn)換成與其左邊變量類型一致的類型。幾種情況:(1) 實(shí)型整型(字符型)取整數(shù)部分,去掉小數(shù)部分(2) 整型、字符型實(shí)型補(bǔ)足有效位float f=23; 23.00000 (7位)double f=A; 65.00 000 000 000 000 (16位)58(3) 對(duì)char、int、short、long、unsigned型數(shù)據(jù)賦值符右邊數(shù)據(jù)(a位)賦值符左邊變量(b位)a=b 原樣照賦ab 截?cái)喔遖-b位,送低b 位a實(shí)際寬度,補(bǔ)空格。指定寬度實(shí)際寬度,按實(shí)際輸出。不指定寬度,按實(shí)際輸出。如:10d輸出精度指示符。對(duì)整數(shù),表示至少要輸
39、出的數(shù)字個(gè)數(shù),不足補(bǔ)數(shù)字,多出則原樣輸出。對(duì)實(shí)數(shù),表示小數(shù)點(diǎn)后至多輸出的數(shù)字個(gè)數(shù),不足補(bǔ)數(shù)字,多出則舍入處理。對(duì)字符串,表示最多輸出的字符個(gè)數(shù),不足補(bǔ)空格,多出則丟棄。輸出長(zhǎng)度修飾符:F:輸出遠(yuǎn)指針存放的地址。N:輸出近指針存放的地址。H或h:輸出短整型數(shù)據(jù)的值。L或l:輸出長(zhǎng)整型或雙精度值。格式字符,用來(lái)進(jìn)行格式轉(zhuǎn)換。(重點(diǎn)掌握)95()格式字符(type)一鑒表:字符說(shuō)明d(或i)以帶符號(hào)的十進(jìn)制形式輸出整數(shù),不輸出(+)號(hào)o以八進(jìn)制無(wú)符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符數(shù)字O)x(或X)以十六進(jìn)制無(wú)符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符Ox)u以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)c輸出一個(gè)字符s輸出字符串f以小
40、數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)e(或E)以指數(shù)形式輸出單、雙精度數(shù),小數(shù)位數(shù)為6位g(或G)由給定的值和精度自動(dòng)選用%f或%e或%E格式 %輸出百分號(hào)(%)96例3.4printf (%dn,100);printf(%5dn,100);printf(%8dn%8d,100,100*100);01001000097例3.5printf (%on,-1);177777printf (%x,%Xn,-1,-1);177777ffff,FFFFprintf (%u,%d,-1, -1);177777ffff,FFFF65535,-198printf (%4c,%cn,A, A);printf
41、 (%-8s,%8.2s, Name , Name ); A,A例3.6 A,AName-,-Na99printf (%fn%10.3fn,100.7654321, 100.7654321);printf (%en%10.9e, 100.7654321,100.7654321);例3.7100.765432 100.765100.765432100.7651.00765e+21.00765432e+2100#includestdio.hmain() int i=8;printf(%dt%dt%dn,+i,-i,i-);例3.8計(jì)算方向輸出結(jié)果為: 7 6 8 101注意:使用函數(shù)printf時(shí)
42、要注意一個(gè)問(wèn)題,那就是輸出表列中的求值順序。不同的編譯系統(tǒng)不一定相同,可以從左到右,也可從右到左。Turbo C是按從右到左進(jìn)行的。 102#include stdio.hmain() int a=3,b=4;printf(%dn,(a=b,b,a+3); /*輸出序列是一個(gè)逗號(hào)表達(dá)式*/printf(%dn,a=b,b,a+3); /*輸出第一個(gè)參數(shù)變量a的值*/例3.9輸出結(jié)果為: 7 41031、字符輸入函數(shù)(1)函數(shù)原型int getchar(void);函數(shù)返回值類型函數(shù)的名稱無(wú)參數(shù)(2)函數(shù)功能從標(biāo)準(zhǔn)輸入設(shè)備(一般為鍵盤)讀入一個(gè)字符,返回該字符的ASCII碼值,并且將敲入的字符“
43、回顯”到屏幕上。3.2.3 getchar()函數(shù)和putchar()104例3.10#include /*說(shuō)明函數(shù)getchar的原型包含在哪個(gè)文件中*/main()int a; char b; a=getchar(); b=getchar(); printf(a=%cta=%dtb=%ctb=%dn,a,a,b,b); 從鍵盤輸入字符, 該字符的ASCII編碼值賦給a105程序運(yùn)行情況如下:13 a=1a=49b=3b=51 106注意:調(diào)用函數(shù)getchar時(shí),程序執(zhí)行被中斷,等待用戶從鍵盤輸入數(shù)據(jù)。當(dāng)用戶鍵入字符并敲回車鍵以后,程序繼續(xù)運(yùn)行。若用戶輸入字符后未按回車鍵,則鍵入的內(nèi)容一直
44、保留在鍵盤緩沖區(qū)中,只有用戶鍵入回車鍵后,字符輸入函數(shù)getchar才進(jìn)行處理。 函數(shù)getchar將回車鍵作為一個(gè)字符讀入。如果程序中有兩個(gè)以上函數(shù)getchar時(shí),應(yīng)該一次性輸入所需字符,最后再按回車鍵,如上例所示。無(wú)論輸入的是英文字母或標(biāo)點(diǎn)符號(hào)還是數(shù)字,都是作為字符輸入 。107(1)函數(shù)原型int putchar(int);函數(shù)返回值類型函數(shù)的名稱函數(shù)的參數(shù)(2)函數(shù)功能向標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示器)輸出一個(gè)字符,并返回輸出字符的ASCII碼值。2、字符輸出函數(shù)108例3.11#include 程序運(yùn)行結(jié)果為:ABBCmain( ) int a=65; char b=B; putcha
45、r(a); putchar(65+1); putchar(b); putchar(B+1); 包含函數(shù)putchar的頭文件1093.2.4 數(shù)據(jù)輸入/輸出程序舉例例3.12 輸入一個(gè)華氏溫度,輸出對(duì)應(yīng)的攝氏溫度。輸出取1位小數(shù)。轉(zhuǎn)換公式為 #include stdio.hmain()float c,f;scanf(%f,&f);c=5.0/9*(f-32);printf(%.1fn,c); 注意數(shù)學(xué)表達(dá)式到C語(yǔ)言表達(dá)式的轉(zhuǎn)換 110例3.13 輸入兩個(gè)整數(shù)a、b,將它們交換,例如a為3,b為5,交換后a為5,b為3。 #include stdio.hmain()int a,b,t; /*t就
46、相當(dāng)于空杯子*/scanf(%d,%d,&a,&b);printf(a=%d,b=%dn,a,b); /*觀察原來(lái)的值*/t=a;a=b;b=t;printf(a=%d,b=%dn,a,b); /*觀察交換后的值*/用于交換變量a、b的方法通常稱為兩兩交換法。 111例3.14 從鍵盤輸入圓半徑,求圓的面積和周長(zhǎng),結(jié)果保留兩位小數(shù) 。#include stdio.h#include math.hmain()float r,area,peri; scanf(%f,&r);area=3.14*pow(r,2);/*函數(shù)pow(x,y)表示xy */peri=2*3.14*r;printf(area
47、=%.2f,peri=%.2fn,area,peri); 112問(wèn)題提出:計(jì)算分段函數(shù): y=3-x x02/x x0解題的步驟:輸入xx0是 y=3-xy=2/x否 輸出y的值 第四章 問(wèn)題的提出 C語(yǔ)言用來(lái)設(shè)計(jì)條件選擇結(jié)構(gòu)程序的選擇語(yǔ)句有兩種: if語(yǔ)句、switch語(yǔ)句。 3.3 條件控制語(yǔ)句1133.3.1 if語(yǔ)句 1、單分支選擇if語(yǔ)句if語(yǔ)句有三種形式:?jiǎn)畏种нx擇if語(yǔ)句、雙分支選擇if語(yǔ)句、多分支選擇if語(yǔ)句。 語(yǔ)句形式: if (表達(dá)式) 語(yǔ)句; 語(yǔ)句執(zhí)行流程: 表達(dá)式語(yǔ)句真(非0)假(0)一、 if語(yǔ)句的三種形式114例3.15 從鍵盤輸入兩個(gè)整數(shù)a和b,如果a大于b則交換
48、兩數(shù),最后輸出兩個(gè)數(shù)。 #include 輸入a,bab交換a、b輸出結(jié)束真假 main() int a,b,t; scanf(%d,%d,&a,&b); if(ab) t=a;a=b;b=t; printf(a=%d,b=%dn,a,b); 115注意: (1)if語(yǔ)句自動(dòng)結(jié)合一個(gè)語(yǔ)句,當(dāng)滿足條件需要執(zhí)行多個(gè)語(yǔ)句時(shí),應(yīng)用一對(duì)大括號(hào) 將需要執(zhí)行的多個(gè)語(yǔ)句括起,形成一個(gè)復(fù)合語(yǔ)句。 (2)if語(yǔ)句中表達(dá)式形式很靈活,可以是常量、變量、任何類型表達(dá)式、函數(shù)、指針等。只要表達(dá)式的值為非零值,條件就為真,反之條件為假。 1162、雙分支選擇if語(yǔ)句語(yǔ)句形式:if (表達(dá)式) 語(yǔ)句1;else 語(yǔ)句2 ;
49、 語(yǔ)句執(zhí)行流程: 表達(dá)式語(yǔ)句1真(非0)假(0)語(yǔ)句2117例3.16 輸入兩個(gè)整數(shù),輸出其中較大的數(shù)。 #include #include main() int x,y,max; scanf(%d,%d,&x,&y); if(xy) max=x; else max=y; printf(max=%dn,max); 輸入x,yxymax=x輸出最大值結(jié)束真假max=y118注意if和else語(yǔ)句之間只能有一個(gè)語(yǔ)句,當(dāng)ifelse之間的語(yǔ)句不只一句時(shí),應(yīng)用一對(duì)將語(yǔ)句括起。 if(ab) a+;b+;else a=0;b=10; 1193、多分支選擇if語(yǔ)句語(yǔ)句形式:if (表達(dá)式1) 語(yǔ)句1;el
50、se if (表達(dá)式2)語(yǔ)句2; else if (表達(dá)式n)語(yǔ)句n; else 語(yǔ)句n+1;120語(yǔ)句執(zhí)行流程: 表達(dá)式2表達(dá)式1語(yǔ)句1真(非0)假(0)語(yǔ)句2真(非0)表達(dá)式2語(yǔ)句n語(yǔ)句n+1假(0)假(0)121例3.17 計(jì)算分段函數(shù)。假輸入xX=1真X10y=3/(x-10)y=2xy=x+5假真122#include main()float x,y; printf(enter x:); scanf( %f ,&x); else if (x=1) y=x+5; else if (x=60n);break; default:printf(grade60);各case和default子句
51、的先后順序可以變動(dòng),而不會(huì)影響程序執(zhí)行結(jié)果。 132default語(yǔ)句可以省略不用。case和default與其后面的常量表達(dá)式間至少有一個(gè)空格。switch語(yǔ)句可以嵌套,break語(yǔ)句只跳出它所在的switch語(yǔ)句。 133例3.19 企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。從鍵盤輸入當(dāng)月利潤(rùn),求應(yīng)發(fā)放獎(jiǎng)金總數(shù)? 134利潤(rùn)xx=1010 x2020 x4040 x6060 x100100 x (int )x/10 常量0,11,22,3,44,5,66,7,8,9,1010以上 用這種方法轉(zhuǎn)換后,n出現(xiàn)了在不同區(qū)域有重復(fù)數(shù)字的情況。解決的方法有很多,其中一種是可以采用當(dāng)x為10的整數(shù)倍時(shí),將計(jì)算出的n
52、值減1。 使用switch解題的關(guān)鍵,通過(guò)分析找到表達(dá)式,將問(wèn)題分成幾種情況。135#include stdio.hmain()float x,y; int n; scanf(%f,&x); n=(int)x/10; if(int)x%10=0) n-; switch(n) case 0:y=x*0.1;break; case 1:y=x*0.12;break; case 2:case 3:y=x*0.14;break; case 4:case 5:y=x*0.16;break; case 6:case 7:case 8:case 9:y=x*0.18;break; default:y=x*0
53、.2; printf(y=%.2fn,y); 程序如下:1363.3.3 條件控制語(yǔ)句程序應(yīng)用例3.20 將任意三個(gè)整數(shù)按從大到小的順序輸出。 #include stdio.hmain()int x,y,z,t;scanf(%d,%d,%d,&x,&y,&z);if(xy) t=x;x=y;y=t; /*交換x,y的值*/if(xz) t=x;x=z;z=t; /*交換x,z的值*/if(yc&a+cb&b+ca) if(a=b&b=c) printf(equalateral triangle.n); else if(a=b|a=c|b=c) printf(isoscelestriangle.
54、n); else printf(other triangle.n); else printf(can notn);139例3.23 從鍵盤輸入一個(gè)年份,判斷是否是閏年。#include stdio.hmain()int year; scanf(%d,&year); if(year%400=0|(year%4=0&year%100!=0) printf(%d is a leap yearn,year);else printf(%d is not a leap yearn,year);1.main()int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y)
55、case 0: a+;break; case 1:b+;break; case 2: a+;b+;break; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); 結(jié)果:a=2,b=1課堂練習(xí)2.程序填空: 以下程序判斷輸入的整數(shù)能否被3或7整除.main()int x,f=0;scanf( “%d”,&x );if( 1 ) ( 2 ) if(f=1) printf(“YESn”);else printf(“NOn”);142在C語(yǔ)言中可以用以下語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán):1. 用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán);2. 用while語(yǔ)句;3. 用do-while語(yǔ)句;4. 用f
56、or語(yǔ)句。第五章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 循環(huán):就是在給定的條件成立時(shí)反復(fù)執(zhí)行某一程序段,被反復(fù)執(zhí)行的程序段稱為循環(huán)體。3.4 循環(huán)控制語(yǔ)句1433.4.1 while語(yǔ)句真(非零)表達(dá)式 循環(huán)體假(零)1、while 語(yǔ)句的形式: while (表達(dá)式) 循環(huán)體; 2 、 while 語(yǔ)句 常稱為“當(dāng)型”循環(huán)語(yǔ)句。1443、說(shuō)明:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。表達(dá)式同if語(yǔ)句后的表達(dá)式一樣,可以是任何類型的表達(dá)式。 循環(huán)體多于一句時(shí),用一對(duì) 括起。while循環(huán)結(jié)構(gòu)常用于循環(huán)次數(shù)不固定,根據(jù)是否滿足某個(gè)條件決定循環(huán)與否的情況。 145例3.24 分析下列程序段的循環(huán)次數(shù)i=1; while (i0)
57、printf( + ); else printf( - ); scanf( %f ,&x); 判斷正負(fù)號(hào) 第五章 5.1 while語(yǔ)句147#include stdio.h main() char ch;int num=0; ch=getchar();例3.26 統(tǒng)計(jì)從鍵盤輸入的一行字符的個(gè)數(shù)(以回車鍵作為輸入結(jié)束標(biāo)記)。while(ch!=n) 判斷是否輸入結(jié)束 num+; ch=getchar(); printf(num=%dn,num); 148注意表達(dá)式在判斷前,必須要有明確的值。 循環(huán)體中一般有改變條件表達(dá)式的語(yǔ)句。 while (表達(dá)式)后面沒(méi)有分號(hào)。 1493.4.2 do-w
58、hile語(yǔ)句1、 do-while的形式: do 循環(huán)體; while (表達(dá)式);2、 do-while語(yǔ)句 常稱為“直到型”循環(huán)語(yǔ)句。真(非零)表達(dá)式 循環(huán)體假(零)1503、說(shuō)明:先執(zhí)行語(yǔ)句,后判斷表達(dá)式。第一次條件為真時(shí),while,do-while等價(jià);第一次條件為假時(shí),二者不同。151 例3.27 用do-while語(yǔ)句編寫程序統(tǒng)計(jì)從鍵盤輸入的一行非空字符的個(gè)數(shù)(以回車鍵作為輸入結(jié)束標(biāo)記)。 #include stdio.hmain()char ch; int num=0; ch=getchar(); do num+; ch= getchar(); while(ch!=n); pr
59、intf(num=%dn,num); 152注意在if、while語(yǔ)句中,表達(dá)式后面都沒(méi)有分號(hào),而在do-while語(yǔ)句的表達(dá)式后面則必須加分號(hào)。do-while和while語(yǔ)句相互替換時(shí),要注意修改循環(huán)控制條件 。1533.4.3 for語(yǔ)句1、for的形式:for (初始表達(dá)式1;條件表達(dá)式2;循環(huán)表達(dá)式3) 循環(huán)體 ; 表達(dá)式1:用于循環(huán)開始前為循環(huán)變量設(shè)置初始值。表達(dá)式2:控制循環(huán)執(zhí)行的條件,決定循環(huán)次數(shù)。表達(dá)式3:循環(huán)控制變量修改表達(dá)式。循環(huán)體語(yǔ)句: 被重復(fù)執(zhí)行的語(yǔ)句。154表達(dá)式3計(jì)算表達(dá)式1循環(huán)體判斷表達(dá)式2零非零for的下一條語(yǔ)句2、執(zhí)行過(guò)程155 for(i=1;i=100;
60、i+) sum=sum+i; 例如:它相當(dāng)于以下語(yǔ)句: i=1; while (i=100) sum=sum+i; i+; 表達(dá)式1;while(表達(dá)式2)表達(dá)式3;1563、 說(shuō)明三個(gè)表達(dá)式都可以是逗號(hào)表達(dá)式。 三個(gè)表達(dá)式都是任選項(xiàng),都可以省略,但要注意省略表達(dá)式后,分號(hào)間隔符不能省略。 157 1、for語(yǔ)句中表達(dá)式省略的形式(1)for語(yǔ)句一般形式中的“表達(dá)式1”可以省略; 如: sum=0;i=1; for ( ; i100) break; sum=sum+i; 自學(xué)輔導(dǎo)1591、for語(yǔ)句中表達(dá)式省略的形式(3)表達(dá)式3也可以省略,但此時(shí)保證循環(huán)能正常結(jié)束如: for(sum=0,i
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版木材加工廢棄物處理合同3篇
- 二零二五年度苗圃場(chǎng)租賃與環(huán)保技術(shù)應(yīng)用合同3篇
- 承包協(xié)議合同(2篇)
- 二零二五版農(nóng)業(yè)用地流轉(zhuǎn)合同范本(含政府補(bǔ)貼條款)3篇
- 2025年度節(jié)能環(huán)保型木模板木方采購(gòu)與回收利用合同4篇
- 二零二五版南京海事法院港口設(shè)施設(shè)備租賃合同4篇
- 2025年度綠色生態(tài)園區(qū)排水溝施工及維護(hù)一體化合同標(biāo)準(zhǔn)3篇
- 2025年度農(nóng)機(jī)零部件供應(yīng)及維修服務(wù)合同規(guī)范本4篇
- 2025年度泥漿外運(yùn)承包合同(含廢棄物處理項(xiàng)目融資)4篇
- 2025年度學(xué)校信息化系統(tǒng)升級(jí)與優(yōu)化承包合同范本4篇
- 【語(yǔ)文】第23課《“蛟龍”探海》課件 2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 加強(qiáng)教師隊(duì)伍建設(shè)教師領(lǐng)域?qū)W習(xí)二十屆三中全會(huì)精神專題課
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊(cè)期末復(fù)習(xí)卷(含答案)
- 2024年決戰(zhàn)行測(cè)5000題言語(yǔ)理解與表達(dá)(培優(yōu)b卷)
- 四年級(jí)數(shù)學(xué)上冊(cè)人教版24秋《小學(xué)學(xué)霸單元期末標(biāo)準(zhǔn)卷》考前專項(xiàng)沖刺訓(xùn)練
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- (完整版)減數(shù)分裂課件
- 銀行辦公大樓物業(yè)服務(wù)投標(biāo)方案投標(biāo)文件(技術(shù)方案)
- 第01講 直線的方程(九大題型)(練習(xí))
- 微粒貸逾期還款協(xié)議書范本
- 人教版七年級(jí)上冊(cè)數(shù)學(xué)全冊(cè)課時(shí)練習(xí)帶答案
評(píng)論
0/150
提交評(píng)論