C語(yǔ)言習(xí)題(詳細(xì)解答)_第1頁(yè)
C語(yǔ)言習(xí)題(詳細(xì)解答)_第2頁(yè)
C語(yǔ)言習(xí)題(詳細(xì)解答)_第3頁(yè)
C語(yǔ)言習(xí)題(詳細(xì)解答)_第4頁(yè)
C語(yǔ)言習(xí)題(詳細(xì)解答)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言版)習(xí)題第01章 緒論一選擇題1.以下敘述中正確的是_。A)程序設(shè)計(jì)的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試B)程序設(shè)計(jì)的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)C)程序設(shè)計(jì)的任務(wù)就是確定所用算法D)以上三種說法都不完整 【解析】 程序設(shè)計(jì)通常分為問題建模、算法設(shè)計(jì)、編寫代碼和編譯調(diào)試四個(gè)階段。所以選項(xiàng)A)、B)、C)說法都不完整。2.以下關(guān)于簡(jiǎn)單程序設(shè)計(jì)的步驟和順序的說法中正確的是。A)確定算法后,整理并寫出文檔,最后進(jìn)行編碼和上機(jī)調(diào)試B)首先確定數(shù)據(jù)結(jié)構(gòu),然后確定算法,再編碼,并上機(jī)調(diào)試,最后整理文檔C)先編碼和上機(jī)調(diào)試,在編碼過程中確定算法和數(shù)據(jù)結(jié)構(gòu),最后整理文檔D)先寫好文檔,再根據(jù)文檔進(jìn)

2、行編碼和上機(jī)調(diào)試,最后確定算法和數(shù)據(jù)結(jié)構(gòu) 【解析】設(shè)計(jì)一個(gè)能解決實(shí)際問題的計(jì)算機(jī)程序需要經(jīng)過以下幾個(gè)過程: 建立模型。 算法設(shè)計(jì):給出解決問題的步驟,即算法。 算法表達(dá):選擇一種表達(dá)算法的工具,對(duì)算法進(jìn)行清晰的表達(dá)。 編寫程序:選擇一種程序設(shè)計(jì)語(yǔ)言,把以上算法程序化,這稱為編寫程序。 程序調(diào)試:對(duì)編寫好的程序進(jìn)行調(diào)試,修改程序中的錯(cuò)誤。 程序文檔編寫與程序維護(hù)。綜上所述,B)選項(xiàng)是符合上述描述的,其他選項(xiàng)不恰當(dāng)。3,敘述中正確的是_。A)C程序的基本組成單位是語(yǔ)句B)C程序中的每一行只能寫一條語(yǔ)句C)簡(jiǎn)單C語(yǔ)句必須以分號(hào)結(jié)束D)C語(yǔ)句必須在一行內(nèi)寫完 【解析】函數(shù)是C程序的基本組成單位;C語(yǔ)言

3、書寫風(fēng)格很自由,不但一行可以寫多個(gè)語(yǔ)句,還可以將一個(gè)語(yǔ)句寫在多行中。故本題答案為C)。4.以下敘述中正確的是。A)C程序中的注釋只能出現(xiàn)在程序的開始位置和語(yǔ)句的后面B)C程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個(gè)語(yǔ)句C)C程序書寫格式自由,一個(gè)語(yǔ)句可以寫在多行上D)用C語(yǔ)言編寫的程序只能放在一個(gè)程序文件中 【解析】在C語(yǔ)言中,注釋可以加在程序中的任何位置,選項(xiàng)A)錯(cuò)誤。C程序可以分模塊寫在不同的文件中,編譯時(shí)再將其組合在一起,選項(xiàng)D)錯(cuò)誤。C程序的書寫風(fēng)格很自由,不但一行可以寫多個(gè)語(yǔ)句,還可以將一個(gè)語(yǔ)句寫在多行中。所以正確答案為選項(xiàng)C)。5.以下關(guān)于C語(yǔ)言的敘述中正確的是。A)C語(yǔ)言中的注釋不可以

4、夾在變量名或關(guān)鍵字的中間B)C語(yǔ)言中的變量可以在使用之前的任何位置進(jìn)行定義C)在C語(yǔ)言算術(shù)表達(dá)式的書寫中,運(yùn)算符兩側(cè)的運(yùn)算數(shù)類型必須一致D)C語(yǔ)言的數(shù)值常量中夾帶空格不影響常量值的正確表示 【解析】C語(yǔ)言中注釋可以放在任何位置,但不能夾在變量名或關(guān)鍵字中間,選項(xiàng)A正確;C語(yǔ)言中的變量要在使用之前定義,C標(biāo)準(zhǔn)規(guī)定定義位置在相關(guān)程序塊的首部,選項(xiàng)B錯(cuò)誤;C語(yǔ)言中兩側(cè)數(shù)據(jù)類型可以不一致,系統(tǒng)可進(jìn)行強(qiáng)制類型轉(zhuǎn)換,選項(xiàng)C錯(cuò)誤;C語(yǔ)言數(shù)值常量中不允許存在空格,選項(xiàng)D錯(cuò)誤。6.以下關(guān)于C語(yǔ)言數(shù)據(jù)類型使用的敘述中錯(cuò)誤的是。A)若要準(zhǔn)確無誤差地表示自然數(shù),應(yīng)使用整數(shù)類型B)若要保存帶有多位小數(shù)的數(shù)據(jù),應(yīng)使用雙精

