C程序設(shè)計復(fù)習(xí)資料_第1頁
C程序設(shè)計復(fù)習(xí)資料_第2頁
C程序設(shè)計復(fù)習(xí)資料_第3頁
C程序設(shè)計復(fù)習(xí)資料_第4頁
C程序設(shè)計復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩284頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章概述

【要點歸納】

1、C語言的特點

⑴C語言短小精悍,基本組成精煉、簡潔。

32個標(biāo)準(zhǔn)關(guān)鍵字,45個標(biāo)準(zhǔn)運算符及9種控制語句。

⑵C語言運算符豐富,表達(dá)能力強(qiáng)。

⑶C語言數(shù)據(jù)結(jié)構(gòu)豐富,結(jié)構(gòu)化好。

(4)C語言提供了某些與匯編語言相似的功能,有利于編寫系統(tǒng)軟件。

(5)C語言程序可移植性好。

2、C語言標(biāo)識符

C語言中,允許用作標(biāo)識符的字符有:

?26個英文字母(包括大小寫)

?數(shù)字0—9

?下劃線.

C語言的標(biāo)識符是滿足如下條件的字符序列:

?只能由英文字母、數(shù)字和下劃線組成。

?長度為1一32.

?必須以英文字母或下劃線開頭。

C語言的標(biāo)識符可以分為以下三類:

?關(guān)鍵字。c語言中規(guī)定了一批標(biāo)識符,它們在程序中都代表著固定的含義,不能另

作他用。

?預(yù)定義標(biāo)識符。這些標(biāo)識符在c語言中也都有特定的含義,因此為了避免誤解,建

議用戶不要把這些預(yù)定義標(biāo)識符另作它用。

?用戶標(biāo)識符。

3、C語言風(fēng)格

(DC語言嚴(yán)格區(qū)分英文字母大小寫。

(2)C語言用“;”作為語句分隔符。

⑶C語言中“{}”用于標(biāo)識一組語句,構(gòu)成復(fù)合語句。

(4)C程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句也可以寫在幾行上。

⑸注釋用來向用戶提示或解釋程序的意義。(注釋部分允許出現(xiàn)在程序的任何位置。編

譯時,會忽略所有的注釋符,即不對他們作任何處理。)

4、C程序構(gòu)成

⑴一個C源程序由函數(shù)構(gòu)成(函數(shù)是C程序的基本結(jié)構(gòu)單位),其中至少包括一個主函

數(shù)。

(2)main函數(shù)可以放在任意位置,C程序總是從main函數(shù)開始執(zhí)行,在main函數(shù)中結(jié)

束。

⑶C程序中可以包含常量、變量、運算符和標(biāo)識符。

5、C程序的結(jié)構(gòu)

C語言是一種結(jié)構(gòu)化的程序設(shè)計語言,它提供了3種基本結(jié)構(gòu):

⑴順序結(jié)構(gòu);

⑵選擇結(jié)構(gòu);

⑶循環(huán)結(jié)構(gòu)。

6、結(jié)構(gòu)化程序設(shè)計

模塊化程序設(shè)計的思想是:按照自頂向下的原則,把問題逐層分解。即先從總體出發(fā),

把問題分成若干個大塊,每一大塊代表一個大任務(wù);在此基礎(chǔ)上,再對每個大塊細(xì)化,把大

任務(wù)變成若干個小任務(wù),直到每個小任務(wù)都能用基本結(jié)構(gòu)表示為止。在劃分模塊的過程中,

應(yīng)保證模塊的單入口、單出口、完整性和獨立性。

從組織結(jié)構(gòu)上看,一個C程序可以由若干個源程序文件組成,一個源文件可以由若干

個函數(shù)及全局變量聲明部分組成,一個函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句組成。

7、C程序設(shè)計步驟

數(shù)

調(diào)

據(jù)

結(jié)

數(shù)

構(gòu)

學(xué)

結(jié)

8、C程序的開發(fā)過程

編輯(生成?c文件)一編譯(生成?obj文件)一連接(生成?exe文件)一執(zhí)行

1

目標(biāo)文件

附:C語言中的關(guān)鍵字

autobreakcasecharconstcontinuedefault

dodoubleelseenumexternfloatfor

gotoifintlongregisterreturnshort

signedsizeofstaticstructswitchtypedefunion

unsignedvoidvolatilewhile

【本節(jié)例題選編】

1、選擇題

【例1.1]一個C語言程序是由B

A.一個主程序和若干子程序組成B.若干函數(shù)組成

