C語(yǔ)言程序設(shè)計(jì)二_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)二_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)二_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)二_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)二_第5頁(yè)
已閱讀5頁(yè),還剩89頁(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.1數(shù)據(jù)與數(shù)據(jù)類(lèi)型§2.2常量、變量和標(biāo)準(zhǔn)函數(shù)§2.3基本運(yùn)算符及其表達(dá)式第二章數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式下一章上一章目錄習(xí)題

整型:包括有、無(wú)符號(hào)的基本整型、短整型、長(zhǎng)整型實(shí)型:包括單精度實(shí)型、雙精度實(shí)型

float,double字符型:用于表示和存儲(chǔ)ASCII字符。char

2.1數(shù)據(jù)類(lèi)型基本類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型空類(lèi)型自定義是C語(yǔ)言數(shù)據(jù)類(lèi)型的基本型,其值不可再分解為其他類(lèi)型。一種特殊的數(shù)據(jù)類(lèi)型,其值為某個(gè)量的內(nèi)存地址。一種無(wú)返回值函數(shù)的數(shù)據(jù)類(lèi)型。void用新的類(lèi)型名替代已有類(lèi)型名使用。用typedef定義一種由單種或多種數(shù)據(jù)類(lèi)型構(gòu)造而成的數(shù)據(jù)類(lèi)型。數(shù)組結(jié)構(gòu)共用體枚舉類(lèi)型C語(yǔ)言的基本數(shù)據(jù)類(lèi)型

2.2常量、變量和標(biāo)準(zhǔn)函數(shù)2.2.1

常量

2.2.2變量

2.2.3標(biāo)準(zhǔn)函數(shù)

下一節(jié)第二章目錄習(xí)題

2.2.1常量常量在程序執(zhí)行期間其值保持不變的量C語(yǔ)言有以下幾種類(lèi)型的常量:整型常量實(shí)型(浮點(diǎn)型)常量字符常量字符串常量

有三種形式:十進(jìn)制整數(shù):八進(jìn)制整數(shù):由數(shù)字0

開(kāi)頭十六進(jìn)制整數(shù):由前綴0x

0X

開(kāi)頭1.整型常量如:

014-0110177777如:0x110XAFBDE

√0X00FFH

如:

11,-13,0,

65535,

√1,000

21/3

104

54.10*3

0199××整數(shù)又可分為:長(zhǎng)整型整數(shù):用后綴L/l表示。

012L,65536L,0XCL無(wú)符號(hào)整數(shù):用后綴U/u表示。

017u,

0xfdbU無(wú)符號(hào)長(zhǎng)整數(shù):

用后綴UL/ul表示。

15uL實(shí)型常量又稱(chēng)實(shí)數(shù),指帶有小數(shù)部分的數(shù)。C語(yǔ)言中的實(shí)數(shù)是以十進(jìn)制表示的,有兩種表示形式:十進(jìn)制小數(shù)形式:

由數(shù)字、數(shù)符和小數(shù)點(diǎn)組成。例:

0.123,

.123,123.

,0.0,-2.5,…

指數(shù)形式:

又稱(chēng)科學(xué)記數(shù)法。用E(或e)表示以10為底的指數(shù)。

如:100000000→1×108→1E+80.0000125→1.25×10-5→1.25E-05

0.91×10-3

0.91E-03尾數(shù)部分指數(shù)部分字母E/e前必須有數(shù)字,而E后面的階碼必須為整數(shù)。

2.

實(shí)型常量——浮點(diǎn)數(shù)

例:

下列不合法的指數(shù)形式:①單獨(dú)的小數(shù)點(diǎn)和單獨(dú)的指數(shù)部分

如:.E-5E10

②階碼只能是整數(shù),不能帶小數(shù)點(diǎn)。

如:1234E1.5

2.E

6.5e

(2*3)E-3

5*E4③1012不能寫(xiě)成E12,必須寫(xiě)成:1E121.0E123.字符常量字符常量:是用單引號(hào)括起來(lái)的一個(gè)字符

如:‘a(chǎn)’,‘A’,‘9’,‘+’,‘?’,‘’

合法

“a”,‘99999’,‘’

非法在內(nèi)存中,

字符常量以ASCII碼存儲(chǔ),一個(gè)字符占一個(gè)字節(jié)。由于字符常量是按整數(shù)存儲(chǔ)的,可以像整數(shù)一樣在程序中參與相關(guān)的運(yùn)算。如:

‘a(chǎn)’-32;

//

執(zhí)行結(jié)果97-32=65

‘9’-9;

//執(zhí)行結(jié)果57-9=48以“\”開(kāi)頭的字符序列,有特定的含義。如:‘\\’

表示輸出一個(gè)反斜杠符

‘\”’

表示輸出一個(gè)雙引號(hào)

\ddd

(ddd表示八進(jìn)制的ASCII碼)

\xhh

(hh表示十六進(jìn)制的ASCII碼)例:

‘\n’(回車(chē)換行)→‘\12’→

‘\xa’

‘A’→‘\101’

‘\x41’注:

‘\0’或‘\000’是代表ASCII碼為0的字符,即空字符(NULL),

表示整數(shù)0。轉(zhuǎn)義字符【例2.1】轉(zhuǎn)義字符的應(yīng)用

#include

<stdio.h>

void

main()

{

printf(“a\tb\nc\bd\100\x40\n”);

}

abd@@輸出到顯示屏字符串常量:用一對(duì)雙引號(hào)括起的字符序列。例:

“CHINA”,“a”,“$12.5”,“”,

“w\x53\\\np\103q”

字符串長(zhǎng)度:字符串中所有字符的個(gè)數(shù)系統(tǒng)自動(dòng)在每個(gè)字符串的末尾加上一個(gè)空字符NULL,即’\0’

作為字符串的結(jié)束。’\0’是一個(gè)ASCII碼為0的字符。例:“CHINA”在內(nèi)存中所占的字節(jié)為:4.

字符串常量字符常量由單引號(hào)括起來(lái),字符串常量由雙引號(hào)括起來(lái)。

字符串常量和字符常量的主要區(qū)別:字符常量只能是單個(gè)字符,字符串常量可以含有多個(gè)字符。字符常量占一個(gè)字節(jié),字符串常量占的字節(jié)數(shù)等于字符個(gè)數(shù)加1。比較:’A’與”A”的區(qū)別若輸出的字符串中含雙引號(hào)(”),則要使用轉(zhuǎn)義字符(\”)。例:printf(“hesaid

\“

Iamastudent.\”\n”);輸出:

hesaid“Iamastudent.”‘A’A占一個(gè)字節(jié)“A”A占兩個(gè)字節(jié)\05.符號(hào)常量

符號(hào)常量:用標(biāo)識(shí)符表示的常量格式:

#define

標(biāo)識(shí)符常量功能:用該標(biāo)識(shí)符代表后面的常量值例:

#define

PI3.1415926

#define

STAR

‘*’預(yù)處理命令#define也稱(chēng)為宏定義,一個(gè)#define命令只能定義一個(gè)符號(hào)常量,

用一行書(shū)寫(xiě),

不用分號(hào)結(jié)尾。

#include

<stdio.h>

#define

PI

3.1415926

//用預(yù)處理命令定義符號(hào)常量

voidmain(){floatr,

area,

l

;//定義變量類(lèi)型為實(shí)型

scanf(“%f”,

&r);//輸入r的值

area=PI*r*r;

l=2*PI*r;

printf(“area=%f\nl=%f\n”,

area,

l

);}【例2.2】求半徑為r的圓面積和圓周長(zhǎng)

說(shuō)明:符號(hào)常量名習(xí)慣用大寫(xiě)字母表示該命令通常放在文件頭在程序中,符號(hào)常量不允許重新賦值。例:#define

PI

3.1415926

PI=5.6;

×

或scanf(“%f

”,

&PI);×5.符號(hào)常量2.2.2變量變量概述整型變量實(shí)型變量

字符型變量

變量的初始化

int

x=23;23FF022BytesRAM變量概述變量:在程序執(zhí)行期間其值可以改變的量變量在使用之前必須被聲明每一個(gè)變量有名字,類(lèi)型,長(zhǎng)度和值。對(duì)變量賦值過(guò)程是“覆蓋”過(guò)程,用新值去替換舊值。從內(nèi)存中讀出變量的值,該變量保持不變。90x=90;printf(“%d”,x);定義變量的形式:

類(lèi)型說(shuō)明符變量名表;

例:inta,b;/*定義兩個(gè)整型變量a和b*/charc;/*定義字符型變量c*/floatf1,f2;

//定義單精度實(shí)型變量f1和f2變量概述變量類(lèi)型(type)變量名(name)是一個(gè)標(biāo)識(shí)符1.整型變量─用來(lái)存放整型數(shù)據(jù)的變量整型變量的分類(lèi)表類(lèi)型名稱(chēng)類(lèi)型說(shuō)明符字節(jié)數(shù)數(shù)值范圍基本整型int4-2147483648~2147483647短整型short[int]2-32768~32767長(zhǎng)整型long[int]4-2147483648~2147483647無(wú)符號(hào)基本整型unsigned[int]40~4294967295無(wú)符號(hào)短整型unsignedshort

[int]20~65535無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]40~4294967295與操作系統(tǒng)、編譯系統(tǒng)、機(jī)器字長(zhǎng)有關(guān)。有符號(hào)的整數(shù)─最高位是符號(hào)位正整數(shù)在內(nèi)存中以二進(jìn)制原碼形式存放。負(fù)整數(shù)在內(nèi)存中以二進(jìn)制補(bǔ)碼的形式存放。有符號(hào)正整數(shù)10

