版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024離婚協(xié)議要點及范本
- 2024石材礦山荒料資源整合與開發(fā)合同3篇
- 2025年度鴨苗繁育基地建設(shè)與運營管理合同3篇
- 2025年度船舶船員體檢與健康保險合同3篇
- 二零二五年搬家物流運輸合同樣本6篇
- 2024版建設(shè)工程施工合同ef0203
- 二零二五年度房地產(chǎn)項目土地置換合同3篇
- 2025年草原生態(tài)保護(hù)與草原旅游開發(fā)一體化合同3篇
- 2024版深圳股權(quán)轉(zhuǎn)讓合同協(xié)議書范本
- 2025年度高空樓頂廣告設(shè)計與施工一體化服務(wù)合同4篇
- 深圳2024-2025學(xué)年度四年級第一學(xué)期期末數(shù)學(xué)試題
- 中考語文復(fù)習(xí)說話要得體
- 《工商業(yè)儲能柜技術(shù)規(guī)范》
- 華中師范大學(xué)教育技術(shù)學(xué)碩士研究生培養(yǎng)方案
- 醫(yī)院醫(yī)學(xué)倫理委員會章程
- xx單位政務(wù)云商用密碼應(yīng)用方案V2.0
- 風(fēng)浪流耦合作用下錨泊式海上試驗平臺的水動力特性試驗
- 高考英語語法專練定語從句含答案
- 有機(jī)農(nóng)業(yè)種植技術(shù)操作手冊
- 【教案】Unit+5+Fun+Clubs+大單元整體教學(xué)設(shè)計人教版(2024)七年級英語上冊
- 2020年的中國海外工程示范營地申報材料及評分標(biāo)準(zhǔn)
評論
0/150
提交評論