C.若干過程組成D.若干子程序組成

【例1.2】C語言規(guī)定,在一個源程序中,main函數(shù)的位置」

A.必須在最開始B.必須在系統(tǒng)調(diào)用的庫函數(shù)的后面

C.可以任意D.必須在最后

【例1.31一個C程序的執(zhí)行是從上—

A.本程序的main函數(shù)開始,到main函數(shù)結(jié)束

B.本程序文件的第一個函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束

C.本程序的main函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束

D.本程序文件的第一個函數(shù)開始,到本程序main函數(shù)結(jié)束

【例1.4]以下是C程序的基本結(jié)構(gòu)單位

A.文件B.語句

C.函數(shù)D.表達(dá)式

說明:文件是C程序的基本編譯單位;表達(dá)式是運算符和運算數(shù)構(gòu)

成的一個序列,是用來說明一個計算過程;語句是C程序的基本組

成單位;只有函數(shù)才是C程序的基本結(jié)構(gòu)單位。

【例1.5]以下D不是C語言的特點。

A.運算符豐富B.數(shù)據(jù)結(jié)構(gòu)豐富

C.可以直接訪問物理地址D.C函數(shù)包含的語句數(shù)目沒有限制

【例1.6]下列關(guān)于C語言標(biāo)識符的敘述中正確的是

A.標(biāo)識符中可以出現(xiàn)下劃線和中劃線(減號)

B.標(biāo)識符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線

C.標(biāo)識符中可以出現(xiàn)下劃線,但不可以放在標(biāo)識符的開頭

D.標(biāo)識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在標(biāo)識符的開頭

【例1.7】以下幾組選項中,均為不合法標(biāo)識符的是」_

A.A,P_0,doB.float,laO,_A

C.b-a,goto,intD._123,temp,INT

說明:A和P0,是合法的標(biāo)識符,如是關(guān)鍵字,不是合法的標(biāo)識

符,山0和A是合法的標(biāo)識符,float是關(guān)鍵字,不是合法的標(biāo)識符,

goto和int都是關(guān)鍵字,b-a不是合法的標(biāo)識符。

【例1.8]以下敘述不正確的是D。

A.一個C源程序可由一個或多個函數(shù)組成

B.一個C源程序必須包含一個main函數(shù)

C.C程序的基本組成單位是函數(shù)

D.在C程序中,注釋說明只能位于一條語句的后面

【例1.9】以下敘述正確的是C。

A.在C程序中,main函數(shù)必須位于程序的最前面

B.C程序的每行中只能寫一條語句

C.C語言本身沒有輸入輸出語句

D.在對一個C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯誤

2、填空題

【例1.10】一個C源程序中至少應(yīng)包括一個主函數(shù)。

【例1.11】C程序編譯后生成目標(biāo)程序,連接后生成可執(zhí)行程序。

【例1.121C語言規(guī)定,標(biāo)識符只能由字母、數(shù)字、下劃線三種字符組成,

而且,第一個字符必須是字母或下劃線。

【例1.13】程序的3種基本控制結(jié)構(gòu)是,^結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

第二章數(shù)據(jù)類型及其運算

【要點歸納】

1、基本數(shù)據(jù)類型

C語言的數(shù)據(jù)類型有基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型之分。

整型

C基本類型字符型r

浮點型(單精度型

1枚舉類型雙精度

'數(shù)組類型

數(shù)據(jù)類型

構(gòu)造類型結(jié)構(gòu)體類型

〔共用體類型

指針類型

I空類型

2、變量

所謂變量就是在程序執(zhí)行過程中,其值可以改變的量。變量有兩個要素:

?變量名。每個變量都必須有一個名稱,即變量名,變量名應(yīng)遵循標(biāo)識符的命名規(guī)則。

?變量值。在程序運行過程中,變量的值存儲在內(nèi)存中,不同類型的變量,占用的內(nèi)

存單元數(shù)不同。

C語言是一種強(qiáng)類型語言,它要求在使用數(shù)據(jù)之前對數(shù)據(jù)的類型進(jìn)行說明。也就是說,

在C語言中,所有變量必須先定義后使用。在定義的同時也可以進(jìn)行賦初值操作,即初始

化。

定義變量的格式如下:

[存儲類型]數(shù)據(jù)類型變量1,變量2,…;

3、常量

常量又稱作常數(shù),是指在程序運行過程中其值不能被改變的量。在C語言中,常量有

不同的類型,如整型常量、實型常量和字符串常量等。

⑴整型常量:可以是十進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù)表示的數(shù)。