0000000000001010符號(hào)位0000000000001010RAM有符號(hào)負(fù)整數(shù)-101111111111110110符號(hào)位1111111111110110RAM-10的原碼100000000000101011111111111101011111111111110110按位取反加1后得到-10的補(bǔ)碼無(wú)符號(hào)整數(shù)無(wú)符號(hào)整數(shù)的所有二進(jìn)制位全部用來(lái)存放數(shù)值,不能存放負(fù)數(shù)。

無(wú)符號(hào)整數(shù)65535u11111111111111111111111111111111RAM

例:求50的三次方#include

<stdio.h>voidmain(){shortint

x;

x=50*50*50;

printf(“%d\n”,

x

);}程序運(yùn)行結(jié)果為:

-6072(錯(cuò))將以上程序改為:#include<stdio.h>

voidmain(){

intx

;

x=50*50*50

;

printf(“%d\n”,

x);}運(yùn)行結(jié)果:125000因此,在定義整型變量時(shí),要注意數(shù)據(jù)類(lèi)型允許的數(shù)值范圍。用來(lái)存放實(shí)型數(shù)據(jù)的變量分單精度型、雙精度型和長(zhǎng)雙精度型三類(lèi)

2.實(shí)型變量#include<stdio.h>voidmain(){floatf;//f為單精度實(shí)型變量

