版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
國家二級(c語言)筆試模擬試卷n(題后含答案及解析)
題型有:1.選擇題2.填空題
選擇題(1-10、21-40每題2分,11-20每題1分,共70分)下列各題A、B、
C、D四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位
置上。
1.結(jié)構(gòu)化程序設(shè)計主要強(qiáng)調(diào)的是()。
A.程序的規(guī)模
B.程序的易讀性
C.程序的執(zhí)行效率
D.程序的可移植性
正確答案:B
解析:結(jié)構(gòu)化程序設(shè)計主要強(qiáng)調(diào)的是程序清晰易讀,可理解性好。
2.視圖設(shè)計一般有三種設(shè)計次序,下列不屬于視圖設(shè)計的是()o
A.自頂向下
B.由外向內(nèi)
C.由內(nèi)向外
D.自底向上
正確答案:B
解析:視圖設(shè)計般有三種設(shè)計次序,它們分別是白頂向下、白底向上和由
內(nèi)向外,可以單獨使用也可混合使用。
3.下列關(guān)于棧的敘述中正確的是()。
A.在棧中只能插入數(shù)據(jù)
B.在棧中只能刪除數(shù)據(jù)
C.棧是先進(jìn)先出的線性表
D.棧是先進(jìn)后出的線性表
正確答案:D
解析:棧是限定在一端進(jìn)行插入與刪除的線性表,是按照“先進(jìn)后出”或“后
進(jìn)先出”的原則組織數(shù)據(jù)的,因此,棧也被稱為“先進(jìn)后出”表或“后進(jìn)先出”
表。
4.在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些
功能的階段是()。
A.概要設(shè)計
B.詳細(xì)設(shè)計
C.可行性分析
D.需求分析
正確答案:D
解析:軟件生命周期的主要活動階段為:①可行性研究和計劃制定,確
定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出其功能、性能、可靠性以及接口
等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。②需求分析。對待開發(fā)
軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能,編寫
軟件規(guī)格說明書及初步的用戶手冊,提交評審。③軟件設(shè)計。系統(tǒng)設(shè)計人員
和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃
分、功能的分配以及處理流程。④軟件實現(xiàn)。完成源程序的編碼,編寫用戶
手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。⑤軟件測試。在設(shè)
計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。⑥運(yùn)
行和維護(hù)。將已交付的軟件投入運(yùn)行,并在運(yùn)行使用中不斷地維護(hù),根據(jù)新提出
的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。
5.下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()。
A.數(shù)據(jù)結(jié)構(gòu)
B.數(shù)據(jù)操作
C.數(shù)據(jù)查詢
D.數(shù)據(jù)約束
正確答案:c
解析:或據(jù)模型所描述的內(nèi)容有數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。其中,數(shù)
據(jù)結(jié)構(gòu)主要描述數(shù)據(jù)的類型、內(nèi)容、性質(zhì)以及數(shù)據(jù)庫的聯(lián)系等;數(shù)據(jù)操作主要描
述在相應(yīng)數(shù)據(jù)結(jié)構(gòu)上的操作類型與操作方式。
6.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是()0
A.隊列
B.線性表
C.二叉樹
D.棧
正確答案:c
解析:線性表、棧和隊列等數(shù)據(jù)結(jié)構(gòu)所表達(dá)和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織
形式。棧是一種特殊的線性表,它只能在固定的一端進(jìn)行插入和刪除操作,乂稱
后進(jìn)先出表;隊列是插入在一端進(jìn)行,刪除在另一端進(jìn)行的線性表,又稱先進(jìn)先
出表。
7.對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為
()。
A.n+1
B.n
C.(n+1)/2
D.n/2
正確答案:B
解析:在順序查找中,如果線性表中被查元素不在線性表中,或是線性表中
的最后一個,則為了查找這個元素需要與線性表中所有元素進(jìn)行比較,這是順序
查找最壞的情況。
8.下列有關(guān)數(shù)據(jù)庫的描述,正確的是()o
A.數(shù)據(jù)庫是一個DBF文件
B.數(shù)據(jù)庫是一個關(guān)系
C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合
D.數(shù)據(jù)庫是一組文件
正確答案:c
解析;數(shù)據(jù)庫是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介
質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具
有“集成”、“共享”的特點。
9.下面不屬于軟件設(shè)計原則的是()o
A.抽象
B.模塊化
C.自底向上
D.信息隱蔽
正確答案:c
解析:軟?件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計
中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念,它們是抽象、模塊化、信息隱
蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。
10.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流圖(DFD)作為描述工具的軟件開發(fā)階段是
()。
A.可行性分析
B.需求分析
C.詳細(xì)設(shè)計
D.程序編碼
正確答案:B
解析:軟件開發(fā)階段包括需求分析、總體設(shè)計、詳細(xì)設(shè)計、編碼和測試五個
階段,其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典
11.程序中若有如下說明和定義語句:charfun(char*);main()
{char*s=uone,\af5]={0},(*fl)()=fun,ch;;)以下選項中對
函數(shù)fun的正確調(diào)用語句是()o
A.(*fl)(a);
B.*fl(*s);
C.fun(&a);
D.ch=*fl(s)
正確答案:A
解析:程序中定義的n是一個指向函數(shù)fun的指針變量,即將函數(shù)fun的人
口地址賦給指針變量fl,這時fl和fun都指向函數(shù)的開頭,調(diào)用*fl就是調(diào)用函
數(shù)fun。注意,此時用函數(shù)指針變量調(diào)用函數(shù)時,只需用(*fl)代替函數(shù)名fun即
可,再在(*fl)后的括號中根據(jù)需要寫上實參,所以(%fl)(a);相當(dāng)于fun(a);故
選項A)是正確的。
12.設(shè)有如下說明:typedefstruetST{longa;intb;charc[2];}
NEW;則下面敘述中正確的是()<>
A.以上的說明形式非法
B.ST是一個結(jié)構(gòu)體類型
C.NEW是一個結(jié)構(gòu)體類型
D.NEW是一個結(jié)構(gòu)體變量
正確答案:c
解析:typedef關(guān)鍵字用于聲明一個新的類型名代替已有的類型名。本題中
如果沒有用typedef進(jìn)行定義的話,則structST為結(jié)構(gòu)體類型,現(xiàn)在用typedef
定義后,相當(dāng)于用NEW代表了structST這一結(jié)溝體類型,故NEW為結(jié)構(gòu)體類
型。
13.以下不能定義為用戶標(biāo)識符的是()。
A.Main
B._0
C._int
D.sizeof
正確答案:D
解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種符號組成,而且第
一個字符必須是字母或下劃線,標(biāo)識符名不能與關(guān)鍵字重名。選項A)中Main與
主函數(shù)名main不同,所以選項D)是非法的標(biāo)識符。
14.以下選項中不能作為合法常量的是()0
A.1.234e()4
B.1.234e0.4
C.1.234e+4
D.1.234e0
正確答案:B
解析:選項中的幾個常量都是指數(shù)形式的實型常量。該類型的常量要求字母
e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),所以選項B)錯誤。
15.有以下程序:#inckide<stdio.h>main(){intm=12,n=34;
printf(u%d%d”,m++,++n);printf(44%d%d\n”,n++,++m);}程序運(yùn)行后的
輸出結(jié)果是()o
A.12353514
B.12353513
C.12343514
D.12343513
正確答案:A
解析:程序執(zhí)行printf("%d%d”,m++,++n);后,輸出的是m和n+1的值
1235,然后m+l=13,再執(zhí)行printf("%d%d\n”,n++,++m);輸出n和m+1的
值3514,之后n+l=36。這里要注意的是m++和++m的區(qū)別:m++是先輸出m
的值,再執(zhí)行m++;++m是先執(zhí)行++m,再輸出m的值。
16.有以下程序:#include<stdio.h>niain(){inta[]=
(123,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++)printf("%dJ,*p);}程序運(yùn)行
后的輸出結(jié)果是()o
A.123,4,5,6,7,8,9,0,
B.2,3,4,5,6,7,8,9,10,1,
C(),1,2,345,678,9,
D.1,1,1』,1,1,1,1,1,1,
正確答案:A
解析:C語言規(guī)定數(shù)組名代表數(shù)組的首地址,所以for循環(huán)中循環(huán)變量p的
初值即&a[o),故輸出的"p的值為a[0]的值。執(zhí)行p++后,指針變量P指向afl],
這時輸出*P即輸出的值,經(jīng)過10次循環(huán),將輸出a數(shù)組的全部數(shù)據(jù):1,
2,3,4,5,6,7,8,9,0,
17.有定義語句:intb;charc[10];則正確的輸入語句是()。
A.seanf("%d%s”,&b,&c);
B.scanf("%d%s”,&b,c);
C.seanf(u%d%sn,b,c);
D.scanf("%d%s"b&c);
正確答案:B
解析:scanf函數(shù)中格式控制后面是地址表列,不能用變量名。數(shù)組名c代
表數(shù)組在內(nèi)存的首地址,&b代表變量b的首地址,選項B)正確。
18.若有以下說明和定義:uniondt{inta;charb;doublec;}data;
以下敘述中錯誤的是()o
A.data的每個成員起始地址都相同
B.變量data所占的內(nèi)存字節(jié)數(shù)與成員c所五字節(jié)數(shù)相等
C.程序段:data.a=5;printf("%f\rT,data.c);輸出結(jié)果為5.000000
D.data可以作為函數(shù)的實參
正確答案:c
解析:共用體成員a,b,c共占用同一個內(nèi)存空間,所以data的每個成員起
始地址都相同;共用體變量所占的內(nèi)存長度等于最長的成員的長度,故變量data
所占的內(nèi)存字節(jié)數(shù)與成員所占字節(jié)數(shù)相等;由于各成員變量的類型不一致,所以
它們的存儲方式也不相同,整型占用2個字節(jié)的存儲空間,double型占用8個字
節(jié)的存儲空間;dala可以作為函數(shù)的實參,此時data作為一個地址進(jìn)行地址傳送;
執(zhí)行data.a=5;printf("%An”,data.c);系統(tǒng)不能自動將整型變量轉(zhuǎn)換為浮點型值,
printf函數(shù)只是將內(nèi)存中的數(shù)據(jù)以不同類型輸出,而不能將內(nèi)存中的整型數(shù)據(jù)自
動轉(zhuǎn)換為等值的浮點數(shù),故選項C)錯誤。
19.有以下程序:#include<stdio.h>main(){int
a,b,d=25;a=d/10%9;b=a&&(-l);printf(u%d,%d\n”,a,b);}程序運(yùn)行
后的輸出結(jié)果是()o
A.6,1
B.2,1
C.6,0
D.2,0
正確答案:B
解析:“/”表示整除,“%”表示求余。程序里表達(dá)式a=d/10%9的值為
25/10%9=2,則b=a&&(-l)=2&&(-l)=l(注意:-1表示真,0表示假),所以a,b
的值分別為2,1。
20.有以下程序:#include<stdio.h>main(){int
num[4][4]={{1,2,3,4},[5,6,7,8},{9,10,11,12},{13;I4,15,16)for(i=0;i<4;i
++){for(j=0;j<=i;j++)printf("%4c'',");for(j=;j<4;j
++)prinlf("%4d”,hum[i]|j]);prinlf("\n");}}若要按以下形式輸
出數(shù)組右上半三角;1234678111216則
在程序下劃線處應(yīng)填入的是()。
A.i-1
B.i
C.i+1
D.4-i
正確答案:B
解析:本程序為二重循環(huán),外循環(huán)控制輸出數(shù)據(jù)的行數(shù),內(nèi)循環(huán)控制輸出數(shù)
據(jù)的列數(shù)。本題需要輸出4行4列,外層循環(huán)語句for(i=0:iV4;i++)控制輸出
4行,內(nèi)層的第一條foi?循環(huán)控制每行輸出的空格數(shù),第二條for循環(huán)用于控制每
行的數(shù)字輸出,由于每一行的數(shù)字個數(shù)比前一行少1個,所以內(nèi)層的第二條for
循環(huán)每次循環(huán)的次數(shù)需要遞減1,那么j的初始值應(yīng)該遞增,因為第一行輸出的
是4個數(shù),所以空格中應(yīng)填i。
21.若已定義c為字符型變量,則下列語句中正確的是()。
A.c='97,
B.c="97”;
C.c=97;
D.c="a”;
正確答案:C
解析:C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個字符數(shù)據(jù)既可
以字符形式輸出,也可以整數(shù)形式輸出,所以把整型數(shù)據(jù)賦給字符型變量,直接
用c=97即可,所以選項C)正確。由于題目要求選出正確的語句,選項A)少分號,
不能構(gòu)成語句,因此錯誤。B)、D)是將一個字符串賦給一個字符變量,所以錯誤。
22.設(shè)變量x為float型且己賦值,則以下語句中能將x中的數(shù)值保留到小
數(shù)點后兩位,并將第三位四舍五入的是()。
A.x=x*100+0.5/100.0;
B.x=(x*100+0.5)/100.0
C.x=(int)(x*100+0.5)/100.0;
D.x=(x/100+0.5)/100.0;
正確答案:c
解析:本題考查實型數(shù)據(jù)。題目要求保留到小數(shù)點后兩位,選項A)、B)、
D)都不合要求。在選項。中,x*10()+().5的作用是將第三位四舍五入,取整后再
除以100.0,即可得符合要求的數(shù)據(jù)。
23.有以下程序:#include<stdio.h>main(){int
k=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;k—;}
printfft%d,%d\n,\k,n);}程序運(yùn)行后的輸出結(jié)果是()。
A.1,1
B.2,2
C.3,3
D.4,4
正確答案:C
解析:本題考查循環(huán)和continue語句,continue語句的功能是結(jié)束本次循環(huán)。
n從。開始循環(huán),判斷n%3!=0是否成立,如果成立,結(jié)束本次循環(huán),繼續(xù)下一
次for循環(huán);否則執(zhí)行k「并繼續(xù)下一次for循環(huán),直至循環(huán)結(jié)束。在程序中,
當(dāng)n取1,2時,不執(zhí)行k--,當(dāng)n取3時,執(zhí)行k--,k變?yōu)?,循環(huán)結(jié)束,輸出
k,n的值分別為3,3o
24.以下程序的功能是計算:。#include<stdio.h>main()
{intn;floats;s=1.0;for(n=10;n>l;n—)s=s+l/n;
prinlf("%6.4f\n",s);}程序運(yùn)行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行
是()。
A.s=1.0;
B.for(n=10;n>l;n-)
C.s=s+l/n;
D.printf("%6.4f\n",s);
正確答案:C
解析:該程序的運(yùn)行結(jié)果是l.OOOO,算法錯誤。在5=$+1"中,因為n為整
型,所以循環(huán)中1/n始終為00這就是木題算法錯誤的原因。應(yīng)把s=s+l/n改為
s=s+I.O/no
25.若有如下程序段,其中s,a,b,c均已定義為整型變量,且a,c均
己賦值(c大于0):s=a;for(b=l;bV=c;b++)s=s+l;則與上述程序段功能等
價的賦值語句是()o
A.s=a+b;
B.s=a+c;
C.s=s+c;
D.s=b+c;
正確答案:B
解析:本題考查賦值語句。s的初值是a,b從1循環(huán)到c,每循環(huán)一次,s
加1,共加了l*c次,因此程序?qū)崿F(xiàn)的功能是s=a+c。
26.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是
()。
A.函數(shù)調(diào)用可以作為獨立的語句存在
B.函數(shù)調(diào)用可以作為一個函數(shù)的實參
C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中
D.函數(shù)調(diào)用可以作為一個函數(shù)的形參
正確答案:D
解析:本題考查函數(shù)的調(diào)用。在有參函數(shù)調(diào)月中,是將主調(diào)函數(shù)的實參值傳
給被調(diào)函數(shù)的形參。按函數(shù)在程序中出現(xiàn)的位置來分,有以下三種函數(shù)調(diào)用形式:
①函數(shù)調(diào)用作為一條語句。例如:fun();這時不要求函數(shù)帶回值,只要求函
數(shù)完成一定的操作。故選項A)正確。②函數(shù)由現(xiàn)在表達(dá)式中,這種表達(dá)式稱
為函數(shù)表達(dá)式。這時要求函數(shù)帶回一個確定的值以參加表達(dá)式的運(yùn)算。例如:
c=5*max(a,b);函數(shù)max是表達(dá)式的一部分,將其值乘以5后賦給c。故選項
C)正確。③函數(shù)調(diào)用作為一個函數(shù)的實參,例如:m=max(a,max(b,c));其中
max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實參。故選項B)正確。
函數(shù)調(diào)用不可作為一個函數(shù)的形參,因為函數(shù)調(diào)用參數(shù)的數(shù)據(jù)傳遞是單向傳遞,
即實參傳給形參,不能由形參傳給實參。故選項D)錯誤。
27.有以下函數(shù)定義:voidfun(intn,doublex){.....}若以下選項中
的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是()。
A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
正確答案:c
解析:本題考查函數(shù)調(diào)用。函數(shù)調(diào)用時,實參前不需加類型說明,選項A)
錯誤;題目中的函數(shù)沒有返回值,所以選項B)錯誤;函數(shù)調(diào)用前不需要加類型
說明,選項D)錯誤。
28.有以下程序:#include<stdio.h>voidfun(char*a,char*b)
{a=b;(*a)++;}main(){charcl='A',c2='a',*pl.*p2;
pl=&cl;P2=&c2;fun(pl,p2);printf("%c%c\n”,cl,c2);}程序運(yùn)
行后的輸出結(jié)果是()o
A.Ab
B.aa
C.Aa
D.Bb
正確答案:A
解析:本題中fun函數(shù)的形參是兩個指向字符型數(shù)據(jù)的指針,其功能是把b
賦給a,然后將a所指存儲單元里的變量值加1。在main函數(shù)中,pl里存放的
是cl的地址,p2里存放的是c2的地址,經(jīng)函數(shù)調(diào)用fun(pl,P2)后,p2的值賦給
了pl,使pl和p2都指向了c2,而(*a)++又使的值加1變成了,b\所以此時
c2的值為而cl的值沒變,仍為,AL程序改變的是pl的地址和c2的值。
29.有以下程序:#include<stdio.h>main(){int
a=l,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);
printf("%d,%d\n”,k,m);}程序運(yùn)行后的輸出結(jié)果是()。
A.0,0
B.0,1
C.1,0
D.1,1
正確答案:C
解析:本題考查邏輯或運(yùn)算。因為b>a為真,即n=l,則m小需冉計算,
保持原值,因此k值為1,m值仍為0。
30.以下敘述中正確的是()o
A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方
B.花括號“{”和“}”只能作為函數(shù)體的定界符
C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名
D.分號是C語句之間的分隔符,不是語句的一部分
正確答案:A
解析:在C程序中/*……*/表示注釋部分,注釋只是讓閱讀程序的人更容易
理解程序,對編譯和運(yùn)行不起作用,可以加在程序中任何位置,選項A)正確;
花括號和“}”不僅可以作為函數(shù)體的定界符,還可以構(gòu)成復(fù)合語句,選項
B)錯誤;系統(tǒng)提供的函數(shù)和main函數(shù)不能由用戶命名,選項C)錯誤;所有的C
語句都以分號結(jié)尾,選項D)錯誤。
31.下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是()。
A.max(intx,int*z){*z=x>y?x:y;}
B.intmax(intx,y)(intz;z=x>y?x:y;returnz;}
C.max(intx,inty){intz;z=x>y?x:y;retum(z);}
D.intmax(intx,inty){return(x>y?x:y);}
正確答案:B
解析:在選項B)中,定義max函數(shù)時,形參只定義了x的數(shù)據(jù)類型,而未
定義y的數(shù)據(jù)類型,所以會出現(xiàn)編譯錯誤。
32.以下不能正確定義二維數(shù)組的選項是()0
A.intal2][2]={{l),{2});
B.inta[]⑵={1,2,3,4};
C.inta[2][2]={{l),2,3);
D.inta[21f]={{l,2),{3,4)};
正確答案:D
解析:選項A)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,0;選項B)定
義的數(shù)組按行各數(shù)組元素分別是:1,2,3,4;選項C)定義的數(shù)組按行各數(shù)組
元素分別是:1,0,2,3;因為定義數(shù)組時,第一維的長度可以不指定,第二維
的長度必須指定,所以選項D)錯。
33.有以下程序:#include<stdio.h>main(){int
s=(),a=l,n;scanf("%d",&n);do(s+=l;a=a-2;}while(a:=n);
prinlf("%d\n”,s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值
是()。
A.-1
B.-3
C.-5
D.0
正確答案:B
解析:本題考查do-while語句。當(dāng)n=-l時,s+=l,s=l;a=a-2=-1;a!=n不
成立,結(jié)束循環(huán),此時s值為1,不符合題意;當(dāng)n=?3時,s+=l,s=l;a=a-2=-1;
a!二n成立,繼續(xù)循環(huán),s=s+l=2,a=a-2=-3:a!=n不成立,此時s值為2,符合
題意。
34.以下能正確定義一維數(shù)組的選項是()。
A.ininum口;
B.#defineN10()intnum[N];
C.intnum[0,e,100];
D.intN=100;intnum[N];
正確答案:B
解析:C不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運(yùn)行
過程中變量的值,選項A)錯誤;字符常量可以作為定義數(shù)組大小的常量表達(dá)式,
選項B)正確:不能用區(qū)間表示數(shù)組大小,選項。錯誤;D)中的N為變量,所以
錯誤。
35.有以下程序:#include<stdio.h>main(){inta;
charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);
printf(tt%d%d%3.1f%3.1An”,a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是()。
A.16516.5
B.1651.56.5
C.1651.06.5
D.2651.56.5
正確答案:B
解析:本題考查復(fù)合賦值運(yùn)算符。本題中先計算c的值,c=c*(x=6.5)=10*6.5=
65;然后計算f的值,f=f7c=100.0/65=1.538462;最后計算a的值,a=f,a取f
的整數(shù)部分,即為1。
36.已定義以下函數(shù):fun(char*p2,char*pl){whilc((*p2=*pl)!
=t\0,){pl++;p2++;})此函數(shù)的功能是()o
A.將pl所指字符串復(fù)制到p2所指內(nèi)存空間
B.將pl所指字符串的地址賦給指針p2
C.對pl和p2兩個指針?biāo)缸址M(jìn)行比較
D.檢查pl和p2兩個指針?biāo)缸址惺欠裼?(),
正確答案:A
解析:while((*p2=*pl)!二、(T表示將pl所指向的值賦給*p2,即將pl所指
字符串復(fù)制到p2所指內(nèi)存空間。要注意這里*p2=*pl是賦值操作,而不是比較
是否相等,所以選項B)、C)、D)都小對。
37.以下選項中不能正確把cl定義成結(jié)構(gòu)體變量的是()°
A.typedefstruct{intred;intgreen;intblue;
COLOR;COLORcl;
B.structcolorcl{intred;intgreen;intblue;)
C.structcolor{intred;intgreen;intblue;)cl;
D.struct{intred;intgreen;intblue;)cl;
正確答案:B
解析:本題選項A)、C)、D)是定義結(jié)構(gòu)體及其變量的三種正確的形式,能
正確將cl定義為結(jié)構(gòu)體變量。選項B)錯誤。
38.有以下程序:#includc<stdio.h>#dcfineF(x,y)(x)*(y)
main(){inta=3,b=4;printf(u%d\n,,,F(a++,b++));}程語
運(yùn)行后的輸出結(jié)果是()o
A.12
B.15
C.16
D.20
正確答案:A
解析:本題考查帶參數(shù)的宏定義。對F(a++,b++)展開后,宏的返回值為3
X4=12,這里a++,b++都是先使用變量值,再自增。
39.有以下程序:#inckide<stdio.h>fun(inta,intb){if(a
>b)return(a);elsereturn(b);}main(){int
x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);)程序
運(yùn)行后的輸出結(jié)果是()o
A.3
B.6
C.8
D.12
正確答案:D
解析:本題考查函數(shù)的返回值。fun函數(shù)的功能是比較a,b的值,返回其中
較大者。對于main函數(shù)中的語句r=fun(fun(x,y),2*z);是先調(diào)用fun(x,y)返回8,
再將8和12作為實參調(diào)用函數(shù)fun,得到的返回值為12。
40.有以下程序:#include<stdio.h>main()
{prinlf("%d\rT,NULL)”}程序運(yùn)行后的輸出結(jié)果是()。
A.0
B.1
C.-1
D.NULL沒定義,出錯
正確答案:A
解析:本題按“%d”格式輸出,相當(dāng)于輸出控制字符NULL的ASCII碼值,
即為。
41.有定義:intx,y;若要通過scanf("%d,%d”,&x,&y);使變量x得到數(shù)值
11,變量y得到數(shù)值12,下面四組輸入形式中,錯誤的是()o
A.1112V回車〉
B.B,12V回車〉
C.11,12V回車〉
D.U,V回車>12V回車》
正確答案:A
解析:格工輸入函數(shù)的一般形式為:scanf(格式控制,地址表列)在“格
式控制”字符串中,除格式說明以外的其他字符為按原樣輸入的字符,在輸入數(shù)
據(jù)時應(yīng)按原樣輸入這些字符。所以輸入時,兩個數(shù)字之間的逗號是不可少的。
42.若程序中已包含頭文件stdio.h,以下選項能正確運(yùn)用指針變量的程序
段是()0
A.int*i=NULL;scanf(4t%d,,,i);
B.float*f=NULL;*f=10.5;
C.chart=4m\*c;*c=&t;
D.long*L;L=t\0,;
正確答案:D
解析:本題考查指針變量的運(yùn)用。選項A)、B)為指針定義錯誤,空指針NULL
是對指針變量賦。值而得到的。例如:#dcfineNULL0int*p二NULL;對
指針變量賦。值和不賦值的時候意義是不同的:指針變量未賦值時,它是指向任
意不確定的存儲單元,不能使用,否則將造成意外錯誤;而指針變量賦0值后,
則可以使用,只是它不指向具體的變量而己。選項C)中的*c=&t;錯誤,因為
&t是地址,而加是值。選項D)是讓指針L指向字符串的末尾,即字符串的結(jié)
束符。
43.以下不能定義為用戶標(biāo)識符的是()。
A.scanf
B.Void
C._3com_
D.int
正確答案:D
解析:標(biāo)識符是C語言中用來表示變量名、數(shù)組名、函數(shù)名、指針名、結(jié)
構(gòu)名、聯(lián)合名、枚舉常數(shù)名、用戶定義的數(shù)據(jù)類型名、語句標(biāo)號等用途的字符序
列。標(biāo)識符由1?32個字符組成,第一個字符必須是字母或下劃線,后面的字符
可以是字母、數(shù)字或下劃線。標(biāo)識符小能與C關(guān)鍵字相同,并區(qū)分大小寫,選
項D)錯誤,因為血是C語言中的關(guān)鍵字。
44.以下程序中函數(shù)scmp的功能是返回形參指針si和s2所指字符串中較
小字符串的首地址。#include<stdio.h>#include<string.h>
char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(sl);else
return(s2);}main(){inti;charstring[20],str[3][20];
for(i=0;i<3;i++)gets(strfil);strcpy(string,scmp(str[01,str[1]));/*庫函數(shù)
strcpy對字符串進(jìn)行復(fù)制*/strcpy(string,scmp(string,str|2]));
printf("%s\n",string);}若運(yùn)行時依次輸入:abed、abba和abc三個字符串,
則輸出結(jié)果為()o
A.abed
B.abba
C.abc
D.baca
正確答案:B
解析:木題考查返回指針值的函數(shù)。一個函數(shù)可以帶回一個整型值,字符值,
實型值等,也可以帶回指針型的數(shù)據(jù),即地址。函數(shù)stremp(字符串1,字符串
2)的作用是比較字符串1和字符中2。如果字符串1二字符串2,函數(shù)值為0;如
果字符串1,字符串2,函數(shù)值為一正整數(shù);如果字符串IV字符串2,函數(shù)值為
一負(fù)整數(shù)。本題程序中semp函數(shù)的作用是比較si和s2的大小,對stremp函數(shù)
的返回值進(jìn)行判斷,如果字符串IV字符串2,則返回字符串1的值,反之返回
字符串2的值。所以main函數(shù)中scmp(str[0],str[l])的返回值是abba,通過strepy
函數(shù)把返回值abba復(fù)制到string中。當(dāng)執(zhí)行scmp(slring,slr[2])時,scrap函數(shù)的
返回值為abba,再次復(fù)制到string中,最后string的值為abba。
45.有定義:inta=l,b=2,c=3,x;則以下選項中各程序段執(zhí)行后,x的值不為
3的是()o
A.if(c<a)x=l;elseif(b<a)x=2;elsex=3;
B.if(a<3)x=3;elseif(a<2)x=2;elsex=l;
C.if(a<3)x=3;if(a<2)x=2;if(a<l)x=l;
D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;
正確答案:C
解析:選項A),因為前面兩個條件都不滿足,所以執(zhí)行x=3。選項B),a<
3成立,執(zhí)行x=3o選項C),aV3成立,執(zhí)行x=3;aV2成立,執(zhí)行x=2;a<1
不成立,不執(zhí)行x=l,所以執(zhí)行此段程序后x=2。選項D),aVb成立,執(zhí)行x=b,
此時x=2;bVc成立,執(zhí)行x=c,此時x=3;c〈a不成立,不執(zhí)行x=a,所以執(zhí)
行此段程序后x=3o
46.有以下程序:#includc<stdio.h>main(){int
x=3,y=2,z=1;printf(tt%d\n,\x/y&~z);程序運(yùn)行后的輸出結(jié)果是
()o
A.3
B.2
C.1
D.0
正確答案:D
解析:&是按位“與”運(yùn)算符,若參加運(yùn)算的兩個運(yùn)算量的相應(yīng)位都為1,
則該位的結(jié)果值為1,否則為0。?是“取反”運(yùn)算符,用來對一個二進(jìn)制數(shù)按
位取反,即將0變1,1變0。對于x/y&?z,先計算x/y的值,結(jié)果為1,用十
六進(jìn)制表示為()001;Z用十六進(jìn)制表示為()()01,則?z為FFFE;最后進(jìn)行&運(yùn)
算,整個表達(dá)式的值為0。
47.若fp已正璃定義并指向某個文件,當(dāng)未遇到該文件結(jié)束標(biāo)志時函數(shù)
fcof(fp)的值為()o
A.0
B.1
C.-1
D.一個非0值
正確答案:A
解析:fmf(fp)用來測試fp所指向的文件當(dāng)前狀態(tài)是否“文件結(jié)束”。如果是
文件結(jié)束,函數(shù)feof(fp)的值為1(真),否則為0(假)。
48.己定義ch為字符型變量,以下賦值語句中錯誤的是()o
A.ch=6V;
B.ch=62+3;
C.ch=NULL;
D.ch=t\xaa,;
正確答案:A
解析;于符型變量用來存放字符常量,且只能存放一個字符。賦值反斜杠線
“\”,必須用轉(zhuǎn)義字符實現(xiàn),即ch=、Y,所以選項A)錯誤;字符型變量可以賦。?
255之間的ASCII碼值,整型數(shù)據(jù)和字符型數(shù)據(jù)有時可以通用,所以選項B)正
確;可以將NULL賦給一個字符型變量,NULL代表一個空字符,相當(dāng)于0,
選項C)正確;,\xaa,表示的是1?2位16進(jìn)制數(shù)所代表的字符,所以選項D)正確。
49.有以下程序:#include<stdio.h>main(){int
p=&a[0][0];for(i=0;iV9;i++)p[i]=i+l;
printfr%d\n,,,a[l][2]);)程序運(yùn)行后的輸出結(jié)果是()<>
A.3
B.6
C.9
D.2
正確答案:B
解析:本題考查指向數(shù)組元素的指針變量。p=&a[0][0]是把該數(shù)組的第一個
元素a[()][()]的地址賦給指針變量p,a[l]⑵是數(shù)組中的第6個元素,根據(jù)for循
環(huán)中的賦值可知,輸出結(jié)果是6。
50.有以下結(jié)構(gòu)體說明和變量定義,如下圖所示,指針p、q、r分別指向
一個鏈表中的三個連續(xù)結(jié)點。structnode{intdata;struct
node*next;}*p?q,*r;現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要
保持鏈表的連續(xù),以下錯誤的程序段是()o
A.r->next=q;q->next=r->next;p->next=r;
B.q->next=r->next;p->next=r;r->next=q;
C.p->next=r;q->next=r->next;r->next=p;
D.q->next=r->next;r->next=q;p->next=r;
正確答案:A
解析:對于選項A),執(zhí)行r->next=q后,r->next指向了q。此時q->next=r-
>next就相當(dāng)于q->next=q;所以q而下一個結(jié)點指向了自己,而木是指向原
來r的下一個結(jié)點,所以選項A)錯誤。
填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡上,注
意:以命令關(guān)鍵字填空的必須拼寫完整。
51.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有[]o
正確答案:前件
解析:在樹形結(jié)構(gòu)中,每一個結(jié)點只有一個前件,稱為父結(jié)點;沒有前件的
結(jié)點只有一個,稱為樹的根結(jié)點;每一個結(jié)點可以有多個后件,它們都稱為該結(jié)
點的子結(jié)點;沒有后件的結(jié)點稱為葉子結(jié)點。
52.Jackson結(jié)構(gòu)化程序設(shè)計方法是英國的M.Jackson提出的,它是一種
面向【】的設(shè)計方法。
正確答案:數(shù)據(jù)結(jié)構(gòu)
解析:結(jié)構(gòu)化分析方法主要包括:面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法,面向數(shù)據(jù)
結(jié)構(gòu)的Jackson方法和面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法。
53.面向?qū)ο蟮哪P椭校罨镜母拍钍亲呦蠛汀?/p>
正確答案:類
解析:面向?qū)ο竽P椭?,最基本的概念是對象和類。對象是現(xiàn)實世界中實體
的模型化;將屬性集和方法集相同的所有對象組合在一起,可以構(gòu)成一個類。
54.軟件設(shè)計模塊化的目的是【工
正確答案:降低復(fù)雜性
解析:模權(quán)化是指解決一個復(fù)雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干
模塊的過程,由此分解來降低復(fù)雜性。
55.數(shù)據(jù)模型按不同應(yīng)用層次分成三種類型,它們是概念數(shù)據(jù)模型、【】
和物理數(shù)據(jù)模型。
正確答案:邏輯數(shù)據(jù)模型
解析:數(shù)據(jù)模型按不同的應(yīng)用層次分成三種類型,它們是概念數(shù)據(jù)模型、邏
輯數(shù)據(jù)模型、物理數(shù)據(jù)模型。
56.在C語言中(以16位PC機(jī)為例),一個float型數(shù)據(jù)在內(nèi)存中所占的字
節(jié)數(shù)為4;一個double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為[]o
正確答案:8
解析:在一般系統(tǒng)中,一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),一個
double型數(shù)據(jù)占8個字節(jié)。
57.以下程序輸田的結(jié)果是[]o#include<stdio.h>main()
{inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);)
正確答案:()
解析:在本題中,d=(a>b>c);相當(dāng)于d=(5>4>3);其計算過程為:先算
5>4,結(jié)果為真,得1,即d=(l>3);然后計算1>3,結(jié)果為假,得0。
58.mystrlcn函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。
請?zhí)羁?。intmystden(char*str){inti;fo,(i=0;[]!=t\0\i++);
return(i);
正確答案:*(str+i)或str[i]
解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,用*(str+i)或str[i]
來訪問字符串的第i個元素,判斷是否是結(jié)束標(biāo)志,如果不是,i=i+l,繼續(xù)取下
一個元素進(jìn)行判斷,直到*(str+i)的值為為止。
59.以下程序的輸出結(jié)果是【#include<stdio.h>#deftne
JFT(x)x*xmain(){inta,k=3;a=++JFT(k+l);
printfC%d,\a);)
正確答案:9
解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,
其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,ffla=++k+l*k+lo若k的
值為3,則經(jīng)過運(yùn)算為a=4+l*4+1=9。
60.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量inf。用來存入
整型數(shù)據(jù),成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補(bǔ)充完整。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣州市正骨醫(yī)院合同制人員招聘備考題庫及完整答案詳解一套
- 上高縣公安局2025年治安巡防隊員招聘備考題庫及1套參考答案詳解
- 2025年廣德市人民法院勞務(wù)派遣服務(wù)招聘6人備考題庫及答案詳解一套
- 河南省定向廈門大學(xué)選調(diào)考試真題2024
- 2025年浙江清華長三角研究院招聘備考題庫完整答案詳解
- 2025年恩平市公安局警務(wù)輔助人員招聘備考題庫及答案詳解1套
- cy課程設(shè)計的目的
- 2025 九年級語文下冊現(xiàn)代文結(jié)構(gòu)層次劃分課件
- 2025年南京市公安局江寧分局公開招聘輔警備考題庫及一套答案詳解
- java課程設(shè)計跳動的小球
- 浙江省溫州市2024-2025學(xué)年高一上學(xué)期期末數(shù)學(xué)試題B卷(含答案)
- 綠色生物技術(shù):天然產(chǎn)物制備與應(yīng)用
- 家電元旦活動方案策劃(3篇)
- 2026上海黃浦區(qū)城銀清算服務(wù)有限責(zé)任公司校園招聘16人備考題庫及完整答案詳解一套
- 硬化混凝土地面施工規(guī)范
- 焊接生產(chǎn)管理概述
- 森林提質(zhì)改造課件
- 成都市第七中學(xué)2025-2026學(xué)年高二上學(xué)期11月考試語文試卷
- 北京市海淀區(qū)2025-2026年高三語文上學(xué)期期中考試作文《說“論辯”》3篇范文
- 2025年高中歷史上學(xué)期模擬試卷(含答案)
- 電車專業(yè)維修知識培訓(xùn)課件
評論
0/150
提交評論