計算機(jī)C語言第二章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第1頁
計算機(jī)C語言第二章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第2頁
計算機(jī)C語言第二章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第3頁
計算機(jī)C語言第二章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第4頁
計算機(jī)C語言第二章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第二章9/20/20221第一節(jié) 程序設(shè)計的基本知識第二節(jié) 數(shù)據(jù)與數(shù)據(jù)類型第三節(jié) C語言的基本數(shù)據(jù)類型及其表示第四節(jié) 算術(shù)運(yùn)算與賦值運(yùn)算第五節(jié) 逗號運(yùn)算第六節(jié) 關(guān)系運(yùn)算和邏輯表達(dá)式第二章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式2程序設(shè)計步驟分析問題,建立數(shù)學(xué)模型確定數(shù)據(jù)結(jié)構(gòu)確定算法,描述算法編制程序,調(diào)試程序運(yùn)行結(jié)果2.1 程序設(shè)計的基本知識3數(shù)據(jù)類型構(gòu)造類型指針類型空類型(無值類型) void數(shù)組類型結(jié)構(gòu)體類型 struct共用體類型 union實型(浮點型)基本類型整型 int字符型 char單精度實型 float雙精度實型 doubleC語言的數(shù)據(jù)類型有 2.2 數(shù)據(jù)與數(shù)據(jù)類型4關(guān)于類型的含義1.不同

2、類型數(shù)據(jù)在內(nèi)存中占不同的存儲空間,且采取不同的存儲形式。2.不同類型數(shù)據(jù)對應(yīng)不同的取值范圍。3.數(shù)據(jù)類型確定了允許對其進(jìn)行的操作。 2.2 數(shù)據(jù)與數(shù)據(jù)類型(完)5 2.3 C語言的基本數(shù)據(jù)類型 按照數(shù)據(jù)在程序中的取值:值保持不變-常量 值隨程序運(yùn)行變化-變量x=2 * y基本類型整型 int字符型 char實型(浮點型)6一、常量1. 在程序運(yùn)行中,其值保持不變。 2. 表示方法:整型 100,125,-100實型 3.14 , 0.125字符型 a, b字符串常量 “string”3.符號常量: #define PI 3.14159用指定的標(biāo)識符表示某個常量2.3.1 常量與變量 2.3 C

3、語言的基本數(shù)據(jù)類型(續(xù)) 7#include #define PRICE 30void main ( ) int num, total; num = 10; total = num * PRICE; printf (total = %d, total); 運(yùn)行結(jié)果:total = 300 行尾不能有分號 define前面一定要有# 符號常量名最好使用大寫 符號常量名最好有意義 8memorya二、變量3. 變量通過變量名標(biāo)識1. 在程序運(yùn)行中,值發(fā)生變化2. 必須先定義,再使用int a,b;類型 變量名表變量2563變量名和內(nèi)存中的存儲單元相對應(yīng)。編寫程序時通過變量名來存、取存儲單元。 2.

4、3 C語言的基本數(shù)據(jù)類型(續(xù)) 9(1)字母、數(shù)字和下劃線組成,以字母或下劃線開頭(2)不能用系統(tǒng)中的關(guān)鍵字作為變量名int a,b A123,_b;int a;.A=5;4. 有關(guān)變量名的規(guī)定(3)變量名中的字母是區(qū)分大小寫的。sum、stu_name、_age、Lts_1_2、a2NAME name 表示兩個不同的標(biāo)識符。不提倡大小寫混合使用 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 10語言程序設(shè)計教程 第三章 基本數(shù)據(jù)類型C例:判斷下列標(biāo)識符號合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _ab