doubled;//d為雙精度實(shí)型變量

f=33333.33333;

d=33333333333333.333333;

printf(“f=%f\nd=%f\n”,f,d);

}輸出結(jié)果:

f=33333.332031

d=33333333333333.332000【例2.3】實(shí)型變量的使用無(wú)效數(shù)字f;3.字符變量用來(lái)存放字符常量的變量例:

char

c1,

c2,

c3

;

c1=‘A’;

c2=‘\n’;

c3=97;

每個(gè)字符變量分配一個(gè)字節(jié)用于存放一個(gè)字符。

(存放的是字符的ASCII碼值)字符數(shù)據(jù)與整型數(shù)據(jù)可相互賦值,直接運(yùn)算??梢园炎址兞堪凑土枯敵?也允許把整型量按字符量輸出?!瓵’的ASCII碼(值)為65‘\n’的ASCII碼(值)為100100000100001010c1c2

#include

<stdio.h>

voidmain(){int

a=‘b’;

//給一個(gè)整型變量賦一個(gè)字符值

char

c1=97;

//給一個(gè)字符變量賦一個(gè)整數(shù)值

c1=c1-32;//將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母

printf(“%d%d\n”,

a,

c1);

printf(“%c%c\n”,

a,

c1);}輸出結(jié)果:

9865bA【例2.4】字符型變量的使用注意:只能將一個(gè)字符常數(shù)賦給一個(gè)字符變量,不能把一個(gè)字符串常量賦予字符變量。

例:

char

c=“abc”;

在C語(yǔ)言中沒(méi)有字符串變量

(但可以用一個(gè)字符數(shù)組來(lái)存放一個(gè)字符串常量)×4.變量的初始化在說(shuō)明變量的同時(shí)給變量賦初值格式:

類(lèi)型說(shuō)明符變量=常數(shù);例:

int

a=5;

//定義并初始化

char

c1=‘a(chǎn)’,

c2=‘B’;

doublearea,r=23.e-2

;int

x=10,

y=10,z=10

;

//不能寫(xiě)成intx=y=z=10;inta;a=5;

//賦初值2.2.3標(biāo)準(zhǔn)函數(shù)