5、度類型C)若要處理如"人員信息"等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型D)若只處理"真"和"假"兩種邏輯值,應(yīng)使用邏輯類型 【解析】C語(yǔ)言中沒有邏輯類型,若只處理"真"或"假"兩種邏輯值,可以使用整型數(shù)"1"或"0"表示,故選D。第02章 基本數(shù)據(jù)類型一選擇題1.有以下定義:int a;long b;double x,y;則以下選項(xiàng)中正確的表達(dá)式是。A)a%(int)(xy) B)ax!y; C)(a*y)%b D)yxyx 【解析】A)選項(xiàng)中如果x

6、與y的值相等那么取余時(shí)就會(huì)有除數(shù)為0的情況。C)選項(xiàng)中取余的兩個(gè)數(shù)據(jù)都應(yīng)為整數(shù),不能有一方為實(shí)型變量,而a*y的結(jié)果為double型。D)選項(xiàng)表達(dá)式本身就錯(cuò)誤,不能給表達(dá)式賦值。所以,本題答案為B)。2.有以下程序#include<stdio .h>main()int s,t,A10;double B6; ssizeof(A); tsizeof(B); printf("%d,%dn",s,t);在VC6平臺(tái)上編譯運(yùn)行,程序運(yùn)行后的輸出結(jié)果是A)2,4 B)4,4 C)4,8 D)10,6 【解析】sizeof的作用就是返回一個(gè)對(duì)象或者類型所占的內(nèi)存字節(jié)數(shù)。在VC

7、6中整型占4個(gè)字節(jié),雙精度實(shí)型占8個(gè)字節(jié),所以選C)。3.若有定義:double a=22;int i=0,k=18;,則不符合C語(yǔ)言規(guī)定的賦值語(yǔ)句是。A)a=a+,i+; B)i=(a+k)<=(i+k);C)i=a%11; D)i=!a; 【解析】C語(yǔ)言中取余運(yùn)算符兩側(cè)的操作數(shù)只能是整型(若為char型,則會(huì)自動(dòng)轉(zhuǎn)換成整型)。4.有以下程序:#include <stdio.h>main()inta1,b0; printf("%d,",bab); printf("%dn",a2*b);程序運(yùn)行后的輸出結(jié)果是_。A)0,0 B)1,0

8、C)3,2 D)1,2 【解析】 執(zhí)行第一個(gè)printf語(yǔ)句時(shí),bab1,所以輸出1,執(zhí)行第二個(gè)printf語(yǔ)句時(shí),a2*b=2,所以輸出結(jié)果為2。5.若有定義語(yǔ)句:int a=3,b=2,c=1;,以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是。A)a=(b=4)=3;B)a=b=c+1;C)a=(b=4)+c;D)a=1+(b=c=4); 【解析】在A)選項(xiàng)中,賦值語(yǔ)句b=4先把4賦值給整型變量b,之后執(zhí)行(b=4)=3是把常量3賦值給常量4,但是由于C語(yǔ)言規(guī)定賦值運(yùn)算符的左側(cè)只能是變量,不能是常量或者表達(dá)式,因此A)選項(xiàng)錯(cuò)誤。6.有以下定義:int a;long b;double x,y;則以下選項(xiàng)中正確

9、的表達(dá)式是。A)a%(int)(xy) B)ax!y; C)(a*y)%b D)yxyx 【解析】A)選項(xiàng)中如果x與y的值相等那么取余時(shí)就會(huì)有除數(shù)為0的情況。C)選項(xiàng)中取余的兩個(gè)數(shù)據(jù)都應(yīng)為整數(shù),不能有一方為實(shí)型變量,而a*y的結(jié)果為double型。D)選項(xiàng)表達(dá)式本身就錯(cuò)誤,不能給表達(dá)式賦值。所以,本題答案為B)。7.若有定義語(yǔ)句:intx10;,則表達(dá)式xxx的值為_。A)20 B)10 C)0 D)10 【解析】 xxx可化為:xx(xx),由于x初始值為10,所以計(jì)算后,x102010,因此選B)。二填空題1.以下程序的功能是:將值為三位正整數(shù)的變量x中的數(shù)值按照個(gè)位、十位、百位的順序拆分

10、并輸出。請(qǐng)?zhí)羁铡?include<stdio.h>main()int x=256; printf("%d-%d-%dn",_,x/10%10,x/100); 參考答案:x%10【解析】x=256,x%10=6。2.以下程序運(yùn)行后的輸出結(jié)果是 。#include<stdio.h>main() int a;a=(int)(double)(3/2)+0.5+(int)1.99*2);printf("%dn",a); 參考答案:3【解析】本題中3/2=1,(double)(3/2)=1,(int)1.99*2=1*2=2,因此(int)(