5、ove $123 .字符非法 數(shù)字3不可作首字符 #字符非法 char是關(guān)鍵字 字符非法 $不可作首字符11一、整型常量表示形式十進(jìn)制 八進(jìn)制十六進(jìn)制1234加前導(dǎo)0 01234,0125加前導(dǎo)0 x 0 x123,0 xffff例 100、-8、0;010、024;0 x38、0 x1F2.3.2 整型數(shù)據(jù) 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 包括整型常量和整型變量12思考題:下列整型常量哪些是非法的? 012,oX7A,00,078,0 x5Ac,-0 xFFFF,0034,7B。首字符不能是字母o 八進(jìn)制數(shù)中不能有數(shù)字8 十進(jìn)制數(shù)中不能有字母B 13二、整型變量 掌握要點 1 有幾種定義

6、形式 2 每種形式占存儲空間的大小 3 取值范圍 4 輸入輸出格式 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 141. 定義形式共六種基本整型短整型長整型 int short intlong int2. 占存儲空間224字節(jié) 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 15int型數(shù)的表示范圍:存儲長度16位二進(jìn)制(2Byte) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1215-1=327670 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-215=-

7、32768例補(bǔ)碼表示int型表示數(shù)的范圍:- 32768 32767 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 161. 定義形式共六種基本整型短整型長整型無符號整型無符號短整型無符號長整型 int short intlong intunsigned int2. 占存儲空間2242字節(jié)unsigned short intunsigned long int24 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 173.整型變量的取值范圍 類型 類型定義符 長度 數(shù)的范圍基本型 int 2字節(jié) -3276832767短整型 short 2字節(jié) -215215-1 長整型 long 4字節(jié) -231231-1無符號整型

8、 unsigned 2字節(jié) 065535(216-1)無符號短整型 unsigned short 2字節(jié) 065535無符號長整型 unsigned long 4字節(jié) 0(232-1) 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 184.輸入輸出格式十進(jìn)制:d八進(jìn)制:o十六進(jìn)制:x例2.1 輸入一個十進(jìn)制數(shù),然后分別以十進(jìn)制、八進(jìn)制和十六進(jìn)制輸出。 main() int num;printf(“num=“);scanf(“%d”,&num);printf(“%d=%dn”,num,num);printf(“%d=O%on”,num,num);printf(“%d=OX%xn”,num,num);19m

9、ain( ) int a = -4; unsigned long u; u = a; /*u的值將是0 xfffc*/20例:整型變量的定義與使用整型數(shù)據(jù)的溢出 main() int a,b;a=32767; b=a+1;printf(“%d,%d”,a,b);例2.2 main() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);32767,-3276821包括實型常量和實型變量一、實型常量表示形式小數(shù)指數(shù)0.1233e-3實型常量只能用十進(jìn)制形式表示,不能用八進(jìn)制和十六進(jìn)制

10、2.3.3 實型數(shù)據(jù)用指數(shù)表示實型常量的規(guī)則 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 注意:字母e或E之前必須有數(shù)字,且e或E指數(shù)必須為整數(shù)非法的實數(shù)表示: 345(無小數(shù)點) ,E7(階碼標(biāo)志E之前無數(shù)字) , -5(無階碼標(biāo)志) ,50.-E3(負(fù)號位置不對) 221. 定義形式共三種單精度雙精度長雙精度 floatdoublelong double2. 占存儲空間4816字節(jié)二、實型變量 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 23實型數(shù)據(jù)在計算機(jī)中以指數(shù)形式存儲,單精度實型變量用一個字節(jié)存放指數(shù)部分, 其余三個字節(jié)存數(shù)值部分 。 7位二進(jìn)制 23位二進(jìn)制單精度實型尾數(shù)指數(shù) 2.3 C語言的基本

11、數(shù)據(jù)類型(續(xù)) 243. 變量的取值范圍4.輸入輸出形式 %f ,%e 類型 長度 數(shù)的范圍 有效位單精度 float 4 10-38 1038 7-8位雙精度 double 8 10-308 10308 15-16位長雙精度 long double 16 10-4931-104932 18-19位 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 有效位表示數(shù)據(jù)在前幾位之內(nèi)是有效的,其后的數(shù)字則是計算機(jī)的隨機(jī)數(shù)25#include void main ( ) float a; /定義float型變量a double b, c; /定義double型變量b和c a = 123.456789; /對變量a賦值