C編譯系統(tǒng)提供的庫(kù)函數(shù)包括:輸入輸出函數(shù)、數(shù)學(xué)函數(shù)、字符和字符串函數(shù)等。數(shù)學(xué)函數(shù)x為弧度,doublex,doublesin(x)cos(x)sin(x)

cos(x)exp(x)log(x)log10(x)fabs(x)pow(x,y)sqrt(x)area=√s(s-a)(s-b)(s-c),s=(a+b+c)/2#include<stdio.h>

#include<math.h>

【例2.5】求三角形面積//預(yù)編譯命令,將系統(tǒng)提供的數(shù)學(xué)函數(shù)//作為頭文件包含到用戶(hù)源文件中voidmain(){doublea,b,c,s,area;scanf(“%lf,%lf,%lf”,

&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“theareais%6.2f\n”,area);}運(yùn)行本節(jié)介紹算術(shù)運(yùn)算符賦值運(yùn)算符逗號(hào)運(yùn)算符邏輯運(yùn)算符條件運(yùn)算符求字節(jié)運(yùn)算符位邏輯運(yùn)算符位移動(dòng)運(yùn)算符位自反運(yùn)算符強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符指針運(yùn)算符下標(biāo)運(yùn)算符分量運(yùn)算符基本運(yùn)算符位運(yùn)算符特殊運(yùn)算符C運(yùn)算符2.3運(yùn)算符和表達(dá)式2.3.1

算術(shù)運(yùn)算符與算術(shù)表達(dá)式2.3.2

不同數(shù)據(jù)類(lèi)型的轉(zhuǎn)換與運(yùn)算

2.3.3

關(guān)系運(yùn)算符與關(guān)系表達(dá)式2.3.4

邏輯運(yùn)算符與邏輯表達(dá)式2.3.5

條件運(yùn)算符與條件表達(dá)式2.3.6

賦值運(yùn)算符與賦值表達(dá)式

2.3.7

逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式2.3基本運(yùn)算符及其表達(dá)式1.基本算術(shù)運(yùn)算符算術(shù)運(yùn)算符用于各類(lèi)數(shù)值運(yùn)算。包括基本算術(shù)運(yùn)算符、自增運(yùn)算符、自減運(yùn)算符。下表為基本算術(shù)運(yùn)算符。

1在C語(yǔ)言中,規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。優(yōu)先級(jí):

C語(yǔ)言中,運(yùn)算符的優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。表達(dá)式求值時(shí),先做優(yōu)先級(jí)高的操作。如:

d=a+b*c;

當(dāng)運(yùn)算符的優(yōu)先級(jí)別相同時(shí),運(yùn)算次序由結(jié)合性決定。結(jié)合性:

左結(jié)合性(先左后右)例:

d=3*5/4;

右結(jié)合性(先右后左)例:

d=a=3;

/運(yùn)算符①整數(shù)相除截去余數(shù),此運(yùn)算為整除。

5/2=2(≠2.5)1/3+1/3+1/3=0②

對(duì)于浮點(diǎn)數(shù)則為通常意義的除法

5.0/2.0=2.51./3+1./3+1./3=1%模運(yùn)算符用于計(jì)算兩個(gè)數(shù)相除后得到的余數(shù)。如:

a%b

求a除以b以后得到的余數(shù)。運(yùn)算對(duì)象只能是整型量,其結(jié)果也是整型量。

如:

5%2=13%3=03%5=3

‘A’%2=13.0+10.0%5

所得結(jié)果的符號(hào)與運(yùn)算符左側(cè)操作數(shù)的符號(hào)相同×-5%2=-15%-2=12.自增、自減運(yùn)算符含義運(yùn)算符優(yōu)先級(jí)結(jié)合性功能自增++2右結(jié)合使變量的值增1自減--2右結(jié)合使變量的值減1使用形式

++i或--i

變量i先自增或自減1,再引用i。

i++或i--

先使用變量i,再自增或自減1。

例:

x=10;y=++x

;

此時(shí),y=11若:x=10;y=x++

;

則y=10

在這兩種情況下,x都被置為11。K=3;j=5;i=3;m=(++k)*j;n=(i++)*j;例:m=k=204n=i=154【例2.7】自增、自減運(yùn)算符的使用。#include<stdio.h>voidmain(){inti=6,a,b;printf(“%d\n”,