?十進(jìn)制

其形式是:d

其中,d可以是從0-9的一個或多個十進(jìn)制數(shù)位,第一位不能是0。

?八進(jìn)制

其形式是:0d

其中,d可以是一個或多個八進(jìn)制數(shù)(0-7之間),起始0是必須的引導(dǎo)符。

?十六進(jìn)制

其形式是:Oxd

其中,d可以是一個或多個十六進(jìn)制數(shù)(從0一9的數(shù)字,或是從”a“到“F的字母)。引

導(dǎo)符0是必須的,字母X可以用大寫或小寫。

整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制方式存放的,最高位為符號位,并以補(bǔ)碼表示。

將一個十進(jìn)制整數(shù)轉(zhuǎn)化為補(bǔ)碼表示的方法如下:

?對于正數(shù),其補(bǔ)碼表示與原碼相同。

?對于負(fù)數(shù),其補(bǔ)碼表示為它的反碼加1;負(fù)數(shù)的反碼為其絕對值的所有位(含符號

位)取反得到。

對于用補(bǔ)碼表示的數(shù)據(jù),還原為原碼的方法如下:

?對于正數(shù)(補(bǔ)碼表示的符號位為0),原碼與補(bǔ)碼相同。

?對于負(fù)數(shù),原碼一定為負(fù)數(shù),其絕對值為除符號位以外所有位取反后加1。

⑵實型常量

實型常量又稱浮點型常量,是一個用十進(jìn)制表示的符號實數(shù)。實型常量表示形式有以下

兩種:

?小數(shù)表示方式

?指數(shù)表示方式

注:e之前必須有數(shù)字,e后面的指數(shù)必須為整數(shù)。

⑶字符常量

字符常量又分為字符型常量、字符串常量、轉(zhuǎn)義字符和符號常量四種類型。

?字符型常量

字符型常量是指用一對單引號括起來的一個字符。

?字符串常量

字符串常量是指用一對雙引號括起來的一串字符。

?轉(zhuǎn)義字符

轉(zhuǎn)義字符是C語言中一種特殊形式的字符。

例:\ddd三位八進(jìn)制

\xhh二位十六進(jìn)制

?符號常量

C語言允許將程序中的常量定義為一個標(biāo)識符,稱為符號常量。

例:#definePI3.1415926

4、運算符

⑴算術(shù)運算符

+、一、*、/、%

⑵自增和自減運算符

++、---

注:自增和自減運算符只適用于單個變量,而不能用于其他表達(dá)式。

⑶賦值運算符

⑷復(fù)合的賦值運算符

+=、_=、*=、/=、%=

⑸關(guān)系運算符

<、v=、>、>=、==、!=

⑹邏輯運算符

!、&&、||

⑺逗號運算符

表達(dá)式1,表達(dá)式2

⑻條件運算符

c?el:e2

⑼長度運算符

sizeof()

(10)位邏輯運算符

~、&、I、A

5、類型轉(zhuǎn)換

⑴數(shù)據(jù)的混合運算和類型自動轉(zhuǎn)換

C語言允許不同類型的數(shù)據(jù)混合運算,但此時要遵循一定的規(guī)則,將運算符兩邊的操作

數(shù)轉(zhuǎn)換成共同的類型,具體轉(zhuǎn)換原則是將運算符兩邊的數(shù)據(jù)轉(zhuǎn)換成為它們之中數(shù)據(jù)最長的數(shù)

據(jù)類型,以保證運算的精度不會低。

double-*—float

lohg

unsigned

int?<——char,short

⑵強(qiáng)制類型轉(zhuǎn)換

(類型名稱)表達(dá)式

6、C語言語句

一個C程序應(yīng)包括數(shù)據(jù)描述(由數(shù)據(jù)聲明部分來實現(xiàn))和數(shù)據(jù)操作(由執(zhí)行語句來實

現(xiàn))。C語句分為以下五類:

?控制語句(9種)

?函數(shù)調(diào)用語句

?表達(dá)式語句

?空語句

?復(fù)合語句

7、數(shù)據(jù)輸出

在C語言中可以使用printf()、putchart()、puts()等函數(shù)進(jìn)行數(shù)據(jù)輸出。

注:在printf()語句中,是從右向左計算輸出表達(dá)式的值。

8、數(shù)據(jù)輸入

在C語言中可以使用scanf()、getchar()、gets()等函數(shù)進(jìn)行數(shù)據(jù)輸入。