12、為123.456789 b = a; /將變量a賦給變量b c = 123.456789; /對變量c賦值為123.456789 printf(a = %f b = %lf c = %lfn, a, b, c);abc123.456787123.456787123.456789a = 123.456787 b = 123.456787 c = 123.456789 float型變量最多只能精確表示8個數(shù)字,因此顯示a的值時,只能有效顯示前面8個數(shù)字即123.45678,最后追加一位數(shù)字7是隨機(jī)的 26實型數(shù)據(jù)的舍入誤差例2.3main()float a,b;a=123456.789e5 b=a

13、+20;printf(“a=%f”,a);printf(“b=%f”,b); 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 程序運(yùn)行結(jié)果:a=12345678848.000000b=12345678848.000000要避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減27編寫一個程序,提示用戶輸入圓的半徑,求圓的周長和面積。作業(yè):習(xí)題三.128 包括字符型常量和字符型變量一、字符型常量1. 用單引號包含的一個字符是字符型常量2 .只能包含一個字符a, A, 1abc“a”2.3.4 字符型數(shù)據(jù) 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 293 有些以“”開頭的特殊字符稱為轉(zhuǎn)義字符n 換行t 水平制表,跳到下一個

14、tab位置r 回車,從當(dāng)前位置移到本行開頭b 退格,從當(dāng)前位置移到前一列 反斜杠字符“” 單撇號字符“” 雙撇號字符“”ddd 1到3位八進(jìn)制數(shù)所代表的字符xhh 1到2位16進(jìn)制數(shù)所代表的字符 printf(“%d t %d n”,a,b); printf(“%d n %d n”,a,b);若:a為1,b為01 010 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 一個“制表區(qū)”占8列30例子2.4main()printf (“ ab ct derftgn”);printf(“htibbj k”)31例: 轉(zhuǎn)義字符舉例 #include void main ( ) printf (101 x42 Cn

15、); printf (I say:How are you?n); printf (C Programn); printf (Visual C);運(yùn)行結(jié)果:(屏幕顯示)A B CI say:”How are you?”C ProgramVisual C321. 定義形式2. 占存儲空間一個字節(jié)二、字符型變量char一個字符變量只能包含一個字符3. 輸入輸出形式 %ca ASCII值為 97 內(nèi)存中存儲形式0 1 1 0 0 0 0 14. 字符型數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII值存儲 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 33在ASCII范圍以內(nèi),整型數(shù)據(jù)main( ) char c ; int i

16、 c = c; i=97printf ( “%c %d”, c,c );printf ( “%c,%d”, i,i );C 99a,97題目中有多個c,哪些是等價的?運(yùn)行結(jié)果: 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 34三、字符串常量1 雙引號內(nèi)的一串字符 “china”2 n個字符組成的字符串常量, 在 內(nèi)存中占空間為n+1 個字節(jié)。china0字符串結(jié)束標(biāo)記C 中沒有專用的字符串變量“This is C string” 串長 16 “a” 串長 1 “ ” (空格)串長 1 “” (不含空格)串長 0 2.3 C語言的基本數(shù)據(jù)類型(續(xù)) 35各類數(shù)據(jù)間的混合運(yùn)算混合運(yùn)算:10a1.5-876

17、5.1234*b進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型。自動轉(zhuǎn)換規(guī)則:(1)低類型向高類型轉(zhuǎn)換例:i為int變量,f為float變量d為double變量,e為long型 10ai*fd/e(2)賦值符號“”右邊的類型轉(zhuǎn)換成左邊的類型doublefloatlongunsignedintchar,short36main() float f1,f2=12.34;int num1=123;char c1=a;f1=f2-c1;num1=num1+f1printf(“f1=%f,num1=%d”,f1,num1);強(qiáng)制轉(zhuǎn)換:(數(shù)據(jù)類型名)(表達(dá)式) 如: (int) (10a+i*fd/e) 如:

18、 float x=12.3; y=(int)x;P25例3.10 37變量賦初值C語言允許在定義變量的同時使變量初始化。如:int a=3; float f=3.56; char c=a;也可以使被定義的變量的一部分賦初值。如:int a,b,c=5;也可以對幾個變量賦予同一個初值。如:int a=b=c=3;38 2.4 算術(shù)運(yùn)算與賦值運(yùn)算一、運(yùn)算符運(yùn)算符 運(yùn)算分量X= 5 + b * c 對數(shù)據(jù)進(jìn)行運(yùn)算的符號被加工的數(shù)據(jù)+表達(dá)式2.4.1 認(rèn)識C中的運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符賦值運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符逗號運(yùn)算符條件運(yùn)算符. 運(yùn)算符392.表達(dá)式的運(yùn)算結(jié)果稱為表達(dá)式的值 1. 運(yùn)算符和運(yùn)算

19、分量構(gòu)成表達(dá)式二. 表達(dá)式算術(shù)表達(dá)式賦值表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式逗號表達(dá)式條件表達(dá)式.例: 3 + 5 * 8、(x + y) / 2 - 1等 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))40三. 學(xué)習(xí)運(yùn)算符應(yīng)掌握的要點:* 運(yùn)算符的種類與功能* 運(yùn)算符與運(yùn)算分量的關(guān)系個數(shù)類型A + B (ab) ? a: b目關(guān)系不同類型的變量,所允許的操作不同單目運(yùn)算符雙目運(yùn)算符三目運(yùn)算符 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))41*優(yōu)先級: 運(yùn)算符的執(zhí)行順序 *結(jié)合性: 優(yōu)先級相同時的結(jié)合方向*運(yùn)算結(jié)果的類型X=5+8a100X=a+b*ca+b-c572a=b=5結(jié)果?單目運(yùn)算符的優(yōu)先級高于雙目運(yùn)算符單目運(yùn)算符從右

20、向左結(jié)合雙目運(yùn)算符從左向右結(jié)合 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))422.4.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式1. 共有5個:+,-,*,/,%2 “-”作為 負(fù)號時為單目單目: -雙目:*, /, %雙目:+,-4. 優(yōu)先級: 5. 結(jié)合性: 從左向右 3. %運(yùn)算只適用于整型數(shù)取模(求余數(shù))a=10%4a的值為2 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))432.4.3 自增、自減運(yùn)算符1. 變量自身加(減)1 k =k+1k + 先使用變量k的值,再加 1+ k 先加1,再使用變量 k的值 k = k-1k - - 先使用變量k的值,再減 1- - k 先減1,再使用變量k 的值 k=3; printf(

21、 “%d”, k +); i=3; printf( “%d”, + i); 輸出 3 后, k 的值為 4輸出4 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))442. 只能用于變量,不能用于表達(dá)式和常量3. 優(yōu)先級:高于雙目算術(shù)運(yùn)算符(i+k) + , - - 3i=3; k=i+ + i+ + i+;容易 產(chǎn)生歧義printf(“%d,%d”,i,i+) 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))45例: main( ) int a , b , s ; a = 5 ; b = 5 ; s= a+b ; printf(“%d,%d,%dn”,a,b,s); s= a+ +b; printf(“%d,%d,%dn”,

22、a,b,s); s= +a+b; printf(“%d,%d,%dn”,a,b,s); s= - -a +b; printf(“%d,%d,%dn”,a,b,s); s= a- - +b; printf(“%d,%d,%dn”,a,b,s); s= a + b; printf(“%d,%d,%dn”,a,b,s); 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))46s = a + b ; s = a+ +b ; s = +a +b ; s = - -a +b ; s = a- - +b ; s = a + b ; a=5, b=55+5=105+5=107+5=126+5=116+5=115+5=10 a