++i

);printf(“%d\n”,

i++

);a=--i;printf(“%d\n”,a);b=i--;printf(“%d\n”,b);printf(“%d\n”,

-i++);printf(“i=%d\n”,i);}i=?7777-67注意:自增、自減運(yùn)算只能用于變量,不能用于常量和表達(dá)式。例:

i++

為合法的運(yùn)算

++6,++(a+b)

為非法的運(yùn)算自增、自減運(yùn)算符是兩個(gè)+或兩個(gè)-的一個(gè)整體,中間不能有空格。如果有多于兩個(gè)+或兩個(gè)-連寫(xiě)的情況,則編譯首先識(shí)別前兩個(gè)+或-為增量或減量運(yùn)算符。表達(dá)式x+++y等價(jià)于(x++)+y自增、自減運(yùn)算符的運(yùn)算順序是右結(jié)合,因此對(duì)-i++應(yīng)理解為:-(i++),而(-i)++是非法的。

例:

i=3;

printf(“%d”,-i++);

輸出:-3【例2.8】自增、自減運(yùn)算符的使用#include

<stdio.h>

voidmain(){inti,j,

k

;

i=1;

j=1;

k=i+++j;

printf(“i=%d,j=%d,k=%d\n”,i,j,k);}程序運(yùn)行結(jié)果:i=2,j=1,k=2k=(i++)+j;由算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(如常量、變量、函數(shù)等)連接起來(lái)的一個(gè)有值的式子。例:

‘A’*2-sqrt(4.)/-d

(d=2)表達(dá)式求值的優(yōu)先次序:

()函數(shù)

+、-*、/、%+、-

高低

3.算術(shù)表達(dá)式①“/”號(hào),如:→(a+b)/(c+d)②“*”不能省略,如:2(a+b)

→2*(a+b)

③括號(hào)只能使用圓括號(hào),且成對(duì)出現(xiàn),不能使用[]

和{}。如:

a[x+b(y+c)]→

a*(x+b*(y+c))

書(shū)寫(xiě)問(wèn)題:⑴LN(-X)→例:

將下列數(shù)學(xué)式子寫(xiě)成C算術(shù)表達(dá)式log(sqrt(a+x*x

)-x

)⑵

│a│e-st→abs(a)*exp(-s*t)⑶

→sqrt(fabs(sin(x*3.14/180)))⑷

xy→pow(x,

y)A>3*x^n/(2*x-1)B>3*x**n/(2*x-1)C>3*pow(x,n)*(1/(2*x-1))D>3*pow(n,x)/(2*x-1)例:與數(shù)學(xué)式子3乘以x的n次方除以(2x-1)對(duì)應(yīng)的C語(yǔ)言表達(dá)式是____。√2.3.2不同數(shù)據(jù)類(lèi)型間的轉(zhuǎn)換與運(yùn)算在C程序中,當(dāng)不同類(lèi)型的量進(jìn)行運(yùn)算時(shí),要轉(zhuǎn)換成同一種類(lèi)型然后再進(jìn)行運(yùn)算。例:

10+‘a(chǎn)’+1.5-8765.1234*‘b’轉(zhuǎn)換方式:

自動(dòng)轉(zhuǎn)換:數(shù)據(jù)類(lèi)型自動(dòng)由低級(jí)向高級(jí)轉(zhuǎn)換。強(qiáng)制轉(zhuǎn)換:將表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類(lèi)型。自動(dòng)類(lèi)型轉(zhuǎn)換這種類(lèi)型轉(zhuǎn)換由編譯系統(tǒng)自動(dòng)完成轉(zhuǎn)換規(guī)則:floatdoublelongunsignedintcharshort低高說(shuō)明:1.橫向的箭頭表示必定的轉(zhuǎn)換。2.縱向的箭頭表示當(dāng)運(yùn)算對(duì)象類(lèi)型不同時(shí)轉(zhuǎn)換的方向。

例:floatf=3.5;intn=6;longk=21;doubless=f*n+k/2;強(qiáng)制類(lèi)型轉(zhuǎn)換

格式:

(數(shù)據(jù)類(lèi)型說(shuō)明符)(表達(dá)式)注意:強(qiáng)制轉(zhuǎn)換屬單目運(yùn)算,運(yùn)算優(yōu)先級(jí)為2。強(qiáng)制轉(zhuǎn)換得到的是中間結(jié)果類(lèi)型,原變量類(lèi)型不變。數(shù)據(jù)類(lèi)型說(shuō)明符和表達(dá)式都必須加括號(hào)(單個(gè)變量除外)例:intx,y;floatz;