注:

(Dscanf()函數(shù)中沒有精度控制。

⑵gets(str);與scanf("%s”,str);的差別是:使用gets()函數(shù)輸入的字符串可

以含有空格,而scanf("%s",str);不能輸入含空格字符的字符串。

【本節(jié)例題選編】

1,選擇題

【例2.1]若x、i、j和k都是int型變量,則計算下面表達(dá)式后,x的值為£

x=(i=4,j=16,k=32)

A.4B.16C.32D.52

【例2.2]若有代數(shù)式迎,則不正確的C語言表達(dá)式是_£_

be

A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*3

【例2.3]已知各變量的類型說明如下:

intk,a,b;

unsignedlongw=5;

doublex=1.42;

則以下不符合C語法的表達(dá)式是一A

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

【例2.4】以下選項中不屬于C語言的類型的是一D。

A.signedshortintB.unsignedlongint

C.unsignedintD.longshort

【例2.5】下列定義中合法的是A。

A.shor_a=l-.le-1;B.doubleb=l+5e2.5;

C.longdo=0xfdaL;D.float2_end=1-e-3;

【例2.6】-8在內(nèi)存中的存儲形式是A。

A.1111111111111000B.1000000000001000

C.0000000000001000D.1111111111110111

說明:8對應(yīng)的二進(jìn)制數(shù)為:0000000000001000,-8對應(yīng)的補(bǔ)碼為

0000000000001000的反碼,即1111111111110111,加1得到

1111111111111000。

【例2.7]數(shù)值029是一個D。

A.八進(jìn)制數(shù)B.十六進(jìn)制數(shù)

C.十進(jìn)制數(shù)D.非法數(shù)

【例2.8]在C語言中,要求運算數(shù)必須是整型的運算符是D

A./B.++C.!=D.%

【例2.9】以下符合C語言語法的賦值表達(dá)式是一B0

A.d=9+e+f=d+9B.d=9+e,f=d+9

C.d=9+e,e++,d+9D.d=9+e++=d+7

【例2.101C語言中,關(guān)于自增自減運算符使用正確的是

A.10++B.(x+y)—C.d+++d+++d++D.++(a?b)

【例2.11]設(shè)有intx=ll;則表達(dá)式(x++*l/3)的值是A。

A.3B.4C.11D.12

【例2.12]已知:inti=6,j;則語句i=(++i)+(i++)后的i值是B。

A.4B.14C.13D.15

【例2.13]設(shè)x、y、t均為int型變量,則執(zhí)行語句:x=y=3;t=++x||++y后,y的值為C

A.不定值B.4C.3D.1

說明:C語言中,&&和II運算存在短路現(xiàn)象。

【例2.14】當(dāng)c的值不為0時,以下能將c的值賦給變量a,b的是C。

A.c=b=aB.(a=c)||(b=c)

C.(a=c)&&(b=c)D.a=c=b

【例2.15】已有定義:intx=3,y=4,z=5,則表達(dá)式!(x+v)+z-l&&y+z/2的值是D0

A.6B.0C.2D.1

【例2.16】下列運算符中,哪個運算符的優(yōu)先級最高B0

A.<=B.+C.||D.>=

【例2.17]在C語言中,int、char和short三種類型數(shù)據(jù)所占用的內(nèi)存是一C0

A.均為2個字節(jié)B.由用戶自己定義

C.由所用機(jī)器的機(jī)器字長決定的D.是任意的

【例2.18]若有說明語句:charc='\72':則變量cA

A.包含1個字符B.包含2個字符

C.包含3個字符D.說明不合法,c的值不確定

【例2.19]若有定義:inta=7;floatx=2.5,y=4.7;則表達(dá)式x+a%3*(int)(x+y)%2/4的值是A

A.2.500000B.2.750000C.3.500000D.0.000000

【例2.20】設(shè)有說明:charw;intx;floaty;doublez;則表達(dá)式w*x+z-y值的數(shù)據(jù)類型為巨

A.floatB.charC.intD.double

【例2.21】以下程序的執(zhí)行結(jié)果是一B。

#include<stdio.h>

main()