23、b s5 5 106 5 107 5 126 5 115 5 115 5 10題目分析 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))47語言程序設(shè)計教程 第三章 基本數(shù)據(jù)類型C例: int p, i = 2, j = 3; p = -i+; p = ? i = ? p = i+j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+i+; p = ? i = ? -2353342243244 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))負(fù)號運(yùn)算符和“”運(yùn)算符同優(yōu)先級,結(jié)合方向為“自右向左)482.4.4 賦值

24、運(yùn)算符和賦值表達(dá)式1. 將一個常量或一個表達(dá)式的值賦給一個變量稱為賦值x = 5 y = x + 10 2. 可以將一個實型賦給一個整型,或?qū)⒁粋€整型賦給一個實型int x; x=5.3; x的值為 5float y=5; y的值為 5.0000003. 賦值運(yùn)算的優(yōu)先級比算術(shù)運(yùn)算低4. 賦值運(yùn)算的結(jié)合性從右向左X = y = 5 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))492.4.5 復(fù)合賦值運(yùn)算符和復(fù)合賦值表達(dá)式賦值運(yùn)算符兩側(cè)出現(xiàn)相同的變量x=x+nx=x-nx=x*nx=x/nx=x%nx + = nx - = nx * = nx / = nx% = n算術(shù)運(yùn)算與賦值運(yùn)算相結(jié)合x=x+nn 為常

25、數(shù)x+=n 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))50賦值運(yùn)算符的結(jié)合性:自右向左例: x*=x+=x; 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))51例main( ) int a, b, c, d, e; a=2; b=5 ;c= 6;d=10; a + =b; b- =c; c * =d; d / =a; a%=c; printf(“%d,%d,%d,%dn”, a , b , c , d); 7,-1,60,1 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))52賦值表達(dá)式賦值操作不僅可以出現(xiàn)在賦值語句中,也可以以表達(dá)式形式出現(xiàn)在其它語句中,如:a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)

26、/(c=2)printf(“%d”,a=b)?a+=a=a*a如果a的初值為12 2.4 算術(shù)運(yùn)算與賦值運(yùn)算(續(xù))53一、逗號運(yùn)算符,(表達(dá)式 1,表達(dá)式 2,表達(dá)式 3,表達(dá)式 n)用于連接幾個表達(dá)式 二、求解過程順序求解幾個表達(dá)式三、優(yōu)先級逗號運(yùn)算符的優(yōu)先級最低四、結(jié)合性從左向右五、逗號表達(dá)式逗號表達(dá)式的值為最后一個表達(dá)式的值(表達(dá)式n 的值)X = ( ( a=4*5 , a*2 ) , a+6 )a為? 20 x為?262.5 逗號運(yùn)算逗號運(yùn)算符542.6 關(guān)系運(yùn)算與邏輯運(yùn)算關(guān)系運(yùn)算和邏輯運(yùn)算經(jīng)常作為條件語句和循環(huán)語句中的條件,其結(jié)果為一邏輯值 A和 B中至少有一個大于 C如何用C語言

27、描述 A和 B全部大于 CA為不大于100 的 偶 數(shù)關(guān)系運(yùn)算是一種比較運(yùn)算,將兩個值(表達(dá)式)進(jìn)行比較,判斷比較的結(jié)果是否符合給定的條件關(guān)系運(yùn)算邏輯運(yùn)算55一、關(guān)系運(yùn)算符大于 , 大于等于 =,小于 ,不等 != 小于等于bc例:a+bc+d a=cb562. 關(guān)系表達(dá)式的結(jié)果是一個邏輯值,根據(jù)關(guān)系是否滿足,分別取 1,或 0二、關(guān)系表達(dá)式1 . 關(guān)系運(yùn)算符與運(yùn)算分量構(gòu)成關(guān)系表達(dá)式int i=1,j=7,a; a=i+(j%4!=0)a的值?結(jié)果:a=23. 使用關(guān)系表達(dá)式應(yīng)注意!1) 數(shù)學(xué)上,判斷x是否在區(qū)間 a,b 時,習(xí)慣上寫成a=x=b,但在C 中,必須寫成 a=x & x0 的值為