11、1+0.5+2)=(int)3.5=3。3.若有定義語(yǔ)句:int a5;,則表達(dá)式:a的值是_。 參考答案:5【解析】 a的含義是在使用a值以后,使a值加1,所以a的值為5。4.若有語(yǔ)句double x17;int y;,當(dāng)執(zhí)行y(int)(x/5)%2;之后y的值為_。 參考答案:1【解析】 y(int)(x/5)%2(int)(3.4)%23%21。5.設(shè)變量a和b已正確定義并賦初值。請(qǐng)寫出與aab等價(jià)的賦值表達(dá)式 _。 參考答案:a=-b【解析】aab等價(jià)于aa(ab),等價(jià)于ab。第03章 順序結(jié)構(gòu)一.選擇題1.有以下程序#include<stdio.h>main()cha

12、r a,b,c,d; scanf("%c%c",&a,&b); c=getchar();d=getchar(); printf("%c%c%c%cn",a,b,c,d);當(dāng)執(zhí)行程序時(shí),按下列方式輸入數(shù)據(jù)(從第1列開始,<CR>代表回車,注意,回車也是一個(gè)字符)12<CR>34<CR>則輸出結(jié)果是A)1234 B)12 C)12 D)12 3 34 【解析】程序根據(jù)用戶輸入分別給字符型變量a、b、c、d賦值為'1'、'2'、'<CR>'、'

13、;3',因此輸出到屏幕得到選項(xiàng)C中的格式。2.有以下程序段:charch;intk;cha;k12;printf("%c,%d,",ch,ch,k);printf("k%dn",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是A)因變量類型與格式描述符的類型不匹配輸出無定值B)輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為零或不定值C)a,97,12k12D)a,97,k12 【解析】輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號(hào)的十進(jìn)制整型數(shù)輸出。所以第一個(gè)輸出語(yǔ)句輸出的結(jié)果為a,97,第二個(gè)輸出語(yǔ)句

14、輸出的結(jié)果為k12,所以選項(xiàng)D)為正確答案。3.有以下程序#include<stdio.h>main() char a30,b30;scanf("%s",a);gets(b);printf("%sn%sn",a,b);程序運(yùn)行時(shí)若輸入:how are you? I am fine <回車>則輸出結(jié)果是A)how are you? I am fine B)how are you? I am fineC)how are you? I am fine D)how are you? 解析】scanf函數(shù)會(huì)把空格字符作為輸入的字符串之間的分

15、隔符,因此字符串a(chǎn)為"how"。gets()函數(shù)讀取字符串時(shí),直至接受到換行符或EOF時(shí)才停止,并將讀取的結(jié)果存放在指針?biāo)赶虻淖址麛?shù)組中,因此其余輸入的內(nèi)容賦值給b。二填空題1.以下程序運(yùn)行后的輸出結(jié)果是。#include<stdio.h>main()int a200,b010; printf("%d%dn",a,b); 參考答案:2008【解析】整型變量a的值為200,b的值"010"是用八進(jìn)制表示的"10"即十進(jìn)制的"8",最后輸出格式均為%d,即十進(jìn)制格式,所以輸出為&quo

16、t;2008"。2.有以下程序(說明:字符0的ASCIl碼值為48)#include<stdio.h>main() char c1,c2;scanf("%d",&c1);c2=c1+9;printf("%c%cn",c1,c2);若程序運(yùn)行時(shí)從鍵盤輸入48<回車>,則輸出結(jié)果為 。 參考答案:09【解析】本題中通過ASCII碼對(duì)字符變量賦值,由于字符0的ASCII碼是48,因此字符變量c1為0,c2的ASCII碼比c1大9,因此c2為9。第04章 選擇結(jié)構(gòu)一選擇題1.若變量已正確定義,在if(W)printf(&

17、quot;%dn",k);中,以下不可替代W的是。A)a<>bc B)chgetchar() C) abc D)a 【解析】在C語(yǔ)言中,表示不等于不能用"<>",而只能使用"!="。其他選項(xiàng)均滿足題目的要求。2.當(dāng)變量c的值不為2、4、6時(shí),值也為"真"的表達(dá)式是。A)(c2)|(c4)|(c6)B)(c>2&& c<6)|(c!3)|(c!5)C)(c>2&&c<6)&&!(c%2)D)(c>2&& c&l

18、t;6)&&(c%2!1) 【解析】滿足表達(dá)式(c>2&& c<6)的整型變量c的值是2,3,4,5,6。當(dāng)變量c的值不為2,4,6時(shí),其值只能為3或5,所以表達(dá)式c!3和c!5中至少有一個(gè)為真,即不論c為何值,選項(xiàng)B)中表達(dá)式的值都為"真"。正確答案為B)。3.已知字母A的ASCII碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達(dá)式是。A)kk>A&& kk<ZB)!(kk>A|kk<Z)C)(kk32)>a&&(kk32)<ZD

19、)isalpha(kk)&&(kk<91) 【解析】C語(yǔ)言的字符以其ASCII碼的形式存在,所以要確定某個(gè)字符是大寫字母,只要確定它的ASCII碼在'A'和'Z'之間就可以了,選項(xiàng)A)和C)符合此要求。在選項(xiàng)D)中,函數(shù)isalpha用來確定一個(gè)字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個(gè)字母的ASCII碼小于91,那么就能確定它是大寫字母。本題答案選B)。4.有以下程序: #include < stdio.h> main() int al,b2,c3,d0; if(al && b2)