(

inti=2;

printf("%d,%d\n”,++i,-i);

)

A.1,1B.2,1C.1,2D.2,2

說明:printf語句中,是從右向左計算輸出表達(dá)式的值。

【例2.22】當(dāng)接受用戶輸入的含空格的字符串時;應(yīng)使用的函數(shù)是B。

A.scanf()B.gets()C.getchar()D.getc()

【例2.23】下列敘述中正確的是D

A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類型

D.C語言中既沒有邏輯類型也沒有集合類型

【例2.24】以下錯誤的敘述是D。

A.在C程序中,逗號運算符的優(yōu)先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若a和b類型相同,在計算了賦值表達(dá)式a=b后b中的值將放入a中,而b中的

值不變

D.當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸

入實型數(shù)值

【例2.25]長整型long數(shù)據(jù)在內(nèi)存中的存儲形式是D

A.ASCII碼B.原碼C.反碼D.補(bǔ)碼

【例2.26】字符型常量在內(nèi)存中存放的是A

A.ASCII碼B.BCD碼C.內(nèi)部碼D.十進(jìn)制碼

【例2.27】字符串常量“\\\22a,0\n”的長度是C

A.8B.7C.6D.5

【例2.28】設(shè)intx=l,y=l;表達(dá)式(!x||y-)的值是B

A.0B.1C.2D.-1

【例2.29]已知:intx;則使用逗號表達(dá)式(x=4*5.x*5).x+25的結(jié)果是C,變量x的值

為A。

A.20B.100C.45D.表達(dá)式不合法

【例2.30]邏輯運算符兩側(cè)運算對象的數(shù)據(jù)類型

A.只能是0或1B.只能是0或非。正數(shù)

C.可以是整型或字符型數(shù)據(jù)D.可以是任何類型的數(shù)據(jù)

說明:邏輯運算符兩側(cè)運算對象一定是邏輯值,在C語言中邏輯值

有:整數(shù)0為假,整數(shù)非0為真,實數(shù)0為假,實數(shù)非0為真,空

字符為假,非空字符為真。因此,邏輯運算符兩側(cè)運算對象的數(shù)據(jù)

類型可以是(整型)、(實型)或(字符型)數(shù)據(jù)。

【例2.31】以下程序的執(zhí)行結(jié)果是上_。

#include<stdio.h>

main()

(

printf(u%f\n,,,2.5+1*7%2/4);

)

A.2.500000B.2.750000C.3.375000D.3.000000

【例2.32]若給定條件表達(dá)式(M)?(a++):(a-),則其中表達(dá)式(M)C

A.和(M==0)等價B.和(M==l)等價

C.和(M!=0)等價D.和(M!=1)等價

【例2.33】有以下程序:

#include<stdio.h>

main()

{

unsignedchara,b,c;

a=0x3;

b=a|0x8;

c=b?l;

printf(44%d%d\n”,b,c);

)

程序運行后的輸出結(jié)果是

A.-1112B.-6-13

C.1224D.1122

說明:a=[ll]2,b=[ll]2|[1000]2=[1011]2=ll,c=bvvl=[l(H10]2=22.

2、填空題

【例2.34]若有以下定義,則計算表達(dá)式v+=w=m*。后的v值是-16。

intm=5,y=2;

【例2.35]已知intx=6;則執(zhí)行x+=x-=x*x語句后,x的值是-60。

【例2.36]若w=l,x=2,y=3,z=4,則條件表達(dá)式w>x?w:y<z?y:z的結(jié)果是二。

【例2.37]在語言中,一個int型數(shù)據(jù)在內(nèi)存中占2個字節(jié),貝Iint型數(shù)據(jù)的取值范圍為

-32768~32767?

【例2.38】要將一個16位二進(jìn)制的整型變量的高8位清零,只保其留低8位,可用的方法

是255與原數(shù)與。

說明:[255]IO=[OOOOOOOO111U1U]2。

【例2.39]若x和n均是int型變量,且x和n的初值均為5,則計算表達(dá)式后x的值為10,

n的值為6。

x+=n++

【例2.40]已知字母a的ASCII碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則表達(dá)式

ch='a'+'8'-'3'的值為f。

【例2.41]假設(shè)m是一個三位數(shù),從左到右用a,b,c表示各位的數(shù)字,則從左到右各個數(shù)字

是bac的三位數(shù)的表達(dá)式是(m/10)%10*40+m/100*%+m%10。

【例2.42】設(shè)y為int型變量,描述“y是奇數(shù)”的表達(dá)式是Y%2!=0。

【例2.43]在scanf()函數(shù)中格式符x用于輸入十六進(jìn)制整數(shù)。

【例2.44】若有定義:inta=2,b=3;lloalx=3.5,y=2.5;則下面表達(dá)式的值為3.500000。