(float)(x+y)

;

(int)z+x;

(float)(5%3);

(將5%3的值轉(zhuǎn)換為float型)#include<stdio.h>voidmain(){int

x=8;

float

f=6.85;

printf(“(float)x=%f,x=%d\n”,(float)x,x

);

printf(“(int)f=%d,f=%f\n”,(int)f

,f

);}【例2.12】強(qiáng)制類(lèi)型轉(zhuǎn)換的應(yīng)用(float)x=8.000000,x=8(int)f=6,f=6.850000X,f的類(lèi)型并未改變2,%4,f

);2.3.3關(guān)系運(yùn)算(比較運(yùn)算)即比較兩個(gè)量的大小,比較的結(jié)果為“真”或“假”。例:a>3

如果a=8,則結(jié)果為“真”;如果a=1,則結(jié)果為“假”。1.關(guān)系運(yùn)算符含義運(yùn)算符優(yōu)先級(jí)結(jié)合性小于<6左結(jié)合小于等于<=大于>大于等于>=等于==7不等于!=2.

關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子。格式:

<表達(dá)式1><關(guān)系運(yùn)算符><表達(dá)式2>

其中:表達(dá)式1和表達(dá)式2可以是任意表達(dá)式。

例:

m+n<=20,測(cè)試此關(guān)系是否成立,成立為真,不成立為假。成立——關(guān)系表達(dá)式的值為1;不成立——關(guān)系表達(dá)式的值為0。例:

5>(4<5)

‘a(chǎn)’>‘b’+3

(a=4)>=(b=6)5>2>7>8000值為:

1例2.13讀程#include<stdio.h>voidmain(){int

a,b,c;

a=b=c=10;

a=b==c;

printf

(“%d,%d,%d\n”,

a

,b,c);

a==(b=c++*2

);

printf

(

“%d,%d,%d\n”,

a

,b,c);

a=b>c>=100

;

printf

(

“%d,%d,%d\n”,

a,b,c);

}輸出結(jié)果:1,10,101,20,110,20,11關(guān)系運(yùn)算的不足關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,如:

sum>=1500y!=z

即只能對(duì)一個(gè)條件進(jìn)行測(cè)試。

而以下關(guān)系:

0<x<5

則不能用關(guān)系表達(dá)式表示。

x>0&&x<52.3.4邏輯運(yùn)算符與邏輯表達(dá)式1.邏輯運(yùn)算符

C邏輯運(yùn)算符含義運(yùn)算符優(yōu)先級(jí)結(jié)合性邏輯非!2右結(jié)合邏輯與&&11左結(jié)合邏輯或||12左結(jié)合邏輯運(yùn)算真值表a!a1001aba&&b111100010000aba||b111101011000特點(diǎn):

全真為真,

其余為假。

特點(diǎn):全假為假,

其余為真。邏輯非!邏輯與&&邏輯或‖2.邏輯表達(dá)式用邏輯運(yùn)算符將表達(dá)式連接起來(lái)的式子。形式:[<表達(dá)式1>]<邏輯運(yùn)算符><表達(dá)式2>

表達(dá)式1和表達(dá)式2可以是任何表達(dá)式如:

5>3&&2||4-!’a’邏輯表達(dá)式的值整數(shù)1:true

0:false判斷時(shí),0代表“假”,非0即表示“真”。將下面的條件用C語(yǔ)言的邏輯表達(dá)式表示例1:1≤x≤10且x≠7

x>=1&&x<=10&&x!=7例2:y能被4整除,但不能被100整除或y能被400整除。

y%4==0&&y%100!=0||y%400==0運(yùn)算順序:

()→!→算術(shù)運(yùn)算→關(guān)系運(yùn)算→&&→||→賦值運(yùn)算例:若

a=2,b=‘a(chǎn)’,c=5,f=3.0c>3&&8<4-!0f/3&&a-b

!(b-‘a(chǎn)’

)

(a=7)>6&&(b=-1)>60110邏輯與和邏輯或運(yùn)算符具有短路能力邏輯與:

(表達(dá)式1)

&&

(表達(dá)式2)

&&

只有表達(dá)式1的值為“真”時(shí)才求表達(dá)式2的值

如:x=y=-1;

++x&&++y;

/*x=?y=?*/0-1短路表達(dá)式邏輯或:

(表達(dá)式1)

||

(表達(dá)式2)

||…