20、 if(b!2|c!3) printf("%d,%d,%dn",a,b,c); else printf("%d,%d,%dn",a,b,c); else printf("%d,%d,%dn",a,b,c); 程序運(yùn)行后的輸出結(jié)果是_。A)1,2,3B)1,3,2C)l,3,3D)3,2,1 【解析】 程序首先執(zhí)行第一個(gè)判斷語(yǔ)句,a1成立;b2,先判斷b是否為2,再進(jìn)行b加1操作,執(zhí)行后b的值為3。繼續(xù)執(zhí)行第二個(gè)判斷語(yǔ)句,注意程序此時(shí)進(jìn)行邏輯或運(yùn)算,b!2的值為真,因此條件表達(dá)式b!2|c!3的值為真,程序便不再執(zhí)行第二個(gè)邏輯語(yǔ)句c!3

21、,而直接進(jìn)行輸出操作。因此,本題正確答案為C)。5.執(zhí)行以下程序段后,w的值為_。intw'A',x14,y15;w(xy)&&(w<'a');A)1 B)NULLC)1 D)0 【解析】根據(jù)題目所給條件可知,x|y為1,w<'a'為1,1&&1結(jié)果為1。因此正確答案為C)。6.若變量已正確定義,有以下程序段:inta3,b5,c7; if(a>b) ab;ca; if(c!a) cb; printf("%d,%d,%dn",a,b,c);其輸出結(jié)果是A)程序段有語(yǔ)法錯(cuò)B)3,

22、5,3C)3,5,5D)3,5,7 【解析】?jī)蓚€(gè)if語(yǔ)句的判斷條件都不滿足,程序只執(zhí)行了ca這條語(yǔ)句,所以變量c的值等于3,變量b的值沒能變化,程序輸出的結(jié)果為3,5,3。所以正確答案為選項(xiàng)B)。7.有以下程序段:int a,b,c;a10;b50;c30;if(a>b)ab,bc;ca;printf("a%d b%d c%dn",a,b,c);程序的輸出結(jié)果是_。A)a10 b50 c10 B)a10 b50 c30C)a10 b30 c10 D)a50 b30 c50 【解析】該題考查if條件語(yǔ)句,當(dāng)條件為真時(shí),將b值賦給a,c值賦給b;當(dāng)條件為假時(shí),將a值賦給c

23、。該題中if條件為假,所以將a的值賦給c,故a10 b50 c10。8.有以下程序:#include<stdio.h>main()intx1,y2,z3;if(x>y)if(y<z)printf("%d",z);elseprintf("%d",y);printf("%dn",x);程序的運(yùn)行結(jié)果是_。A)331 B)41C)2 D)1 【解析】該題目考查if條件語(yǔ)句。else語(yǔ)句和最近的一個(gè)if語(yǔ)句配對(duì)。由于x>y為假,所以直接執(zhí)行最后一行代碼。9.有以下程序:#include<stdio.h>

24、;main()intx1,y0,a0,b0; switch(x) case 1: switch(y) case 0: a; break; case 1: b; break; case 2:a; b; break; case 3:a; b; printf("a%d,b%dn",a,b);程序的運(yùn)行結(jié)果是A)a1,b0B)a2,b2C)a1,b1D)a2,b1 【解析】本題考查了 switch結(jié)構(gòu)的內(nèi)容。在C語(yǔ)言中,程序執(zhí)行完一個(gè)case標(biāo)號(hào)的內(nèi)容后,如果沒有break語(yǔ)句,控制結(jié)構(gòu)會(huì)轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行,因?yàn)閏ase 常量表達(dá)式只是起語(yǔ)句標(biāo)號(hào)作用,并不是在該處進(jìn)行條件

25、判斷。本題程序在執(zhí)行完內(nèi)部switch結(jié)構(gòu)后,繼續(xù)執(zhí)行了外部switch結(jié)構(gòu)的 case 2分支。最后a和b的值分別為2和1。二填空題1.在C語(yǔ)言中,當(dāng)表達(dá)式值為0時(shí)表示邏輯值"假",當(dāng)表達(dá)式值為 時(shí)表示邏輯值"真"。 參考答案:非0【解析】本題一定要明確一個(gè)概念,即:所有非0的數(shù)(并不只是"1"),在c語(yǔ)言中都表示邏輯值為"真"。2.設(shè)x為int型變量,請(qǐng)寫出一個(gè)關(guān)系表達(dá)式_ ,用以判斷x同時(shí)為3和7的倍數(shù)時(shí),關(guān)系表達(dá)式的值為真。 參考答案:(x%3=0)&&(x%7=0)【解析】x%3=0能保證

26、x是3的倍數(shù),x%7=0能保證x是7的倍數(shù),(x%3=0)&&(x%7=0)能保證x是3的倍數(shù)并且x是7的倍數(shù)。3.有以下程序#include<stdio.h>main() int a=1,b=2,c=3,d=0; if(a=1) if(b!=2) if(c=3)d=1; else d=2; else if(c!=3)d=3; else d=4; else d=5; printf("%dn",d);程序運(yùn)行后的輸出結(jié)果是_ 。 參考答案:4【解析】a=1為真,b!=2為假,c!=3為假,所以d=4。4.有以下程序#include<stdio