(float)(a+b)/2+(int)x%(int)y

【例2.45】若有定義:intb=7:floata=25c=4.7:則下面表達(dá)式的值為5.500000。

a+(int)(b/3*(int)(a+c)/2)%4

【例2.46]若有以下程序:執(zhí)行后的輸出結(jié)果是6,4。

#include<stdio.h>

main()

(

intk=2,i=2,m;

m=(k+=i*=k);

printf("%d,%d\n”,m,i);

)

【例2.47】有以下程序,輸入123456789,其輸出結(jié)果是12,56,789.000000。

#include<stdio.h>

main()

(

inta,b;

floatf;

scanf(tt%2d%*2d%2d%f,,&a,&b,&f);

printfC4%d,%d,%f\n,\a,b,f);

說明:先將前兩位12賦給a,遇到%*2d,跳過輸入中兩位即34,

再將56賦給丁最后將789賦給f。

【例2.48】以下程序的執(zhí)行結(jié)果是2,0,3,—1。

#include<stdio.h>

main()

(

inta,b,c;

a=b=l;

c=a++-1;

printf("%d,%d,”,a,c);

c+=?a+++(++b||++c);

printfC4%d,%d\n,,,a,c);

說明:對于語句c=a++-l;先執(zhí)行a++返回l,a=2,c=0;輸出2,0。

對于語句c+=-a+++(++b||++c);先計算右邊表達(dá)式之值,

-a+++(++b||++c)等價于-(a++)+(++b||++c),執(zhí)彳丁a++,返回2,a=3,執(zhí)

行++b返回L不執(zhí)行++c,所以-a+++(++b||++c)之值為-2+1=-1,得

到c=-l,輸出3-1。

【例2.49】以下程序的執(zhí)行結(jié)果是8910。

#include<stdio.h>

main()

(

inti=10;

說明:在printf。語句中,是從右向左計算輸出表達(dá)式的值。

【例2.50】以下程序的執(zhí)行結(jié)果是a=-32768,b=32767。

#include<stdio.h>

main()

(

inta=-32768,b;

b=a-l;

printf("a=%d,b=%d”,a,b);

說明:首先執(zhí)行a=-32768,a的補(bǔ)碼為[1000000000000000]2oB的

補(bǔ)碼=a的補(bǔ)碼+(-1)的補(bǔ)碼=[1000000000000000]2+[11111111

11111111]2=[0111111111111111]2,b的原碼=[01111111

11111111]2=32767O

【例2.51】以下程序的執(zhí)行結(jié)果是8。

#include<stdio.h>

main()

(

intx=042,y=067,z;

z=(x?2)&(y?3);

printf("%d\n”,z);

)

說明:X=[42]8=[100010]2,X>>2=[1000]2,y=[67]8=[U01U]2;

y<<3=[110U1000]2。z=(x?2)&(y<<3)=[1000]2=8。

【例2.52】以下程序的執(zhí)行結(jié)果是18。

#include<stdio.h>

main()

(

intn=023;

printff6%d\n,,,-n);

)

【例2.53】以下程序的執(zhí)行結(jié)果是「8,8,10°

#include<stdio.h>

main()

(

intx=10,y=9;

inta,b,c;

a=(-x==y++)?—x:++y;

b=x++;

c=y;

printf(u%d,%d,%d\n,,,a,b,c);

第三章選擇語句和循環(huán)語句

【要點歸納】

1、if語句

If語句有三種使用形式

⑴單分支if語句。

if(條件)語句;

⑵雙分支if語句。

if(條件)語句1;

else語句2;

⑶多分支if語句。

if(〈條件1〉)語句1;

elseif((條件2))語句2;

elseif((條件n))語句n;

else語句n+1;

2、switch(開關(guān))語句

switch語句用于方便地從多個語句中選擇一個或多個語句執(zhí)行。

switch(〈表達(dá)式〉)

case常量表達(dá)式1:語句1;

case常量表達(dá)式2:語句2;

case常量表達(dá)式n:語句n;

default:語句n+1;

注:表達(dá)式的值一定是整型值,若為其他類型,最后都要轉(zhuǎn)換為整型數(shù)。

3、while循環(huán)語句

while(條件)語句;

注:先判斷條件,后執(zhí)行語句;

4、do—while循環(huán)語句

do

語句;

while(條件);

注:先執(zhí)行一次循環(huán)體,再判斷條件。

While和do-while語句的差別是,后者至少執(zhí)行“語句”一次,而前者有時一次也不執(zhí)

行語句。

5、for循環(huán)語句

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

語句;

注:省略各個表達(dá)式時,應(yīng)能夠知道其意義。

⑴“表達(dá)式1”可以省略,此時應(yīng)在該語句之前給循環(huán)變量賦初值。其后的分號不能省

略。

⑵“表達(dá)式2”可以省略,即無判定條件,循環(huán)無終止進(jìn)行下去。需要在循環(huán)體中用break

等語句退出循環(huán)。

⑶“表達(dá)式3”可以省略,這樣需要在循環(huán)體“語句”中讓循環(huán)變量變化,以保證循環(huán)

能正常結(jié)束。

(4)“表達(dá)式1”和“表達(dá)式3”可以同時省略,這樣為⑴和⑶兩種情況同時出現(xiàn),需要

使用相關(guān)語句保證循環(huán)結(jié)束。

⑸三個表達(dá)式都可省略,這樣為⑵和⑷兩種情況同時出現(xiàn),需要使用相關(guān)語句保證循環(huán)

結(jié)束。

6、break語句

break語句的使用格式很簡單,由關(guān)鍵字break和分號構(gòu)成,其功能如下:

?在switch語句中,break用來使程序流程跳出switch語句,繼續(xù)執(zhí)行switch后的語

句;

?在循環(huán)語句中,break用來從最近的循環(huán)體內(nèi)跳出來。

7、continue語句

continue語句只能用于循環(huán)語句中,作用為結(jié)束本次循環(huán),即跳過循環(huán)體中尚末執(zhí)行的

語句,接著進(jìn)行是否執(zhí)行下一次循環(huán)的判定。

【本節(jié)例題選編】

1,選擇題

【例3.1]以下語句錯誤的是B

A.if(x>y);B.if(x=y)&&(x!=0)x+=y;

C.if(x!=y)scanf("%d",&x);eslescanf("%d'',&y);D.if(x<y){x++;y++;}

【例3.2】C語言的if語句中,用作判斷的條件表達(dá)式為A

A.任意表達(dá)式B.邏輯表達(dá)式C.關(guān)系表達(dá)式D.算術(shù)表達(dá)式

說明:在C語言中任何類型的表達(dá)式都可以用作類型判斷,判斷的

標(biāo)準(zhǔn)是:零值為假,非零值即真。

【例3.3]為了避免在嵌套的條件語句if-else中產(chǎn)生二義性,C語言規(guī)定:else子句總是與

配對。

A.縮排位置相同的ifB.同一行上的if

C.其之后最近的ifD.其之前最近的if

【例3.4】以下程序的輸出結(jié)果是.C

#include<stdio.h>

main()

inti=l,j=l,k=2;

if((j++||k++)&&i++)printf(<<%d,%d,%d\n,,,i,j,k);

)

A.1,1,2B.2,2,1

C.2,2,2D.2,2,3

【例3.5]已知intx=10,y=20,z=30;以下語句執(zhí)行后x,y,z的值是B

if(x>y)

z=x;x=y;y=z;

A.x=10,y=20,z=30B.x=20,y=30,z=30

C.x=20,y=30,z=10D.x=20,y=30,z=20

【例3.6】以下程序的運行結(jié)果是.C_______。

main()

intm=5;

if(m++>5)printf(4t%d\n,,,m);

elseprintfC4%d\n,,,m—);

)

A.4B.5C.6D.7

【例3.7】以下程序的輸出結(jié)果是一C。

main()

(

inta=100,x=10,y=20,ok1=5,ok2=0;

if(x<y)

if(y!=10)

if(!okl)

a=l;

else

if(ok2)a=10;

a=-l;

printf("%d\n”,a);

)

A.1B.0C.-1D.值不確定

【例3.8]若a,b均是整型變量,正確的switch語句是

A.switch(a)B.switch(a)

((

case1.0:printf("i\rT);caseb:printf("i\n");

case2:printf("you'n‘');case1:prinlf("you\n");

))

C.switch(a+b)D.switch(a+b)

((

case1:printf("i\n");case1:printf("i\n’');

case2*a:printf("you\n");case2:printf("you\n");

說明:選項A中常量表達(dá)式不是整型;選項B中常量表達(dá)式中包含

變量;選項C中“case2*a”錯誤。

【例3.9]對for(表達(dá)式1;;表達(dá)式3),可理解為C

A.for(表達(dá)式1;0;表達(dá)式3)B.for(表達(dá)式1;表達(dá)式3;表達(dá)式3)

C.for(表達(dá)式1;1;表達(dá)式3)D.for(表達(dá)式1;表達(dá)式1;表達(dá)式3)

說明:省略表達(dá)式2相當(dāng)于條件永為真。

【例3.10]執(zhí)行以下程序段后,變量a,b,c的值分別是B。

intx=10,y=9;

inta,b,c;

a=(-x==y++)?—x:++y;

b=x++;

c=y;

A.a=9,b=9,c=9B.a=8,b=8,c=10

C.a=9,b=10,c=9D.a=l,b=ll,c=10

【例3.11]有以下程序段:

intn=0,p;

do{

scnaf("%d”,&p);n++;

}while(p!=12345&&n<3);

此處do-while循環(huán)的結(jié)束條件是D0

A.p的值不等于12345并且n的值小于3

B.的值等于12345并且n的值大于等于3

C.p的值不等于12345或者n的值小于3

D.p的值等于12345或者n的值大于等于3

【例3.12】下面程序中循環(huán)體的執(zhí)行次數(shù)是C

a=10;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

A.1B.2C.3D.4

【例3.13】以下程序段C。

x=-l;

do

{x=x*x;)

while(!x);

A.是死循環(huán)B.循環(huán)執(zhí)行二次

C.循環(huán)執(zhí)行一次D.有語法錯誤

【例3.14】以下程序的執(zhí)行結(jié)果是一A

#include<stdio.h>

main()

(

inta=0,i;

for(i=l;i<5;i++)

{switch(i)

(

case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;

)

)

printf(u%d\nn,a);

)

A.31B.13C.10D.20

【例3.15】下面程序的運行結(jié)果是D

#include<stdio.h>

main()

(

inty=10;

do{y-;}while(-y);

printf("%d\n”,y-);

)

A.-1B.1C.8D.0

【例3.16]下面程序的功能是輸出以下金字塔圖案的是:

***

#include<stdio.h>

main()

inti,j;

for(i=l;i<=4;i++)

for(j=l;j<=4-i;j++)printfC");

for(j=1;j<=;j++)printf("*");

prinlf("\n”);

在下劃線處應(yīng)填入的是一B

A.iB.2*i-lC.2*i+lD.i+2

【例3.17】下面程序段D。

for(t=l;t<=100;t++)

(

scanfT%d'',&x);

if(x<0)

continue;

printf(“%3d”,t);

)

A.當(dāng)x<0時整個循環(huán)結(jié)束B.x>=0時什么也不做

C.printf函數(shù)永遠(yuǎn)也不執(zhí)行D.最多允許輸出100個非負(fù)整數(shù)

【例3.18]若w,x,y,z,m均為int型變量,則執(zhí)行以下語句后的m值是A

w=l;x=2;y=3;z=4;

m=(w<x)?w:x;

m=(m<y)?m:y;

m=(x<z)?m:z;

A.1B.2C.3D.4

【例3.19】請讀以下程序:

main()

(

inta=5,b=0,c=0;

if(a=b+c)

else

printf("$$$\nn);

)

以上程序D.

A.有語法錯誤不能通過編譯B.可以通過編譯但不能通過連接

C.輸出***D.輸出$$$

【例3.20】下面程序段不是死循環(huán)的是

A.inti=100;

while(l)

(

i=i%100+1;

if(i>100)break;

)

B.for(;;);

C.intk=0;

do{++k;}while(k<=0)

D.ints=36;

While(s);—s;

【例3.21】有一堆零件(100到200之間),如果分成4個零件一組的若干組,則多2個零

件,若分成7個零件一組,則多3個,若分成9個零件一組,則多5個零件,下面程序是求

這堆零件總數(shù),請選擇填空。

#include<stdio.h>

main()

(

inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!((i-3)%7))

if(D)

primf("%d”,i);

)

A.i%9=5B.i%9!=5

C.(i-5)%9!=0D.i%9==5

【例3.22】下面程序的運行結(jié)果是一Ac

#include<stdio.h>

main()

(

inti;

for(i=l;i<=5;i++)

(

if(i%2)

printf,*");

else

continue;

printf,#');

)

printf(u$\nn);

)

A,*#*#*#$B.#*#*#*$

C.*#*#$D.#*#*$

【例3.23】下面程序的運行結(jié)果是.B。

#include<stdio.h>

main()

inti,j,x=O;

for(i=0;i<2;i++)

(

x++;

for(j=0;j<=3;j++)

溫馨提示

  • 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

提交評論