28、邏輯 12.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))573) 在數(shù)學(xué)中,5 2 7 8 無效,但C中是允許 的4)關(guān)系表達(dá)式的結(jié)果可以當(dāng)成整型數(shù)int a=3,b=5,c=7,d; d = a c邏輯117邏輯0d的值為02.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))582.6.2 邏輯運(yùn)算符與邏輯表達(dá)式一 、邏輯運(yùn)算符1. 有三個& & (與): 兩邊為真,結(jié)果為真| (或):兩邊有一個為真,結(jié)果為真! (非):真為假,假為真2.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))例:a&b 若a,b為真,則a&b 為真 a|b 若a,b之一為真,則a|b 為真 !a 若a為真,則!a為假59邏輯運(yùn)算真值表ab!a!ba&ba|b真假真假假

29、假真真真假假假假假真真假假真真真假真真C語言中,運(yùn)算量: 0表示“假”, 非0表示“真”, 運(yùn)算結(jié)果: 0表示“假”, 1表示“真”,602.6.2 邏輯運(yùn)算符與邏輯表達(dá)式2. 優(yōu)先級:!(非)& (與)|(或)邏輯運(yùn)算與其他運(yùn)算相比: “!”的優(yōu)先級最高,“&”和“|”低于關(guān)系運(yùn)算符。3. 結(jié)合性: &和|是從左向右,!是從右向左2.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))!a&b|xy&c例:(ab)&(xy) 可寫成ab&xy (a=b)|(x=y) 可寫成a=b|x=y612.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))例:a=5,b=7,c=4,d=3x=(a+b)(c+d)&(da)先做算術(shù)運(yùn)算,再做關(guān)系判斷

30、,將最后結(jié)果賦給x5 2 7 8從左向右運(yùn)算 (52)邏輯值為1 (17)邏輯值為0 (08)邏輯值為0整個表達(dá)式的值為 0622.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))二 、邏輯表達(dá)式表達(dá)式的值為一個邏輯量“真”或“假”,分別用1和0表示3. 在判斷一個量是否為“真”時,以0代表假,以“非0”代表真 例:若a=4,則!a的值為0 若a=4,b=5,則a&b的值為1 ?!a|b任何非零實數(shù)均可作為邏輯上的11. 用邏輯運(yùn)算符將關(guān)系運(yùn)算表達(dá)式或邏輯量連接起來構(gòu)成邏輯表達(dá)式值為1634 . 在邏輯表達(dá)式中,并不是所有的邏輯運(yùn)算都必須執(zhí)行,如果&的一邊已經(jīng)為0,結(jié)果一定為 0,如果 | 的一邊已經(jīng)為 1 ,結(jié)

31、果一定為 1(1) a&b&c a為非0時,再判斷 b, a,b均為非0, 再判斷c(2 ) a|b|c,若a為非0,不必判斷 b和 c,結(jié)果一定為 1 已知 :a=1,b=2,c=3,d=4,m=1,n=1 執(zhí)行(m=ab)&(n=cd) 之后 : m=? n=?由于 ab的值為 0,m=0不再判斷(n=cd)的值,因此,n 維持原有的值m=0n=12.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))64求邏輯表達(dá)式的值1 ) 14&47 2 ) 143 ) !(2=5) 4 ) ! ( 1 3) | (25)5 ) !(4=6)&(3=7)2.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))1011065用C語言描述:1)a小于