27、.h>main() int x;scanf("%d",&x);if(x>15)printf("%d",x-5);if(x>10)printf("%d",x);if(x>5)printf("%dn",x+5);若程序運(yùn)行時(shí)從鍵盤輸入12<回車>,則輸出結(jié)果為 。 參考答案:1217【解析】本題中輸入12時(shí),第一條if的條件x>15不滿足因此不執(zhí)行,第二條if的條件x>10滿足因此輸出12,第三條if的條件x>5滿足因此輸出17。5.以下程序運(yùn)行后的輸出結(jié)果

28、是 。#include<stdio.h>main() int x=10,y=20,t=0;if(x=y)t=x;x=y;y=t;printf("%d%dn",x,y); 參考答案:20 0【解析】本題中if選擇的條件x=y不滿足,因此直接執(zhí)行后面的x=y和y=t,則x的值為20,y的值為0。第05章 循環(huán)結(jié)構(gòu)一選擇題1.以下不構(gòu)成無限循環(huán)的語(yǔ)句或語(yǔ)句組是A)n=0; do+n;while(n<=0);B)n=0; while(1)n+;C)n=10; while(n);n-;D)for(n=0,i=1;i+) n+=i; 【解析】項(xiàng)A)中變量n的值,先自加

29、1,再進(jìn)行循環(huán)條件判斷,此時(shí)循環(huán)條件n<0不成立,跳出循環(huán)。所以正確答案為A)。2.有以下程序#include<stdio.h>main() int y10; while(y); printf("y%dn",y);程序執(zhí)行后的輸出結(jié)果是A)y0 B)y1C)yl D)while構(gòu)成無限循環(huán) 【解析】當(dāng)y減為1時(shí)判斷while(y-),此時(shí)滿足條件,但是y變成0。下次循環(huán)判斷while(y-)時(shí),因?yàn)閥為0不滿足條件跳出循環(huán),但是此時(shí)也要執(zhí)行y-,所以y變成了-1。 打印輸出時(shí)輸出-1。3.有以下程序:#include<stdio.h>main(

30、)inti5;doif(i%31)if(i%52)printf("*%d",i);break; i;while(i!0);printf("n");程序的運(yùn)行結(jié)果是_。A)*7 B)*3*5C)*5D)*2*6 【解析】整個(gè)程序中只有對(duì)i增加的語(yǔ)句而沒有對(duì)i減少的語(yǔ)句,所以2、3都不可能出現(xiàn),選項(xiàng)B)和D)錯(cuò)誤。而i5時(shí)第一個(gè)if語(yǔ)句的表達(dá)式為假,所以選項(xiàng)C)也錯(cuò)誤。4.以下程序段中的變量已正確定義: for(i0;i<4;i,i) for(kl;k<3;k);printf("*");程序段的輸出結(jié)果是_。A)* B)* C

31、)* D)* 【解析】 本題考察for循環(huán)語(yǔ)句,注意第二個(gè)for語(yǔ)句的后面有一個(gè)分號(hào),即printf函數(shù)不屬于循環(huán)體,無論循環(huán)執(zhí)行多少次,printf("*")語(yǔ)句只執(zhí)行一次。因此,本題正確答案為D)。5.有以下程序#include<stdio.h>main() int a=1,b=2; for(;a<8;a+)b+=a;a+=2; printf("%d,%dn",a,b);程序運(yùn)行后的輸出結(jié)果是A)9,18 B)8,11 C)7,11 D)10,14 【解析】初始值a=1,b=2,第一次循環(huán):b=b+a=2+1=3,a=a+2=1+2

32、=3,a=a+1=3+1=4;第二次循環(huán):b=b+a=3+4=7,a=a+2=4+2=6,a=a+1=6+1=7;第三次循環(huán):b=b+a=7+7=14,a=a+2=7+2=9,a=a+1=9+1=10,故本題答案選D。6.有以下程序:#include<stdio.h>main()inti,j; for(i3;i>1;i) for(j1;j<2;j)printf("%d",ij); printf("n"); 程序的運(yùn)行結(jié)果是_。A)2 3 4 B)4 3 2 3 4 5 5 4 3C)2 3 D)4 5 3 4 3 4 4 5 2

33、3 【解析】該題目主要考查for嵌套循環(huán),要注意循環(huán)變量i和j的取值范圍。輸出結(jié)果為變量i和j的和。8.設(shè)變量已正確定義,以下不能統(tǒng)計(jì)出一行中輸入字符個(gè)數(shù)(不包含回車符)的程序段是_。A)n0;while(chgetchar()!'n')n;B)n0;while(getchar()!'n')n;C)for(n0;getchar()!'n';n); D)n0;for(chgetchar();ch!'n';n); 【解析】 A)項(xiàng)每進(jìn)行一次循環(huán)判斷一個(gè)字符是否為回車,如果不是就進(jìn)行下一次判斷,因此可以統(tǒng)計(jì)出輸入字符個(gè)數(shù);B)項(xiàng)與A)項(xiàng)

