




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
(重慶虎賁教育)
2012年上半年全國計(jì)算機(jī)等級(jí)考試
二級(jí)C語言考前復(fù)習(xí)資料(筆試)
單分支蹄
definetypedefinclude不開聯(lián)閉趟鸚
思維導(dǎo)圖1:c語言程序設(shè)計(jì)知識(shí)結(jié)構(gòu)
第一課C語言程序設(shè)計(jì)基礎(chǔ)
一嫄——)
A8W\
,ht(2鋤67―僻頭).
螂-bm有節(jié))+越蹦:1
'、哪時(shí)山(網(wǎng)對(duì)瞅礁,蹦呻陰)
亙
4float;4?*).°—、.
\\]:麹鋪、
\Y:影序■[呈
\'字耀char(1?T),雌”翔陽廠-J
V
sea瞰熔嶺強(qiáng)冷通蜘
一!騏也力一
'\9制.制播
涕席板里y
!――.低負(fù)),&(W上)gzeof朝運(yùn)算符、觥.觸M曾選)
■.怖斛八]丁飛
庫函費(fèi)![隙停轆到翎
??/蹦鞠1/\\
<?=”.然魏鞠“雙目我算符:/\
就嘛i制――
11U懶徹//\_11就孵癱鈉期
字桶處理部,7
?------,嘀(峋闞3ig艇#怖^----------1一球,期國
1:期〉?;:三目弱力;\蜩鋤搬就麻陽若彼
—二十二.二七"4&二七[二《二?二雕預(yù)算符
?樵變曼逗號(hào)運(yùn)算符.1艙自定加費(fèi)(覷翻章)
1.右期沒依啊.?J/
思維導(dǎo)圖2:第一課C語言程序設(shè)計(jì)基礎(chǔ)
本課主要知識(shí)點(diǎn):
1.知識(shí)點(diǎn):C程序基礎(chǔ)
?c語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言。三種基本結(jié)構(gòu):順序、選擇、循環(huán)。
例1:(2010-09-11)以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是(C)
A)一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成
B)結(jié)構(gòu)化程序使用goto語句會(huì)很便捷
C)在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的
D)由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題
例2:(2011-03-26)計(jì)算機(jī)高級(jí)語言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述
中正確的是(A)
A)C語言程序僅可以編譯執(zhí)行
B)C語言程序僅可以解釋執(zhí)行
C)C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行
D)以上說法都不對(duì)
【解析】計(jì)算機(jī)不能直接理解高級(jí)語言,只能直接理解機(jī)器語言,所以必須要把高級(jí)語言翻
譯成機(jī)器語言,計(jì)算機(jī)才能執(zhí)行高級(jí)語言編寫的程序。翻譯的方式有兩種,一個(gè)是編譯,
一個(gè)是解釋。C語言程序僅可以編譯。
例3:(2011-03-26)以下敘述中錯(cuò)誤的是(D)
A)C語言的可執(zhí)行程序是由一系列機(jī)器指令構(gòu)成的
B)用C語言編寫的源程序不能直接在計(jì)算機(jī)上運(yùn)行
C)通過編譯得到的二進(jìn)制目標(biāo)程序需要連接才可以運(yùn)行
D)在沒有安裝C語言集成開發(fā)環(huán)境的機(jī)器上不能運(yùn)行C源程序生成的.exe文件
【解析】C程序開發(fā)過程:編輯一>(.c)編譯一〉(.obj)鏈接一〉可執(zhí)行文件(.exe)
2.知識(shí)點(diǎn):C語言程序的構(gòu)成
?C程序是由函數(shù)構(gòu)成的,一個(gè)C程序有且僅有一個(gè)main函數(shù)。一個(gè)函數(shù)由兩部分
組成:函數(shù)的首部和函數(shù)體。函數(shù)體包括聲明部分和執(zhí)行部分。一個(gè)C程序總是從main函
數(shù)開始執(zhí)行(即程序的入口),由main函數(shù)結(jié)束,(即程序的出口)。
例1:(2010-03-12)以下敘述正確的是(B)
A)C語言程序是由過程和函數(shù)組成的
B)C語言函數(shù)可以嵌套調(diào)用,例如:fun(fun(x))
C)C語言函數(shù)不可以單獨(dú)編譯
D)C語言中除了main函數(shù),其他函數(shù)不可作為單獨(dú)文件形式存在
例2:(2011-09-11)以下敘述中錯(cuò)誤的是(C)
A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C
B.C語言編寫的函數(shù)都可以作為一個(gè)獨(dú)立的源程序文件
C.C語言編寫的每個(gè)函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行
D.一個(gè)C語言程序只能有一個(gè)主函數(shù)
3.知識(shí)點(diǎn):標(biāo)識(shí)符
?命名規(guī)則:
①標(biāo)識(shí)符中只能包含字母(a-z,A-Z),數(shù)字(0-9),下劃線(_)。
②第?個(gè)字符必須是字母或下劃線。
分類
類型說明符:int,float,double等
廣①關(guān)鍵字(32個(gè))
(有固定含義,不可改變)
語句定義符:if,for,while等
小
寫
②預(yù)定義標(biāo)識(shí)符庫函數(shù)的名字:printf,scanf等
(有特殊含義,可以改變)
編譯預(yù)處理命令名:include等
③用戶自定義的標(biāo)識(shí)符i格式合法,過不能使用關(guān)鍵字,垣見名知意
例1:(2010-03-13)以下C語言用戶標(biāo)識(shí)符中,不合法的是(D)
A)_lB)AaBcC)a_bD)a-b
4.知識(shí)點(diǎn):數(shù)據(jù)類型
例1:(2010-03-16)以下關(guān)于C語言數(shù)據(jù)類型使用的敘述中錯(cuò)誤的是(D)
A)若要準(zhǔn)確無誤差的表示自然數(shù),應(yīng)使用整數(shù)類型
B)若要保存帶有多位小數(shù)的數(shù)據(jù),應(yīng)使用雙精度類型
C)若要處理如“人員信息”等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型
D)若只處理“真”和“假”兩種邏輯值,應(yīng)使用邏輯類型
【解析】結(jié)構(gòu)數(shù)據(jù)類型是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義的,一個(gè)結(jié)
構(gòu)類型的值可以分解成若干個(gè)“成員”或“元素”,每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或
又是一個(gè)構(gòu)造類型,C項(xiàng)正確。C語言沒有邏輯類型,故D項(xiàng)錯(cuò)誤。
例2:(2011-03-26)定義無符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是(B)
A)-369B)36900.369D)整數(shù)集合{1,2,3,4,5}
【解析】無符號(hào)整數(shù)類型為只有正整數(shù)和0,所有選擇B。
5.知識(shí)點(diǎn):常量
?整型常量
十進(jìn)制整常數(shù):沒有前綴,其數(shù)碼為0-9。例如65535,-568
八進(jìn)制整常數(shù):以0開頭,其數(shù)碼為0-7。例如015
十六進(jìn)制整常數(shù):以0X或Ox開頭,其數(shù)碼為0-9,A-F或a-f。例如0x2A
長整型數(shù):整型常數(shù)后綴為L或1。例如358OOOL
無符號(hào)數(shù):整型常數(shù)后綴為U或u。例如158u
?實(shí)型常量的形式
小數(shù)形式:必須有小數(shù)點(diǎn),小數(shù)點(diǎn)前后不能同時(shí)沒有數(shù)字。
指數(shù)形式:aEn(其中a表示十進(jìn)制數(shù),E階碼標(biāo)志,n階碼)。E前E后必須有數(shù)字,E后
必為整數(shù),可以帶符號(hào)。例如2.1E-3、5E8
例1:(2011-09-13)以下選項(xiàng)中關(guān)于C語言常量的敘述錯(cuò)誤的是:(D)
A.所謂常量,是指在程序運(yùn)行過程中,其值不能被改變的量
B.常量分為整型常量、實(shí)型常量、字符常量和字符串常量
C.常量可分為數(shù)值型常量和非數(shù)值型常量
D.經(jīng)常被使用的變量可定義成常量
【解析】根據(jù)常量的基本概念,則不難判斷A、B、C均正確。
例1:(2009-04-13)以下選項(xiàng)中,能用作數(shù)據(jù)常量的是(D)
A)oll5B)0118C)1.5el.5D)115L
【解析】八進(jìn)制整常數(shù)以0開頭,A項(xiàng)錯(cuò)誤;八進(jìn)制整常數(shù)的數(shù)碼味0-7,B項(xiàng)錯(cuò)誤;實(shí)型
常量的指數(shù)形式E后必為整數(shù),故C項(xiàng)錯(cuò)誤;長整型數(shù)后綴為L或1,故D項(xiàng)正確。
例2:(2010-03-26)以下選項(xiàng)中可用作C程序合法實(shí)數(shù)的是(A)
A).le0B)3.0e0.2C)E9D)9.12E
【解析】實(shí)型指數(shù)表示方式“E前E后比有數(shù),E后必須是整數(shù)”,故選A
?字符常量:用單引號(hào)''括起來的一個(gè)字符。包括普通字符常量和轉(zhuǎn)義字符。
普通字符常量:如‘a(chǎn)'、'A'、T。
轉(zhuǎn)義字符:由一對(duì)單引號(hào)引起來的以'開頭的若干字符的組合。如‘\n'表示回車換行、'\\'
表示反斜線符、弋'表示單引號(hào)符、表示雙引號(hào)、'\ddd'表示八進(jìn)制數(shù)、'\xhh'表示
十六進(jìn)制數(shù)。
例3:(2010-09-15)以下選項(xiàng)中能表示合法常量的是(C)
A)整數(shù):1,200B)實(shí)數(shù):1.5E2.0C)字符斜杠:'\\'D)字符串:“\007”
【解析】表示整常量不能用逗號(hào)分隔,A項(xiàng)錯(cuò)誤;實(shí)型常量的指數(shù)形式E后必為整數(shù),故B
項(xiàng)錯(cuò)誤;3007,是轉(zhuǎn)義字符,只能用單引號(hào)括起來,不能用雙引號(hào)或其他括號(hào),故D項(xiàng)錯(cuò)誤。
例4:(2010-03-26)以下選項(xiàng)中不能用作C程序合法常量的是(B)
A)1,234B)M23'C)I23D)"\x7G"
【解析】A中的',,在編譯時(shí)會(huì)出錯(cuò)的,直接寫成1234即可,B是一個(gè)三位八進(jìn)制數(shù)代表
的字符,C是一個(gè)數(shù)字常量,D是一個(gè)字符串,其中\(zhòng)x7是一個(gè)一位十六進(jìn)制數(shù)代表的字符,
也即D中的字符串是兩個(gè)字符,如果sizeof的話是3,如果strlen的話是2。
6.知識(shí)點(diǎn):變量
?整型變量和實(shí)型變量
以考試標(biāo)準(zhǔn)ViusalC++6.0為例,說明各類型變量所占的位數(shù)。
所占所占所占所占
類型類型
位數(shù)字節(jié)數(shù)位數(shù)字節(jié)數(shù)
short162unsignedint324
int324unsignedlong324
long324float324
unsignedshort162double648
例1:(2010-09-38)有以下程序
#include<stdio.h>
main(0)
{ints,t,A=100;doubleB=6;
s=sizeof(A);t=sizeof(B);
printf(<4%d,%d\n,,,s,t);
在VC6平臺(tái)上編譯運(yùn)行,程序運(yùn)行后的輸出結(jié)果是(C)
A)2,4B)4,4C)4,8D)10,6
【解析】在VC6平臺(tái)上,int型占4個(gè)字節(jié),double型占8個(gè)字節(jié),故答案是C。
?字符變量:一個(gè)字符變量只能存放一個(gè)字符。字符串不能存放在字符變量中,只能用字
符數(shù)組或指針存放字符串。
例1:(2009-09-22)有以下定義語句,編譯時(shí)會(huì)出現(xiàn)編譯錯(cuò)誤的是(C)
A)chara='a';B)chara='\n';C)chara='aa';D)chara='\x2d';
【解析】一個(gè)字符變量只能存放一個(gè)字符,A項(xiàng)字符變量存放的是普通字符常量;B、D項(xiàng)
字符變量存放的轉(zhuǎn)義字符;字符常量只能是單個(gè)字符,不能是字符串,’aa,不是單個(gè)字符,
故C項(xiàng)錯(cuò)誤。
7.知識(shí)點(diǎn):ASCH碼
?■的ASCII碼值為48;K的ASCH碼值為65;H的ASCII碼值為97。
?大寫字母與小寫字母的ASCII碼值相差32。
例1:(2009-09-23)有以下程序
#include<stdio.h>
main()
{charcl,c2;
cl='A'+'8'-'4';
c2='A'+'8'-5’;
printf(44%c,%d\n,\cl,c2);
)
已知字母A的ASCII碼為65,程序運(yùn)行后的輸出結(jié)果是(A)
A)E,68B)D,69C)E,DD)輸出無定值
【解析】'A,的ASCII碼值為65,⑻的ASCII碼值為56,4的ASCII碼值為52,65+56-52=69,
對(duì)應(yīng)于字符E。5的ASCII碼值為53,65+56-53=68,對(duì)應(yīng)于字符字符變量cl以%c格
式輸出,即'E,。字符變量c2以%d格式輸出,即68。故答案是A。
8.知識(shí)點(diǎn):進(jìn)制轉(zhuǎn)換
?十進(jìn)制轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制:將十進(jìn)制的數(shù)字除以2(8、16),得到的商
數(shù)繼續(xù)除以2,直到商為0,然后將各次相除所得的余數(shù)從后往前排列。
?二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制:將二(八、十六)進(jìn)制數(shù)的每一位數(shù)從高位
到低位乘以2的n-1次幕,n為該位所在的位數(shù)。
?二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換:每個(gè)八進(jìn)制數(shù)字轉(zhuǎn)換成3位二進(jìn)制數(shù)字。
?二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換:每個(gè)十六進(jìn)制數(shù)字轉(zhuǎn)換成4位二進(jìn)制數(shù)字。
例1:(2010-09)以下程序運(yùn)行后的輸出結(jié)果是一20080
#include<stdio.h>
main()
{inta=200,b=010;
printf(<<%d%d\n,\a,b);
}
【解析】八進(jìn)制數(shù)八0轉(zhuǎn)換成十進(jìn)制數(shù)為8,按“%d%d”格式分別輸出a、b,即2008。
9.知識(shí)點(diǎn):運(yùn)算符的優(yōu)先級(jí)
級(jí)別由大到小:(邏輯)非>算(術(shù)運(yùn)算符)>關(guān)(系運(yùn)算符)>(邏輯)與>(邏輯)或>條
(件運(yùn)算符)>賦(值運(yùn)算符)
10.知識(shí)點(diǎn):強(qiáng)制類型轉(zhuǎn)換運(yùn)算符
?一般形式:(類型說明符)(表達(dá)式)
?功能:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型
例1:(2009-04-06)表達(dá)式(int)((double)(5/2)+2.5)的值是4。
【解析】(int)((double)(5/2)+2.5)-*(int)((double)2)+2.5)f(int)(2.000000+2.5)
(int)(4.500000)T。
例2:以下程序運(yùn)行后的輸出結(jié)果是()o
main()
{inta;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\nH,a);
)
答案:3
【解析】(3/2)=l,(double)?⑵+00=15(int)1.99*2=2,所以(double)(3/2)+0.5+(int)1.99*2=35
故a=3o
11.知識(shí)點(diǎn):算術(shù)運(yùn)算符:+、一、*、/、%
%:參與運(yùn)算的量均為整型。
/:當(dāng)除號(hào)左右兩邊都是整數(shù)的時(shí)候,商也要是整數(shù),如果不是整數(shù)則舍棄小數(shù)部分。當(dāng)參
與運(yùn)算量有一個(gè)為實(shí)型,則商為double型。
例1:(2011-09-14)若有定義語句:inta=10;doubleb=3.14;,則表達(dá)式'A'+a+b值得類型是
(C)
A.charB.intC.doubleD.float
【解析】各種類型數(shù)據(jù)混合運(yùn)算時(shí),最終結(jié)果的類型可依據(jù)以下轉(zhuǎn)換規(guī)律:
char->short->int->long->float->double
例l:(2011-09-15)如有定義語句:intx=I2,y=8,z;,在其后執(zhí)行語句z=0.9+x/y,則z的值為(B)
A.1.9B.lC.2D.2.4
【解析】x,y,z均為整型變量,因此x/y結(jié)果為1,即z=0.9+l=L9,z最終結(jié)果為1
例1:(2010-09-14)有以下定義:inta;longb;doublex,y;則以下選項(xiàng)中正確的表達(dá)式
是(A)
A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x
【解析】參與%運(yùn)算的左右操作數(shù)均為整型,故A項(xiàng)正確,C項(xiàng)錯(cuò)誤。B項(xiàng)是賦值語句,不
是表達(dá)式。賦值運(yùn)算符左邊必須是變量,而不是表達(dá)式,而D項(xiàng)中x+y=x,錯(cuò)誤。
12.知識(shí)點(diǎn):逗號(hào)表達(dá)式
?一般形式:表達(dá)式1,表達(dá)式2……表達(dá)式n
?求值過程:自左向右依次求解,最后一個(gè)表達(dá)式的值為整個(gè)逗號(hào)表達(dá)式的值。
例1:(2009-04-14)設(shè)有定義:intx=2;以下表達(dá)式中,值不為6的是(D)
A)x*=x+1B)x++,2*xC)x*=(1+x)D)2*x,x+=2
【解析】A項(xiàng)x=x*(x+l)=2*(2+l)=6;B項(xiàng)x++后,x的值為3,2*x的值為6,整個(gè)逗號(hào)表達(dá)
式的值為6;C項(xiàng)x=x*(l+x)=2*3=6;D項(xiàng)x=x+2=2+2=4,整個(gè)逗號(hào)表達(dá)式的值為4。故答
案是D。
13.知識(shí)點(diǎn):自增自減運(yùn)算符
++ii自加1后再參與運(yùn)算
i++i參與運(yùn)算后再自加1
-ii自減1后再參與運(yùn)算
i-i參與運(yùn)算后再自減1
++和--的運(yùn)算對(duì)象只能為變量,不能是常量或表達(dá)式。
例1:(2009-09-06)若有定義語句:inta=5;則表達(dá)式:a++的值是5。
【解析】表達(dá)式a++的值是a未加1之前的值,即5。.
?當(dāng)++或一與printf語句結(jié)合時(shí),若++/-x的形式,則先自增/自減,然后輸出;若X++/--
的形式,則先輸出x原值,在進(jìn)行自增/自減操作。
例2:(2011-03-26)有以下程序
#include
main()
{intx=011;
printf(',%d\n,',++x);
)
程序運(yùn)行后的輸出結(jié)果是(C)
A)12B)llC)10D)9
【解析】Oil是一個(gè)八進(jìn)制的數(shù),轉(zhuǎn)為十進(jìn)制則為1*8+1=9;++x是x先自增1再參與其他
運(yùn)算,所以先x自增I為10再輸出即為10,故選C。
14.知識(shí)點(diǎn):賦值表達(dá)式
?一般形式:變量名=表達(dá)式
?賦值運(yùn)算符左邊必須是變量,而不是表達(dá)式。
例1:(2010-03-14)若有定義:doublea=22;inti=0,k=18;則不符合C語言規(guī)定的賦值
語句是(C)
A)a=a++,i++;B)i=(a+k)<=(i+k);C)i=a%ll;D)i=!a;
【解析】a為double型,參與%運(yùn)算的操作數(shù)均為整型,故C項(xiàng)錯(cuò)誤。
例2:(2011-03-26)若有定義語句:inta=3,b=2,c=l;,以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是(A)
A)a=(b=4)=3;B)a=b=c+1;C)a=(b=4)+c;D)a=I+(b=c=4);
【解析】賦值表達(dá)式的左邊必須是變量不能是表達(dá)式。而答案A中,(b=4)是一個(gè)賦值表
達(dá)式。
?復(fù)合賦值運(yùn)算符和表達(dá)式
+=、―=、*=、/=、%=、《=、》=、&=^A:
例2:(2010-09-16)表達(dá)式a+=a-=a=9的值是(D)
A)9B)-9C)18D)0
【解析】賦值運(yùn)算符的結(jié)合性是從右到左,a=9fa=a-9=0fa=a+0=0+0=0。故答案是D。
15.知識(shí)點(diǎn):位運(yùn)算
?按位與運(yùn)算&
規(guī)則:0&0=00&1=01&0=01&1=1
?按位或運(yùn)算I
規(guī)則:0|0=00|1=11|0=11|1=1
?按位異或運(yùn)算八
規(guī)則:0A0=0OA1=11AO=11A1=O
?求反運(yùn)算一
規(guī)則:~0=1~1=0
?左移運(yùn)算<<
規(guī)則:把〈〈左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,高位丟棄,低位補(bǔ)0。左移一位相當(dāng)
于該數(shù)乘以2o左移n位相當(dāng)于該數(shù)乘以2:
例1:(2010-09-40)有以下程序
#include<stdio.h>
main()
{shortc=124;
c=c____D____;
printf("%d\n",c);
}
若要使程序的運(yùn)行結(jié)果為248,應(yīng)在下劃線處填入的是
A)?2B)1248O&0248D)?l
【解析】左移■位相當(dāng)于該數(shù)乘以2,124>>1相當(dāng)于124乘以2,等于248。故答案是D。
例2:(2009-04-39)有以下程序
#include<stdio.h>
main()
{inta=5,b=l,t;
t=(a?2)lb;
printf(44%d\n,,,t);
)
程序運(yùn)行后的輸出結(jié)果是(A)
A)21B)llC)6D)1
o
【解析】左移2位相當(dāng)于該數(shù)乘以2。5?2相當(dāng)于5乘以4等于20。201=21?故答案是A。
?右移運(yùn)算>>
把>>左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位。高位補(bǔ)0,低位丟棄。右移一位相當(dāng)于該數(shù)
除以2。右移n位相當(dāng)于除以2、
例3:(2009-09-39)若有以下程序段
intr=8;
printf(*,%d\n,,,r?l);
輸出結(jié)果是(C)
A)16B)8C)4D)2
【解析】右移一位相當(dāng)于該數(shù)除以2。8>>1相當(dāng)于除以2,等于4,故答案是C。
16.知識(shí)點(diǎn):關(guān)系運(yùn)算符和表達(dá)式
例1:(2010-09-08)在C語言中,當(dāng)表達(dá)式值為0時(shí)表示邏輯值“假”,當(dāng)表達(dá)式值為一
非0時(shí)表示邏輯值“真:
例2:(2010-03-06)設(shè)x為int型變量,請(qǐng)寫出一個(gè)關(guān)系表達(dá)式
(x%3=0)&&(x%7==0),用以判斷x同時(shí)為3和7的倍數(shù)時(shí),關(guān)系表達(dá)式的值為真。
17.知識(shí)點(diǎn):邏輯運(yùn)算符和表達(dá)式
?邏輯運(yùn)算符優(yōu)先級(jí)從高到低:!、&&、II
?邏輯運(yùn)算的真值表
aba&&ballb!a
直真真真假
真假假真假
假真假真真
假假假假真
?進(jìn)行邏輯運(yùn)算時(shí),若&&左邊的值為0,則不再對(duì)右邊的運(yùn)算對(duì)象進(jìn)行運(yùn)算,整個(gè)表達(dá)
式的值為0o
例1:(2011-09-17)若有定義語句:intkl=10,k2=20;,執(zhí)行表達(dá)式(kl=kl>k2)&&(k2=k2>kl)
后,kl和k2的值分別為(B)
A.0和1B.0和20C.10和1D.10和20
【解析】kl>k2為假,因此kl=kl>k2結(jié)果0,邏輯與左邊表達(dá)式為假,右邊表達(dá)式不再處
理,因此kl結(jié)果為0,k2不變,仍為20
例2:inta=2;則表達(dá)式(!a==l)&&(a++==2)的值為0,a的值為2。
【解析】!a為0,!a==l的值為0,&&左邊的值為0,則不再對(duì)右邊的運(yùn)算對(duì)象進(jìn)行運(yùn)算,
所以a的值為2?
?若II左邊的運(yùn)算對(duì)象的值為L則不再對(duì)右邊的運(yùn)算對(duì)象進(jìn)行運(yùn)算,整個(gè)表達(dá)式的值為
例2:(2010-03-17)若a是數(shù)值類型,則邏輯表達(dá)式(a==l)ll(a!=l)的值是(A)
A)1B)0C)2D)不知道a的值,不能確定
【解析】a的值有兩種情況:a等于1或a不等于1。故邏輯表達(dá)式(a==l)ll(a!=l)的值為1。
18.知識(shí)點(diǎn):格式輸入函數(shù)printf()
(1)一般形式:printf(“格式控制字符串”,輸出列表);
(2)遇到控制字符,按照控制字符的規(guī)定輸出,遇到非格式字符串按原樣輸出。
例1:(2009-04-07)若變量x,y已定義為int類型且x的值為99,y的值為9,請(qǐng)將輸出語句
Drintf("x/y=%d”,x/v);補(bǔ)充完整,使其輸出的計(jì)算結(jié)果形式為:x/y=llo
例2:(2009-04-15)程序段:intx=12;doubley=3.141593;printf(,4%d%8.6f,,x,y);的輸出結(jié)果
是(A)
A)123.141593B)123.141593012,3.141593D)123.1415930
【解析】以%8.6f格式輸出,即輸出的總寬度為8,小數(shù)的位數(shù)為6。
19.知識(shí)點(diǎn):格式輸入函數(shù)scanf()
(1)一般形式:scanf(“格式控制字符串”,地址列表);
(2)若格式控制字符串中有非格式字符串,則按原樣輸入。若格式控制字符串中沒有非格
式字符作輸入數(shù)據(jù)之間的間隔,則可用空格、Tab、回車作間隔。
例1:(2011-09-16)若有定義:inta,b;,通過語句scanf("%d;%d",&a,&b);,能把整數(shù)3賦給變
量a,5付給變量b的輸入數(shù)據(jù)是
A.35B.3,5C.3;5D.35
【解析】scanf格式字符串中兩個(gè)%d之間帶有非格式字符分號(hào),運(yùn)行時(shí)應(yīng)原樣輸入。
例1:(2005-04-19)有以下程序
main()
{intm,n,p;
scanf(ttm=%dn=%dp=%d,,,&m,&n,&p);
printf(u%d%d%d\nn,m,n,p);
}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p中的值為789,則正
確的輸入是(A)
A)m=123n=456p=789B)m=123n=456p=789
C)m=123,n=456,p=789D)123456789
【解析】scanf("m=%dn=%dp=%d”,&m,&n,&p);格式控制字符串中有非格式字符串,則按原
樣輸入,故答案是A。
例2:(2011-03?26)有以下程序段
charname120J;
intnum;
scanf(nname=%snum=%dn,name;&num);
當(dāng)執(zhí)行上述程序,并從鍵盤輸入:name二Lilinum=1001v回車〉后,name的值(A)
A)LiliB)name=LiliC)Lilinum=D)name=Lilinum=1001
【解析】scanf中格式字符串的非格式字符串原樣輸入,如其中的<name=>和'num=',所
以接受到的name值是后面的Lili,num值為1001。故選A。
(3)在輸入字符數(shù)據(jù)時(shí),若格式控制字符串中無非格式字符,則認(rèn)為所有輸入的字符均為
有效字符。空格會(huì)被當(dāng)作字符賦值給變量。
例3:(2009-04-23)有以下程序
#include<stdio.h>
main()
{intal,a2;charc1,c2;
scanf("%d%c%d%c”,&al,&c1,&a2,&c2);
printf(<4%d,%c,%d,%c,,,al,c1,a2,c2);
}若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,
程序輸出結(jié)果是:12,a,34,b則正確的輸入格式是(以下一代表空格,<CR>代表回車)
A)12a34b<CR>B)12_a_34_b<CR>C)12,a,34,b<CR>D)12_a34_b<CR>
【解析】空格會(huì)被當(dāng)作字符賦值給變量,故B、D錯(cuò)誤;C項(xiàng)中逗號(hào)會(huì)被當(dāng)作字符賦值給變
量,故C項(xiàng)錯(cuò)誤。
(4)格式字符串
?一般形式:%[*][輸入數(shù)據(jù)寬度][長度]類型
?*表示該輸入項(xiàng),讀入后不賦予相應(yīng)的變量。
?輸入數(shù)據(jù)寬度:用十進(jìn)制數(shù)指定輸入的字符數(shù)。
例4:(2010-09-07)有以下程序
#include<stdio.h>
main()
{intx,y;
scanf(tt%2d%ld,\&x,&y);printf(<<%d\n,,x+y);
}程序運(yùn)行時(shí)輸入:1234567程序的運(yùn)行結(jié)果是.34579。
【解析】%2d輸入的數(shù)據(jù)寬度為2,x的值為12,y的值為34567,x+y=34579。
例5:(2009-04/6)若有定義語句:doublex,y,*px,*py;執(zhí)行了px=&x;py=&y;之后,正
確的輸入語句是(C)
A)scanfCt%f%f,,x,y);B)scanf(t4%f%f;&x,&y);
C)scanf(tt%lf%le,,,px,py);D)scanf("%lf%lF',x,y);
【解析】A、D項(xiàng)地址列表,應(yīng)為&x,&y;x、y為double型,格式控制字符串不是%f%f,
故B項(xiàng)錯(cuò)誤。
?當(dāng)定義的變量類型和scanf中“格式符”類型不一致時(shí)(這里只限定在字符型和整型兩
種類型,其他數(shù)據(jù)類型不可以。)整型和字符型之間通過ASCALL可以相互轉(zhuǎn)化。
例6:(2011-03-12)有以下程序(說明:字符。的ASCII碼值為48)
main()
{charc1,c2;
scanf("%d”,&cl);
c2=cl+9;
printf("%c%c\n",c1,c2);
}若程序運(yùn)行時(shí)從鍵盤輸入48<回車>,則輸出結(jié)果為(09)。
【解析】輸入48,則cl=48,c2=48+9,以字符輸出cl和c2,則為輸出ASCII碼為48和
57對(duì)應(yīng)的字符,分別為0和9。
20.知識(shí)點(diǎn):字符輸出函數(shù)putchar。
一般形式:putchar('a');putcharCMOT);
21.知識(shí)點(diǎn):字符輸入函數(shù)getchar。
一般形式:getchar();或ch=getchar();
例1:(2010-03-15)有以下程序
#include<stdio.h>
main()
{chara,b,c,d;
scanfC'%c%c”,&a,&b);
c=getchar();d=getchar();
printf(<<%c%c%c%c\n,,,a,b,c,d);
}當(dāng)執(zhí)行程序時(shí),按下列方式輸入數(shù)據(jù)(從第1歹U開始,<CR>代表回車,注意:回車也是一
個(gè)字符)
12<CR>
34<CR>
則輸出結(jié)果是(B)
A)1234B)12C)12D)12
334
【解析】以%c格式讀取一個(gè)字符,以getchar。形式也是讀取一個(gè)字符??崭駮?huì)被當(dāng)作字符
賦值給變量。所以,a=T,b='2',c='\n',d='3'。
?getchar經(jīng)常作為while循環(huán)條件,判斷輸入哪一個(gè)字符時(shí),循環(huán)結(jié)束。例如,輸入字符
串,直到輸入'0',程序結(jié)束,則可寫成while(getchar()!='O')
例2:(2011-03-26)有以下程序段
main()
(…
while(getchar()!='\n');
}以下敘述中正確的是(C)
A)此while語句將無限循環(huán)
B)getchar。不可以出現(xiàn)在while語句的條件表達(dá)式中
C)當(dāng)執(zhí)行此while語句時(shí),只有按回車鍵程序才能繼續(xù)執(zhí)行
D)當(dāng)執(zhí)行此while語句時(shí),按任意鍵程序就能繼續(xù)執(zhí)行
【解析】while條件表達(dá)式getcharO^'n'只要輸入的字符不是回車,就一直執(zhí)行循環(huán),而循
環(huán)內(nèi)是一個(gè)空語句,所以按回車鍵程序才能繼續(xù)執(zhí)行,選擇C。
第二課選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)
螂礴頓上
1后
卷
環(huán)
棒
號(hào)
號(hào)
期
期
港
卷
岳
片
贄
贄
計(jì)
計(jì)
..........breaks鼬酬幅)
continued熊就硼嬲
v--------------
前糕褪鞭H棍的酬港障
本課重要知識(shí)點(diǎn):
1.知識(shí)點(diǎn):if語句
?if(表達(dá)式),其中表達(dá)式可以是任意合法的C語言表達(dá)式。
例1:(2011-09-19)下列條件語句中輸出結(jié)果與其他語句不同的是(D)
A.if(a)printf("%d\n",x);elseprintf(u%d\nv,y);
B.if(a==0)printf("%d\n",y);elseprintf(<<%d\nM,x);
C.if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);
D.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
【解析】作為if語句的條件,a等價(jià)于a!=0,因此A和C是等價(jià)的。
例2:(2011-03-26)if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中
正確的是(D)
A)必須是邏輯值B)必須是整數(shù)值C)必須是正數(shù)D)可以是任意合法的數(shù)值
【解析】表達(dá)式不限于關(guān)系表達(dá)式、邏輯表達(dá)式,也可以是任意的數(shù)值類型,其中非0為真,
0為假。故選D。
?對(duì)于單個(gè)if語句,其后跟隨的受if控制的只能是1個(gè)語句或者是1個(gè)復(fù)合語句。
例1:(2009-09-17)設(shè)有定義:inta=l,b=2,c=3;以下語句中執(zhí)行效果與其它三個(gè)不同的是(C)
A)if(a>b)c=a.a=b,b=c;B)if(a>b){c=a,a=b,b=c;}
C)if(a>b)c=a;a=b:b=c;D)if(a>b){c=a:a=b;b=c:}
【解析】對(duì)于單個(gè)if語句,其后跟隨的受if控制的只能是1個(gè)語句或者是1個(gè)復(fù)合語句。
故C項(xiàng),if(a>b)條件成立時(shí),語句c=a;才被執(zhí)行,而無論if(a>b)條件成立與否,語句a=b;b=c;
都會(huì)被執(zhí)行。A、B、D項(xiàng),只有if(a>b)條件成立時(shí),語句c=a;a=b;b=c;才被執(zhí)行。
例2:(2011-03-26)以下程序運(yùn)行后的輸出結(jié)果是200
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d%d\n",x,y);
}
【解析】x=10,y=20,所以x==y為false,t=x;不執(zhí)行,直接執(zhí)行x=y;y=t;x為20,y為0。注
意和if(x==y){t=x;x=y;y=t;}區(qū)別。
?當(dāng)多個(gè)if(表達(dá)式)單分支形式并行出現(xiàn)時(shí),其執(zhí)行順序是:先判斷第一if單分支的條件,
如果為真,執(zhí)行其后面的語句,執(zhí)行完后,繼續(xù)向下執(zhí)行。判斷第二個(gè)if單分支語句,
依次類推。如果第一個(gè)if表達(dá)式的值為假,則不執(zhí)行其后的語句,而去判斷第二個(gè)if
單分支條件。
例1:(2011-03-26)有以下程序
main()
{intx;
scanf("%d",&x);
if(x>15)printf("%d",x-5);
if(x>10)printf("%d",x);
if(x>5)printf("%d\n",x+5);
}若程序運(yùn)行時(shí)從鍵盤輸入12〈回車〉,則輸出結(jié)果為⑵7
【解析】輸入12,比較不大于15所以不執(zhí)行if(x>15)內(nèi)的語句;大于10執(zhí)行printf("%d",x);
輸出12;大于5執(zhí)行printf("%d”,x+5);輸出17。
2.知識(shí)點(diǎn):if語句的嵌套
?內(nèi)嵌結(jié)構(gòu)中,else總是與前面最近的且未曾配對(duì)的if語句配對(duì),組成一對(duì)if?else語句。
例2:(2010-09-18)有以下程序
#include<stdio.h>
main()
{inta=1,b=0;
if(!a)b++;
elseif(a==0)if(a)b+=2;
elseb+=3;
printf("%d\n'',b);
}程序運(yùn)行后的輸出結(jié)果是(A)
A)0B)1C)2D)3
【解析】else總是與前面最近的且未曾配對(duì)的if語句配對(duì),組成一對(duì)if-else語句。即elseb+=3;
與if(a)b+=2;配對(duì)。if(!a)不成立,不執(zhí)行b++;elseif(a==0)不成立,不執(zhí)行if(a)b+=2;
elseb+=3;故直接執(zhí)行printf("%d\n”,b);,輸出結(jié)果為0。
3.知識(shí)點(diǎn):條件表達(dá)式
?一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3
?執(zhí)行過程:表達(dá)式1的值為真,條件表達(dá)式取表達(dá)式2的值;表達(dá)式1的值為假,條件
表達(dá)式取表達(dá)式3的值。
例1:(2009-09-19)以下程序段中,與語句:k=a>b?(b>c?l:0):0;功能相同的是(A)
A)if((a>b)&&(b>c))k=l;B)if((a>b)ll(b>c))k=l;
elsek=0;elsek=0;
C)if(a<=b)k=0;D)if(a>b)k=l;
elseif(b<=c)k=1;elseif(b>c)k=l;
elsek=0;
【解析】條件運(yùn)算符的結(jié)合性是從右至左。當(dāng)b>c時(shí),b>c?l:0的值為1,k=a>b?l:0,同時(shí)
當(dāng)a>b時(shí),a>b?l:0的值為1,此時(shí)k=l。否則k=0。故答案為A.
4.知識(shí)點(diǎn):switch語句
?switch語句的圓括號(hào)中的表達(dá)式的值必須是整型或字符型,不能為實(shí)型。
?case后的表達(dá)式可以是求得整型和字符型的常量表達(dá)式,但不能含有變量。
?default的位置對(duì)程序的執(zhí)行沒有影響。
例1:(2010-09-19)若有定義語句inta,b;doubleX;則下列選項(xiàng)中沒有錯(cuò)誤是(C)
A)switch(x%2)B)switch((int)x%2.0)
{case0:a++;break;{case0:a++;break;
case1:b++;break;case1:b++;break;
default:a++;b++;default:a++;b++;
})
C)switch((int)x%2)D)switch((int)(x)%2)
{caseO:a++;break;{caseO.O:a++;break;
case1:b++;break;case1.0:b++;break;
default:a++;b++;default:a++;b++;
})
【解析】switch語句的圓括號(hào)中的表達(dá)式的值必須是整型或字符型,不能為實(shí)型。x是double
型,x%2不合法,A項(xiàng)錯(cuò)誤。(int)x%2.0不合法,B項(xiàng)錯(cuò)誤。(int)x%2值為整型,故C項(xiàng)正
確。case后面的表達(dá)式可以是求得整型量和字符型量的常量表達(dá)式,故D項(xiàng)錯(cuò)誤。
例2:(2009-09-18)有以下程序
#include<stdio.h>
main()
{intc=0,k;
for(k=1;k<3;k++)
switch(k)
{default:c+=k;
case2:c++;break;
case4:c+=2;break;
)
printf("%d\n”,c);
}程序運(yùn)行后的輸出結(jié)果是(A)
A)3B)5C)7D)9
【解析】當(dāng)k=l時(shí),沒有匹配的case,執(zhí)行default語句,c=c+k=0+1=1。繼續(xù)往下執(zhí)行case
2后邊的語句,C++,c變?yōu)?,遇到break語句,于是退出內(nèi)層switch結(jié)構(gòu)。當(dāng)k=2時(shí),找
到匹配的case2,執(zhí)行C++;c變?yōu)?,遇到break語句,于是退出內(nèi)層switch結(jié)構(gòu)。執(zhí)行外
層循環(huán)for結(jié)構(gòu)的k++,k變?yōu)?,k<3不成立,跳出for語句。最后輸出結(jié)果為3。
?當(dāng)switch語句和循環(huán)語句(for、while)時(shí),要注意switch里面的break語句退出的位
置。解決這一問題的方法是:首先劃分結(jié)構(gòu),確定循環(huán)的語句體包括哪些語句。然后,
在繼續(xù)劃分循環(huán)體內(nèi)的語句,如果循環(huán)體內(nèi)的語句只有一條switch語句,其內(nèi)部出現(xiàn)
了break,遇到break,要結(jié)束當(dāng)前switch語句的執(zhí)行,繼續(xù)執(zhí)行下一次循環(huán)。
例1:(2011-03-26)有以下程序
main()
{ints;
scanf(u%d",&s);
while(s>0)
{switch(s)
{case1:printf(M%dn,s+5);
case2:printf(,,%d,,,s44);break;
case3:printf("%d",s+3);
default:printf(H%dH,s+l);break;
}
scanf("%dn,&s);
)
}運(yùn)行時(shí),若輸入123450〈回車〉,則輸出結(jié)果是(A)
A)6566456B)66656C)66666D)6666656
【解析】while循環(huán)s<=0時(shí)退出循環(huán),輸入123450,只有當(dāng)輸入0時(shí)退出循環(huán),switch
中當(dāng)s=l時(shí),執(zhí)行case1,case2,由于case1后面沒有break,會(huì)繼續(xù)執(zhí)行case2,遇到break,
退出switch;當(dāng)s=2時(shí),執(zhí)行case2,退出switch;當(dāng)s=3時(shí),執(zhí)行case3,default,由于case
3后面沒有break,會(huì)繼續(xù)執(zhí)行default,遇到break,退出switch;當(dāng)s=4和5時(shí),執(zhí)行default,
退出switch。所以輸入1時(shí),輸出65;輸入2時(shí),輸出6;輸入3時(shí),輸出64;輸入4時(shí),
輸出5;輸入5時(shí),輸出6。故選擇A。
5.知識(shí)點(diǎn):while,do-while,for三種循環(huán)結(jié)構(gòu)
例1:(2011-09-20)有以下程序:
^include<stdio.h>
main()
{inta=7;
while(a-);
printf("%d\n”,a);
}程序運(yùn)行后的輸出結(jié)果是(B)
A.-1B.0C.1D.7
【解析】此類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 5 good manners study skills 教學(xué)設(shè)計(jì)2024-2025學(xué)年牛津譯林版八年級(jí)英語下冊(cè)
- 2020-2021深圳南山實(shí)驗(yàn)學(xué)校初中部小學(xué)四年級(jí)數(shù)學(xué)上期末第一次模擬試題帶答案
- 鋼軌彈性支撐施工方案
- 屋頂融雪裝置施工方案
- 醇油漆施工方案
- 樓體加固具體施工方案
- 入駐店鋪合同范本
- 業(yè)務(wù)拓展顧問合同范例
- 產(chǎn)品質(zhì)量控制的年度措施計(jì)劃
- 乙方委托設(shè)計(jì)合同范本
- 四年級(jí)數(shù)學(xué)(小數(shù)加減運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案
- 天津市建筑安全員-C證考試題庫
- 2025年皖北衛(wèi)生職業(yè)學(xué)院單招職業(yè)適應(yīng)性測(cè)試題庫參考答案
- 小學(xué)生春耕教學(xué)課件
- 2024年南信語文數(shù)學(xué)試卷(含答案)
- 2024年重慶市集中選調(diào)應(yīng)屆大學(xué)畢業(yè)生到基層工作考試真題
- 2025年個(gè)人投資合同電子版模板
- 車輛掛靠協(xié)議書
- 2025年湖南交通職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測(cè)試題庫1套
- 2017年公務(wù)員多省聯(lián)考《申論》真題(吉林甲級(jí)卷)及參考答案(含詳細(xì)解析)
- 一年級(jí)下冊(cè)健康成長教案
評(píng)論
0/150
提交評(píng)論