只有表達(dá)式1為假時(shí)才判斷表達(dá)式2的值

例:

voidmain(){int

num=3;5>4||(num=0);

printf(“num=%d\n”,num);}

輸出:

num=3條件運(yùn)算符:

?:

三目運(yùn)算符、右結(jié)合、13級(jí)。條件表達(dá)式:

<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>執(zhí)行過(guò)程:2.3.5條件運(yùn)算符與條件表達(dá)式

例:

max=(a>b)?a∶b;

max=a>b?a∶b

;說(shuō)明:在程序中常把條件表達(dá)式的值賦給某個(gè)變量,

如:

①將ch中字母轉(zhuǎn)換為小寫(xiě)字母

char

ch=getchar();

ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch

;

②將x

的絕對(duì)值賦給y

y=x>=0

?

x

:-x

;在條件表達(dá)式中,各表達(dá)式的類(lèi)型可以不同,此時(shí),條件表達(dá)式值的類(lèi)型為表達(dá)式2和表達(dá)式3中較高的類(lèi)型。

如:

x>y

?1∶1.5

條件表達(dá)式的值為浮點(diǎn)型說(shuō)明:說(shuō)明:條件運(yùn)算符可以嵌套,這種嵌套是右結(jié)合的。

例:

inta=15,b=20,c=25,d=30,e;

e=a>b?c:c>d?b:d;()e=30例2.15讀程,寫(xiě)出運(yùn)行結(jié)果。#include<stdio.h>voidmain(){int

a=1,

b=1,

c=1;

a=a+b

;

b=b+c

;

c=c+a

;

printf(“(1)%d\n”,a>b?a

:b

);

printf(“(2)%d\n”,

a>c?a--:c++);

(a>=b>=c)?printf(“a\n”):printf(“b\n”);

printf(“(4)%d,

%d,

%d\n”,a,b,c

);}運(yùn)行結(jié)果:(1)2(2)3b(4)2,2,4例2.16:任意輸入三個(gè)數(shù),輸出最大值。#include<stdio.h>voidmain(){int

a,b,c,max

;

scanf(“%d%d%d”,

&a,

&b,

&c);

max=a>=b?

a>=c?a

:c:

b>=c?b:c;

printf(“最大數(shù)為:%d\n”,max);}程序運(yùn)行如下:

25-748↙

最大數(shù)為:48

(())賦值運(yùn)算符分兩種:簡(jiǎn)單賦值運(yùn)算符:

=復(fù)合賦值運(yùn)算符:如+=、-=、*=、/=、%=

等優(yōu)先級(jí)14,右結(jié)合性。賦值表達(dá)式:由賦值運(yùn)算符連接起來(lái)式子作用:將表達(dá)式的值賦給變量2.3.6賦值運(yùn)算符和賦值表達(dá)式簡(jiǎn)單賦值運(yùn)算符為“=”

;由“=”連接的式子為(簡(jiǎn)單)賦值表達(dá)式。格式:<變量>

=

<表達(dá)式>

作用:把右邊表達(dá)式的值,賦給左邊的變量。例:k=i+++--j(i=2,j=3,k的值為)x=(a=5)+(b=8)

(x的值為)

d=e=2.1執(zhí)行順序是:先計(jì)算,再賦值。413

1.簡(jiǎn)單賦值運(yùn)算符和賦值表達(dá)式例:

指出下列賦值表達(dá)式的錯(cuò)誤

-s=x+y⑵5=n⑶a=a*3=2

⑷w=3.64E2.1/5.87⑸cos(β)=a/sqrt(a*a+b*b)

⑹y=int(i)⑺k=12.3%4⑻a=a+7;

賦值運(yùn)算的類(lèi)型轉(zhuǎn)換,規(guī)則為:實(shí)型數(shù)據(jù)賦給整型變量時(shí),只取整數(shù)部分。

如:int

i=1.5*2/2;

(x的值為0.000000)

整型數(shù)據(jù)賦給實(shí)型變量時(shí),以浮點(diǎn)形式取值。(i值為1

)如:

floatx=1/4+1/4+1/4;字符型數(shù)據(jù)賦給整型變量時(shí),

整型變量的高位補(bǔ)的數(shù)與char的最高位相同,低八位為字符的ASCII碼值。整型數(shù)據(jù)賦給字符型時(shí),只把低8位賦給字符變量。如:

K=‘A’

(k值為65)k:

0000000001000001例2-13:void