34、的判斷相似,僅為是否將讀入的數(shù)據(jù)賦值給一個(gè)變量,因此并不影響判斷結(jié)果;C)想用for循環(huán)來判斷,與B)項(xiàng)的判斷完全相同,可以統(tǒng)計(jì)出輸入字符個(gè)數(shù);D)項(xiàng)中chgetchar()是給變量ch賦初值,如果輸入回車,則程序只循環(huán)一次,如果輸入一個(gè)非回車的字符,則程序進(jìn)入死循環(huán)。因此,本題正確答案為D)。9.有以下程序#include<stdio.h>main() int i,j,m=1; for(i=1;i<3;i+) for(j=3;j>0;j-) if(i*j>3)break; m*=i*j; printf("m=%dn",m);程序運(yùn)行后的輸出結(jié)

35、果是A)m=6 B)m=2 C)m=4 D)m=5 【解析】第一次循環(huán)i=1,j=3和j=2時(shí)都能執(zhí)行m*=i*j,此時(shí)得到m的值為6;然后進(jìn)行第二次循環(huán)i=2,j=3時(shí)會(huì)執(zhí)行break語(yǔ)句,內(nèi)部循環(huán)直接結(jié)束,此時(shí)i再加1,也會(huì)導(dǎo)致退出外部循環(huán),所以最終結(jié)果m的值為6。10.有以下程序#include<stdio.h>main() int s;scanf("%d",&s);while(s>0) switch(s) case 1:printf("%d",s+5);case 2:printf("%d",s+4);

36、break;case 3:printf("%d",s+3);default:printf("%d",s+1);break;scanf("%d",&s);運(yùn)行時(shí),若輸入123450<回車>,則輸出結(jié)果是 A)6566456B)66656C)66666D)6666656 【解析】switch語(yǔ)句執(zhí)行完一個(gè)case后面的語(yǔ)句后,流程控制轉(zhuǎn)移到下一個(gè)case語(yǔ)句繼續(xù)執(zhí)行,遇到break會(huì)跳出本次循環(huán)。本題中輸入1時(shí)會(huì)輸出65,輸入2時(shí)會(huì)輸出6,輸入3時(shí)會(huì)輸出64,輸入4時(shí)會(huì)輸出5,輸入5時(shí)會(huì)輸出6,在輸入0時(shí)不滿足循環(huán)條件

37、,程序執(zhí)行結(jié)束。11.有以下程序段int i,n;for(i=0;i<8;i+) n=rand()%5;switch(n) case 1:case 3:printf("%dn",n);break;case 2:case 4:printf("%dn",n);continue;case 0: exit(0);printf("%dn",n);以下關(guān)于程序段執(zhí)行情況的敘述,正確的是A)for循環(huán)語(yǔ)句固定執(zhí)行8次B)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時(shí)結(jié)束循環(huán)操作C)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時(shí)不做任何操作D)當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時(shí)結(jié)束程序運(yùn)行 【解析】

38、當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1或2時(shí),由于沒有遇到break,因此程序?qū)⒎謩e順序執(zhí)行case 3與case 4;當(dāng)n為3時(shí),程序輸出n的值后跳出switch語(yǔ)句;當(dāng)n為4時(shí),程序輸出n的值后將繼續(xù)執(zhí)行下一次循環(huán);當(dāng)n為0時(shí),程序執(zhí)行exit函數(shù)結(jié)束運(yùn)行。二填空題1.有以下程序#include<stdio.h>main() int m,n; scanf("%d%d",&m,&n); while(m!=n) while(m>n)m=m-n; while(m<n)n=n-m; printf("%dn",m);程序運(yùn)行后,當(dāng)輸入14

39、<空格>7<回車>時(shí),輸出結(jié)果是_。 參考答案:7【解析】執(zhí)行while(m<n)的循環(huán),得到m=14,n=7,然后執(zhí)行while(m>n)的循環(huán),得到m=7,n=7。此時(shí)所有循環(huán)結(jié)束,m=7。2.以下程序運(yùn)行后的輸出結(jié)果是_。#include <stdio.h>main()int a1,b7; do bb/2; ab; while(b>1); printf("%dn",a); 參考答案:5【解析】 第一次循環(huán)執(zhí)行后,b3,a4,滿足條件b>1,循環(huán)繼續(xù);第二次循環(huán)執(zhí)行后,b1,a5,不滿足條件b>1,結(jié)束循

40、環(huán)。所以輸出的a值為5。3.有以下程序:#include<stdio.h>main()int f,fl,f2,i; f10;f21; printf("%d%d",f1,f2); for(i3;i<5;i) ff1f2;printf("%d",f); f1f2;f2f; printf("n");程序運(yùn)行后的輸出結(jié)果是_。 參考答案:0 1 123【解析】 第一個(gè)printf語(yǔ)句輸出結(jié)果為0 1。循環(huán)體總共循環(huán)三次,第一次循環(huán)結(jié)果為,f1,f11,f21;第二次循環(huán)結(jié)果為f2,f11,f22;第三次循環(huán)結(jié)果為f3,f12

41、,f23。4.若有定義:intk;,以下程序段的輸出結(jié)果是_。for(k2;k<6;k,k)printf("#%d",k); 參考答案:#2#4【解析】在for循環(huán)語(yǔ)句中,自變量k的自增表達(dá)式為k,k。這是一個(gè)逗號(hào)表達(dá)式,所以輸出結(jié)果為#2#4。5.以下程序運(yùn)行后的輸出結(jié)果是_。 #include <stdio.h> main() int k1,s0; do if(k%2)!0)continue; sk; k; while(k>10); printf("s%dn",s); 參考答案:s=0【解析】continue語(yǔ)句用于跳出本次循