32、b或小于c2 )a和b都大于c3)a和b中有一個大于c4)a是非正整數(shù)5)a是奇數(shù)6)a不能被b整除ab|ac&bcac|bc662.6.3 條件運(yùn)算符與條件表達(dá)式三 、條件運(yùn)算符C語言中唯一的一個三目運(yùn)算符X=(表達(dá)式1)?(表達(dá)式2):(表達(dá)式3)將條件語句化成賦值語句1. 格式判斷表達(dá)式1的值,若為非0,將表達(dá)式2的值賦給x,否則,將表達(dá)式3的值賦給x 2 功能:x=(ab)?a:b 當(dāng) a=9,b=5時,x=9條件運(yùn)算要求有三個運(yùn)算分量,并且不論條件是否成立,都必須是為同一個變量賦值2.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))673 條件運(yùn)算符的優(yōu)先級:高于賦值,低于其他4 結(jié)合性:從右向左z=(

33、ab)?a:(ad)?c:d5 數(shù)據(jù)類型可以不同:xy?a:b執(zhí)行:int x=10,y=9; int a,b,c;a=(- -x=y+)?-x:+y;b=x+; c=y;后a,b,c? a, b, cA) 9, 9, 9B) 8, 8, 10C) 8,10, 9D) 1,11,102.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))68若w,x,y,z,m均為int型變量,則執(zhí)行下面語句后的m值為:w=1;x=2;y=3;z=4;m=(wx)? w: x;m=(my)? m : y;m=(mz)? m:z;A) 1 B) 2 C) 3 D) 4若w=1,x=2,y=3,z=4,則表達(dá)式wx?w:yz?y:z的值

34、是:A) 4 B)3 C)2 D)1練習(xí)2.6 關(guān)系運(yùn)算與邏輯運(yùn)算(續(xù))69練習(xí)一、求下面算術(shù)表達(dá)式的值(1)x+a%3*(int)(x+y)%2/4設(shè)x2.5,a7,y4.7(2)(float)(a+b)/2+(int)x%(int)y設(shè)a2,b3,x3.5,y2.5答案: (1)2.5 (2)3.570二、寫出程序運(yùn)行的結(jié)果main( )int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);答案:9,11,9,1071逗號運(yùn)算符例:/*ch2_6.c*/#include main() int x,y=7; float z=

35、4; x=(y=y+6,y/z); printf(x=%dn,x);運(yùn)行結(jié)果:x=372三、寫出下面表達(dá)式運(yùn)算后a的值,設(shè)原來a12。設(shè)a和n都定義為整型變量。(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2),n的值是5(6)a+=a-=a*=aa=a-224a=a+aa=a*(2+3)a=a/(a+a)n=n%2 1a=a%1 a=a*a 144a=a-144 0a=a+0 0106000073四、寫出下面各邏輯表達(dá)式的值。例 a=4;b=5; (1) !a (2) a&b (3) a|b (4) !a|b (5) 4&0|2 (6) 53&2|83)

36、&2|(8(4-(!0) 值為174五、寫出以下程序運(yùn)行的結(jié)果main()char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“a%c b%ctc%ctabcn”,c1,c2,c3); printf(“tb%c %c”,c4,c5);程序運(yùn)行的結(jié)果是:aa bb cc abc A N75六、寫出下列程序的結(jié)果main( )char c1=C,c2=h,c3=i,c4=n,c5=a;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密碼是%c%c%c%c%cn”,c1,c2,c3,c4,c5);密碼是Glmre76七:編寫程序1、用scanf輸入園半徑r,圓柱高h(yuǎn),求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。輸出時要有文字說明。2、輸入一個華氏溫度,要求輸出攝氏溫度。公式為:C=5(F-32)/9,輸出時要有文字說明。77七、編程答案1、main() float pi,h,r,l,s,sq,vq,vz; pi=3.1415926; printf(“請輸入圓半徑r,圓柱高h(yuǎn):n”); scanf(“%f,%f

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論