main(){short

intx=300;

chary;y=x;

printf(“y=%dy=%c\n”,y,y);}

輸出結(jié)果:

y=44y=,x:

0000000100101100y2.復(fù)合賦值符及表達(dá)式復(fù)合賦值運(yùn)算符是在簡(jiǎn)單賦值運(yùn)算符前加雙目運(yùn)算符構(gòu)成。

共10種:+=,-=

*=、/=、%=

等。例:

c=c+3

c+=3

x*=y+7

x=x*(y+7)

設(shè)x,y,z的初始值分別為:10,20,30

x+=y+=z*z

x=x+(y=y+z*z)結(jié)果為:

930

設(shè)

t

的值為5t+=t-=t*t

t=t+(t=t-t*t)

結(jié)果為:

-40

例2-14void

main(){inta,b,c;

a=b=c=5;printf(”a=%d,b=%d,c=%d\n”,a,b,c);

a=(b=4)+(c=6);printf(”a=%d,b=%d,c=%d\n”,a,b,c);a+=b+c;printf(”a=%d,b=%d,c=%d\n”,a,b,c);

a+=a-=a*=a;printf(”a=%d\n”,a);}運(yùn)行結(jié)果:a=5,b=5,c=5a=10,b=4,c=6a=20,b=4,c=6a=0

逗號(hào)運(yùn)算符運(yùn)算符:

,

”優(yōu)先級(jí)15級(jí)最低,左結(jié)合用逗號(hào)運(yùn)算符將各表達(dá)式連接起來(lái)的式子為逗號(hào)表達(dá)式。格式:

如:a=3*5,

a*10,

a+8

求解過(guò)程:先求表達(dá)式1的值,再求表達(dá)式2的值,最后求表達(dá)式n的值,表達(dá)式n的值作為整個(gè)逗號(hào)表達(dá)式的值。2.3.7逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式<表達(dá)式1>

,

<表達(dá)式2>

,…,<表達(dá)式n>

例:逗號(hào)表達(dá)式的應(yīng)用

#include<stdio.h>

voidmain(){int

a=2,b=4,c,y;y=(c=a*b,b+c);

printf(“y=%d\n”,y);}

輸出結(jié)果:y=12例:1)

(a=3*5,a*4),

a+52)a=5,

a*=a

,

a+53)

int

a,

b;

a=2,

b=5,

a++,b++,

a+b;4)

intx=10,y=3,z;

printf(“%d\n”,z=(x%y,x/y));203093

說(shuō)明:

(1)用一個(gè)逗號(hào)表達(dá)式語(yǔ)句,可代替多個(gè)賦值語(yǔ)句,如

a=0;b=1;c=2;

可寫(xiě)成:a=0,

b=1,

c=2;

(2)在變量說(shuō)明和函數(shù)參數(shù)表中逗號(hào)只是起分隔符作用

printf(“%d,%d,%d”

,a,b,c);printf(“%d,%d,%d”

,(a,

b,

c),b,c);例:

交換變量a,b的值。

a=1.0,

b=2.0

1.02.02.01.02.01.0

void

main(){floata,b,c;a=1.0;b=2.0;printf(“a=%fb=%f”,a,b);

c=a;a=b;

b=c;printf(“a=%fb=%f”,a,b);

}abcaabbyx①②

2.01.01.01.02.0習(xí)題1.下面四個(gè)選項(xiàng)中,均是合法整型常量的選項(xiàng)是()。

A)160B)-0xcdfC)-01D)-0x48a-0xffff

01a986,0122e50110xe06680x2.下面四個(gè)選項(xiàng)中,均是不合法浮點(diǎn)數(shù)的選項(xiàng)是()。

A)160.

B)123C)-018D)-e30.122e4.2123e4.234e3.e50.01e3AB習(xí)題3.下面四個(gè)選項(xiàng),均是合法轉(zhuǎn)義字符的選項(xiàng)是()。

A)'\’'B)'\'C)'\018'D)'\\0'''\\''\017''\f''\101''\n''\"''xab''x1f‘4.下面四個(gè)選項(xiàng)中,均是非法常量的選項(xiàng)是()。

A)'ads'B)'\\'C)-0x18D)0xabc-0fff'\01'01177'\0''\0xa'12,4560xf“a”AA

習(xí)題5.下列變量名中合法的是

A>

3a4b

B>

cos(b)

C>

6a7b

D>ch-566.下面錯(cuò)誤的c常數(shù)是

溫馨提示

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