42、環(huán),直接進(jìn)行下一次循環(huán)。進(jìn)行if判斷時(shí)k的值為1不能夠被2整除,因此執(zhí)行continue退出本次循環(huán),不對(duì)s進(jìn)行任何操作,直接進(jìn)行循環(huán)條件判斷,此時(shí)k的值為1不滿足循環(huán)條件,退出while循環(huán),輸出s的值為0。第06章 數(shù)組一選擇題1.下列選項(xiàng)中,能正確定義數(shù)組的語(yǔ)句是A)int num0.2008; B)int num;C)int N=2008; D)#define N 2008 int numN; int numN; 【解析】選項(xiàng)A不符合C語(yǔ)言的語(yǔ)法要求;選項(xiàng)B中沒有指定數(shù)組的大小;選項(xiàng)C中數(shù)組大小不能用變量來指定。2.下列定義數(shù)組的語(yǔ)句中,正確的是。A)int N10; B)#defin

43、e N 10 C)int x0.10; D)int x; int xN; int xN; 【解析】A)中的N是一個(gè)變量,不可以用變量來定義數(shù)組,所以選項(xiàng)A)錯(cuò)誤。C)中把所有的下標(biāo)均列出不正確,此處只需指明數(shù)組長(zhǎng)度即可。D)中在定義時(shí)沒有指明數(shù)組長(zhǎng)度不正確,如果不指明長(zhǎng)度就應(yīng)在定義時(shí)對(duì)數(shù)組元素進(jìn)行賦值,而此選項(xiàng)沒有,所以錯(cuò)誤。故本題答案為B)。3.若要定義一個(gè)具有5個(gè)元素的整型數(shù)組,以下錯(cuò)誤的定義語(yǔ)句是A)int a50; B)int b0,0,0,0,0;C)int c23; D)int i5,di; 【解析】在進(jìn)行數(shù)組的定義時(shí),不能使用變量對(duì)數(shù)組的長(zhǎng)度進(jìn)行定義。其他選項(xiàng)均符合數(shù)組定義標(biāo)準(zhǔn)。

44、4.以下錯(cuò)誤的定義語(yǔ)句是。A)intx30,1,1,2,3;B)intx431,2,3,1,2,3,1,2,3,1,2,3;C)intx41,2,3,1,2,3,1,2,3,1,2,3;D)intx31,2,3,4; 【解析】本題考查的是二維數(shù)組的定義和初始化方法。C語(yǔ)言中,在定義并初始化二維數(shù)組時(shí),可以省略數(shù)組的第一維的長(zhǎng)度,但是不能省略第二維的長(zhǎng)度。故選項(xiàng)C)錯(cuò)誤。5.若有定義:inta23;,以下選項(xiàng)中對(duì)a數(shù)組元素正確引用的是。A)a2!1 B)a23C)a03 D)a1>2!1 【解析】C語(yǔ)言中數(shù)組下標(biāo)是從0開始的,所以二維數(shù)組a23的第一維下標(biāo)取值為0、1;第二維的下標(biāo)取值為0

45、、1、2,因而選項(xiàng)A)、B)、C)都是錯(cuò)誤的,選項(xiàng)D)表示的是數(shù)組元素a00。所以正確答案為D)。6.有以下程序:#include <stdio.h>#include <string.h>main()char a10"abcd"; printf("%d,%dn",strlen(a),sizeof(a);程序運(yùn)行后的輸出結(jié)果是_。A)7,4 B)4,10 C)8,8 D)10,10 【解析】 strlen()用來返回字符串的長(zhǎng)度,而sizeof()返回的是一個(gè)對(duì)象或者類型所占的內(nèi)存字節(jié)數(shù),即數(shù)組所占的內(nèi)存。二填空題1.以下程序運(yùn)行后

46、的輸出結(jié)果是 。#include <stdio.h>main() int i,n5=0;for(i=1;i<=4;i+) ni=ni-1*2+1;printf("%d",ni);printf("n"); 參考答案:13715【解析】本題中已知n0為0,根據(jù)循環(huán)的執(zhí)行可以得到n1為1,n2為3,n3為7,n4為15,因此輸出結(jié)果是13715。2.有以下程序#include<stdio.h>main()int i,n0,0,0,0,0; for(il;i<4;i) nini1*31;printf("%d &quo

47、t;,ni);程序運(yùn)行后的輸出結(jié)果是。 參考答案:1 4 13 40【解析】第一次循環(huán)結(jié)果為:n1=0*3+1,即n1的值為1,打印輸出1 ;第二次循環(huán)結(jié)果為:n2=1*3+1,即n2的值為4,打印輸出4 ;第三次循環(huán)結(jié)果為:n3=4*3+1,即n3的值為13,打印輸出13 ;第四次循環(huán)結(jié)果為:n4=13*3+1,即n4的值為40,打印輸出40。3.有以下程序#include<stdio.h>main() int a33=1,2,3,4,5,6,7,8,9; int b3=0,i; for(i=0;i<3;i+) bi=ai2+a2i; for(i=0;i<3;i+)

48、printf("%d",bi); printf("n");程序運(yùn)行后的輸出結(jié)果是_。 參考答案:101418【解析】當(dāng)i=0時(shí),b0=a02+a20=3+7=10;當(dāng)i=1時(shí),b1=a12+a21=6+8=14;當(dāng)i=2時(shí),b2=a22+a22=9+9=18,則打印結(jié)果為101418。4.有以下程序#include<stdio.h>main()int n2,i,j; for(i0;i<2;i)ni0; for(i0;i<2;i) for(j0;j<2;j)njni1; printf("%dn",n1);

49、結(jié)果為:_參考答案:3【解析】通過第一次 for(i=0;i<2;i+) ni=0;的循環(huán)語(yǔ)句可知,已經(jīng)將數(shù)組n 中的兩個(gè)元素都賦初值為0。接下來的循環(huán)中,第一次循環(huán),外循環(huán) i=0 的前提下:內(nèi)循環(huán)j=0時(shí),運(yùn)行完n0=n0+1后n0為1;j=1時(shí),運(yùn)行完n1=n0+1后,n1為2。第二次循環(huán),外循環(huán)i=1的前提下,內(nèi)循環(huán)j=0時(shí),運(yùn)行完n0=n1+1后n0為3;j=1時(shí),運(yùn)行完n1=n1+1后,n1為3。5.以下fun函數(shù)的功能是在N行M列的整型二維數(shù)組中,選出一個(gè)最大值作為函數(shù)值返回,請(qǐng)?zhí)羁铡?設(shè)M,N已定義)int fun(int aNM)int i,j,row0,col0; f

50、or(i0; i<N;i) for(j0;j<M; j)if(aij>arowco1)rowi;colj; return(_ );參考答案:arowcol【解析】通過程序可以看出,外循環(huán)是行,內(nèi)循環(huán)是列。先在行不變的情況下找一行內(nèi)最大的數(shù)據(jù)進(jìn)行記錄。通過語(yǔ)句 if(aij>arowcol) row=i; col=j;可知,如果變量aij大于arowcol,將i賦給了row,將j賦給了col,所以arowcol是記錄當(dāng)前最大值的變量。6.有以下程序#include<stdio.h>main() int i,j,a3=1,2,3,4,5,6,7,8,9; for

51、(i=0;i<3;i+) for(j=i;j<3;j+)printf("%d",aij); printf("n");程序運(yùn)行后的輸出結(jié)果是_。參考答案:123569【解析】當(dāng)i=0時(shí),j=0、1、2時(shí)滿足條件,則打印a00、a01、a02;當(dāng)i=1時(shí),j=1、2時(shí)滿足條件,則打印a11、a12;當(dāng)i=2時(shí),j=2時(shí)滿足條件,則打印a22,所以打印結(jié)果為123569。7.有以下程序:#include <stdio.h>main()char a20"How are you?",b20; scanf("%s

52、",b);printf("%s %sn",a,b);程序運(yùn)行時(shí)從鍵盤輸入:How are you?<回車>則輸出結(jié)果為_。參考答案:How are you? How【解析】用%s格式輸入字符串時(shí),空格和回車都作為輸入數(shù)據(jù)的分隔符,不能被讀入,因此數(shù)組b的輸出結(jié)果為How。第07章 指針一選擇題1.有以下程序:#include <stdio.h>main()int m1,n2,*p&m,*q&n,*r; rp;pq;qr; printf("%d,%d,%d,%dn",m,n,*p,*q);程序運(yùn)行后的輸出結(jié)

53、果是_。A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2 【解析】 m和n的值不變,輸出結(jié)果為1,2。指針*p和*q交換了指向的位置,即*p&n,*q&m,輸出結(jié)果分別為2,1。2.以下程序段完全正確的是A)int*p; scanf("%d",&p); B)int*p; scanf("%d",p);C)int k,*p&k; scanf("%d",p); D)int k,*p; *p&k; scanf("%d",p); 【解析】A)選項(xiàng)輸入的是指

54、針型變量p的地址,變量一定義就已分配好了地址不能再指定了,所以A錯(cuò)誤。B)選項(xiàng)沒有指定指針p應(yīng)該指向的變量,沒給變量賦初值。D)選項(xiàng)中,p是地址,*p是地址內(nèi)存放的數(shù)據(jù),它把整型變量k的地址賦給了*p,所以錯(cuò)誤。3.以下定義語(yǔ)句中正確的是。 A)intab0; B)charA651,bb; C)float a1,*b&a,*c&b; D)doublea0.0;b1.1; 【解析】本題考查變量的定義方法。如果要一次進(jìn)行多個(gè)變量的定義,則在它們之間要用逗號(hào)隔開。因此選項(xiàng)A)和D)錯(cuò)誤;在選項(xiàng)C)中,變量c是一個(gè)浮點(diǎn)型指針,它只能指向一個(gè)浮點(diǎn)型數(shù)據(jù),不能指向指針變量b;所以正確答案為B)。4.若有定義語(yǔ)句:double x,y,*px,*py;執(zhí)行了px&x;py&y;之后,正確的輸入語(yǔ)句是_。A)scanf("%f%f",x,y);B)scanf("%f%f"&x,&y);C)scanf("%lf%le",px,py);D)scanf("%lf%lf",x,y); 【解析】 本題考查scanf函數(shù),其格式為:sc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論