




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C語言機試(選擇題)模擬試
卷第1套
一、選擇題(本題共25題,每題1.0分,共25分。)
1、以下敘述中正確的是
A、C程序中的每一行只能寫一條語句
B、簡單C語句必須以分號結(jié)束
C、C語言程序中的注釋必須與語句寫在同一行
D、C語句必須在一行內(nèi)寫完
標準答案:B
知識點解析:C語言的書寫格式自由,一行可寫多條語句,一條語句也可寫在不同
行上。C語言注釋是比較自由的,可以寫在一行或者多行。C語言規(guī)定每條語句和
數(shù)據(jù)定義的最后必須有一個分號,分號是C語句的必要組成部分。
2、在長度為n的順序表中查找一個元素,假設(shè)需要查找的元素有一半的機會在表
中,并且如果元素在表中,則出現(xiàn)在表中每個位置上的可能性是相同的。則在平均
情況下需要比較的次數(shù)大約為()。
A、n
B、3n/4
C、n/2
D、n/4
標準答案:B
知識點解析:在順序表中查找,最好情況下第一個元素就是要查找的元素,則比較
次數(shù)為1;在最壞情況下,最后一個元素才是要找的元素,則比較次數(shù)為n。這是
找到元素的情況。如果沒有找到元素,則要比較n次。因此,平均需要比較:找到
元素的情況xT+未找到元素的情況x7=(l+2+…+n)/nxT+nx7=一1,大約為3n
/4o
3、下列敘述中錯誤的是
A、在雙向鏈表中,可以從任何一個結(jié)點開始直接遍歷到所有結(jié)點
R、在循環(huán)鏈表中.可以從任何一個結(jié)點開始直接遍歷到所有結(jié)點
C、在線性單鏈表中,可以從任何一個結(jié)點開始直接遍歷到所有結(jié)點
D、在二叉鏈表中,可以從根結(jié)點開始遍歷到所有結(jié)點
標準答案:C
知識點解析:線性隊列是一種線性單鏈表,對線性隊列的遍歷只能從隊列的頭開
始,從中間的結(jié)點開始不能夠遍歷到所有的結(jié)點。選項C的描述是錯誤的。
4、在軟件設(shè)計中,不屬于過程設(shè)計工具的是
A、PDL(過程設(shè)計語言)
B、PAD圖
C、N—S圖
D、DFD圖
標準答案:D
知識點解析:PDL語言[PDLlanguage)一種設(shè)計性語言。它是軟件設(shè)計中廣泛使用
的語言之一;PAD是問題分析圖(ProblemAnalysisDiagr鋤)的英文縮寫,自1974
年由口本的二村良彥等人提出的乂一種主要用于描述軟件詳細設(shè)計的圖形表示工
具;數(shù)據(jù)流圖(DataFlowDiagram):簡稱DFD,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達
工具及用于表示軟件模型的一種圖示方法;N-S圖也被稱為盒圖或CHAPIN圖。
由一些基本的框組成一個大的框,這種流程圖又稱為N-S結(jié)構(gòu)流程圖(以兩個人
的名字的頭一個字母組成)。N—S圖包括順序、選擇和循環(huán)三種基本結(jié)構(gòu)。常見的
過程設(shè)計工具有:圖形工具:程序流程圖,N—S,PAD,HIPO;表格工具:判定
表:語言工具:PDL(偽碼)。
5、C語言規(guī)定,在一個C程序中,main。函數(shù)的位置()。
A、必須在系統(tǒng)調(diào)用的庫函數(shù)之后
B、必須在程序的開始
C、必須在程序的最后
D、可以在任意位置
標準答案:D
知識點解析:每個C程序有且只有一個主函數(shù)(main),且程序必須從“main。"函數(shù)
開始執(zhí)行,而且“main(廣函數(shù)可以放在程序中的任意位置。
6、設(shè)二義樹的前序序列為ABDEGHCFIJ,中序序列為DBGEHACIFJ。則按層次
輸出(從上到下,同一層從左到右)的序列為
A、ABCDEFGHIJ
B、DGHEBIJFCA
C、JIHGFEDCBA
D、GHIJDEFBCA
標準答案:A
知識點解析:前序遍歷中,第一個字母是根結(jié)點,也就是A是根結(jié)點;在中序遍
歷中,根結(jié)點前面的是左子樹、后面的是右子樹。前序中,B在A的后面,中序
中在左子樹中,可知B為A的左結(jié)點。中序中D在B的前面,前序中在B的后
面,可知D為B的左結(jié)點,GEH為B的右子樹。前序中順序為EGH,由此可知,
E為B的右結(jié)點,G為E的左結(jié)點、H為E的右結(jié)點。右子樹中,前序中C在最
前'因為右子樹根結(jié)點,也就是A的右結(jié)點,根據(jù)前序中的子樹FIJ和中序中的
IFJ子樹可知F為C的右結(jié)點,I為F的左結(jié)點、J為F的右結(jié)點。由此可畫出這個
二叉樹,然后根據(jù)二叉樹
7、公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有
多名職員。則實體部門和職員間的聯(lián)系是
A>1:1聯(lián)系
B%m:1聯(lián)系
C、1:m聯(lián)系
D、m:n聯(lián)系
標準答案:C
知識點解析:一個部門可以有多名員工,所以實體部門和職員間的聯(lián)系是1:m聯(lián)
系。
8、以下敘述中正確的是
A、語句inta口={0};是不合法的,遺漏了數(shù)組的大小
B、語句chara[2]={“A“,“B”);是合法的,定義了一個包含兩個字符的數(shù)組
C、語句inta[8]={0};是合法的
D、語句chara[3];a="AB";是合法的,因為數(shù)組有三個字符空間的容量,可以保
存兩個字符
標準答案:C
知識點小析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲單元時,這些存
儲單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個元素賦初值。
數(shù)組初始化賦值是指在數(shù)組定義時給數(shù)組元素賦予初值。初始化賦值的一般形式
為:類型說明符數(shù)組名[常量表達式]二{值,值,…,值};需要注意的是當(dāng)所賦初
值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息,在指定初值時,第一
個初值必定賦給下標為。的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素
逐個賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可以不
給出數(shù)組元素的個數(shù)C
9、DOS文件系統(tǒng)的組織結(jié)構(gòu)屬于
A、星形結(jié)構(gòu)
B、網(wǎng)形結(jié)構(gòu)
C、環(huán)形結(jié)構(gòu)
D、樹形結(jié)構(gòu)
標準答案:D
知識點解析:DOS中目錄結(jié)構(gòu)是層次的,由根目錄到子目錄形成一個樹型結(jié)構(gòu)。
10、有以下結(jié)構(gòu)體說明、變量定義和賦值語句:structSTD{charname[10];int
age:charsex;|srs],*ps;ps=&g[O];則下列scanf函數(shù)調(diào)用語句有錯誤的是()。
A、scanf("%s",s[0].name);
B、seanfC'%dn,&s[0].age);
C^scanf("%c",&(ps->sex));
D、seanf("%d",ps->age);
標準答案:D
知識點解析:本題考查結(jié)構(gòu)體的相關(guān)知識。題目中需要輸入一個變量,scarff要求
參數(shù)為指針,而D選項中ps->age為一個變量,不是指針,所以錯誤。
11、設(shè)有定義charstr[]="HeHo";則語句printf("%d%d",sizeof(str),strlen(stri);
的輸出結(jié)果是
A、66
B、65
C、55
D、56
標準答案:B
知識點解析:sizeof主要用于測試變量所占的實際內(nèi)存,而strlcn函數(shù)主要測試字
符串中實際字符的個數(shù),字符串”Hello”占有內(nèi)存6個字節(jié),而字符串中共有5個字
符。
12、下列關(guān)系表達式中,結(jié)果為“假”的是
A、(3<4)==1
B、(3+4)>6
C、(3!=4)>2
D、3<=4
標準答案:C
知識點解析:關(guān)系表達式和邏輯表達式的結(jié)果為非零或者0,其中。表示假,而非
零表示真,由于3!=4的結(jié)果為1,而1>2的結(jié)果為假。
13、若有定義:inta,b:通過語句scanf("%d;%d“,&a,&b):能把整數(shù)3賦給
變量a,5賦給變量b的輸入數(shù)據(jù)是
A、3,5
B、35
C、3;5
D、35
標準答案:C
知識點解析:在采用seanf這個函數(shù)輸入數(shù)據(jù)時,要嚴格遵守其輸入的規(guī)則定義。
本題此函數(shù)定義的規(guī)則是,在兩個整數(shù)之間加分號輸入。
14^若有定義語句:inia=3,b=2,c=l;以下選項中錯誤的賦值表達式是()。
A、a=(b=4)=3;
B、a=b=c+1;
C^a=(b=4)+c;
D、a=l+(b=c=4);
標準答案:A
知識點解析:不能將變量或常量賦給一個表達式,所以A選項中(b=4)=3是錯誤的。
15、下列關(guān)于棧的敘述中,正確的是
A、棧底元素一定是最后入棧的元素
B、棧頂元素一定是最先入棧的元素
C、棧操作遵循先進后出的原則
D、以上說法均錯誤
標準答案:C
知識點解析:棧頂元素總是后被插入的元素,從而也是最先被刪除的元素;棧底元
素總是最先被插入的元素,從而也是最后才能被刪除的元素。棧的修改是按后進先
出的原則進行的。因此,棧稱為先進后出表,或“后進先出”表,所以選擇C。
16、有下列程序:structS{intn:inta[20];);voidflint*a,intn){inti;for(i=0;i<
n-1:i++)a[i]+:i;)main(){inti;structSs={10,{2,3,1,6,8,7,5,4,10,
9|);f(s.a,s.n);for(i=0;i<s.n;i++)printfp%d,“,s.a[i]);)程序運行
后的輸出結(jié)果是
A、3,4,2,7,9,8,6,5,11,10,
B、2,3,1,6,8,7,5,4,10,9,
C、2,4,3,9,12,12,11,11,18,9,
D、1,2,3,6,8,7,5,4,10,9
標準答案:C
知識點解析:voidf(int*a,intn)函數(shù)的功能是對數(shù)組叫的每一個元素力口上其下標的
值。所以在main()函數(shù)中f(s.as.n)語句會調(diào)用intn涵數(shù),此時指針a指
向數(shù)組s.a={2,3,I,6,8,7,5,4,10,9),n=IO:然后執(zhí)行for(i=0;i<
n.1;i++)a[i]+=i;語句,也就是從0開始到8對數(shù)組s.a={2,3,1,6,8,7,
5,4,10,9}中的每一個元素加上其下標值。
I7N若有以下程序#includeint*f(int*s,int*t)(int*k;if(*s<*t){k=s;s=t;t=k;}
returns;)main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);
printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);)則程序的輸出結(jié)果是
A、3,5,5,3,5
B、3,535,5
C、5,3,5,3,5
D^5,3,3,5,5
標準答案:B
知識點解析:在主函數(shù)中分別給整型變量i、j和指針型變量p、q賦初值,并聲明
指針變量r;調(diào)用f函數(shù),并將實參變量p和q的值傳遞給形參變量s和t,并且f
函數(shù)是指針型函數(shù),即函數(shù)的返回值將是一個地址。在f函數(shù)中,如果條件成立,
則將指針變量s和t互換,并且將指針s的地址返回主函數(shù)。最后輸出
*i?的值,即3,535,5。因此B選項正確。
18、有以下程序voidfun(inln,int*s){intf;if(n=l)*s=n+l;else{fun(n-l,&f);
*s=f;))main(){intx=0:fun(4,&x);printf(n%d\n",x);)程序運行后的輸出
結(jié)果是
A、I
B、3
C、4
D、2
標準答案:D
知識點解析:函數(shù)fun為遞歸調(diào)用函數(shù),如果n的值為1,那么后面形參指向的空
間存放n+1,否則繼續(xù)計算fun(n?l)的值°調(diào)用分析過程:fun(4,&x)-fun(3,
&x)->fun(2,&x)->fun(l,&x)在回歸的過程中,對丁x內(nèi)的數(shù)據(jù)并沒有改動。
19、有下列程序:voidf(intbU){inti;for(i=2;i<6;i++)b[ij本=2;)mam()
{inta[10]={l,2,3,4,5,6,7,8,9,10),i;f(a);for(i=0;i<l0,i+
4-)printf("%d,a[i]);}程序運行后的輸出結(jié)果是
A、1,2,3,4,5,6,7,8,9,10,
B、I,2,3,4,10,12,14,16,9,10,
C、1,2,6,8,10,12,7,8,9,10,
D、1,2,6,8,10,12,14,16,9,10,
標準答案:C
知識點解析:函數(shù)voidf(intb[])的功能是對數(shù)組b口中第2個到第5個元素的值逐
個擴大2倍。所以在main。函數(shù)中,f(8)語句的作用是對數(shù)組a[10]中從a[2]到a[5]
的各個數(shù)字乘以2,因而數(shù)組a[10]的元素就變成了{1,2,6,8,10,12,7,8,
9,10)o
20、有以下結(jié)構(gòu)體說明、變量定義和賦值語句structSTD{charname(J0];intage;
charsex;}s[5],*ps;ps=&s[O];則以下scanf函數(shù)調(diào)用語句有錯誤的是
A、scanf("d",&s[0].age);
B、scanf("%c",&(ps->sex));
C、scanf("%s",s[0].name);
D、scanf("%d”.ps->age):
標準答案:D
知識點解析:程序段定義了結(jié)構(gòu)體變量數(shù)組s[5]和指針變量ps,然后ps指向數(shù)組
s[5]中的第一個元素,因而ps->age用s[0].age。因為在輸入scanf()函數(shù)中,第2
個參數(shù)應(yīng)該表示為地址變量,而選項A)表示的值,而不是一個地址值。
21、一個棧的初始狀態(tài)為空。現(xiàn)將元素1,23A,B,C依次入棧,然后再依次出棧,
則元素出棧的順序是
A、1,2,3,A,B,C
B、C,B,A』,2,3
C、C,B,A,3,2,1
D、1,2,3,C,B,A
標準答案:c
知識點解析:棧的修改是按后進先出的原則進行的,所以順序應(yīng)與入棧順序相反,
故選C。
22、有以卜.程序#inc1udeVstdio.h>main()voidfun(int*a,int*b){intx=3,y=5,
*p=&x,*q=&y;{int*c;fun(p,q);printf("%d,%d,",*p,*q);c=a;a=b;
b=c;}fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結(jié)果是
A、3,5,5,3
B、3,5,3,5
C^5,3,3,5
D、5,3,5,3
標準答案:B
知識點解析:本題考查函數(shù)的調(diào)用與指針。p和q分別為指向x和y的指針,函數(shù)
fun()的兩個形參均為指針型,主要功能為交換兩個指針的指向,當(dāng)調(diào)用結(jié)束以后,
該操作不能返回主函數(shù)。而主函數(shù)中,fun(p,q)、fun(&x,&y)的實參均為x與y
的地址,因此,兩者結(jié)果相同,并且兩者指針指向的值不能變化。
23、有以卜程序structS{inta,b;}data[2]={10,100,20,200);main(){structS
p=data[l];printf("%d\n,',++(p.a));}程序運行后的輸出結(jié)果是
A、11
B、20
C、21
D、10
標準答案:C
知識點解析?:在題目中定義了結(jié)構(gòu)體S類型的數(shù)組變量data,并對其賦初值。在程
序中定義了指向結(jié)構(gòu)體S類型的變量p,并把數(shù)組data的第二個元素da⑷1]的值賦
給它,所以此時成員變量p.a的值等于20,在輸出時分別加1,所以輸入結(jié)果為選
項A。
24、以下敘述中錯誤的是
A、用typedef可以說明一種新的類型名
R、typedef的作用是用一個新的標識符來代表已存在的類型名
C、可以用typedef說明的新類型名來定義變量
D、typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤
標準答案:D
知識點解析:本題考查typedef的使用方法,typed”對已存在的類型使用一個新的
名字,新類型可以使用小寫,所以D選項錯誤。
25、以下敘述中正確的是
A、在C程序中的八進制和十六進制,可以是浮點數(shù)
B、整型變量可以分為int型、short型、long型和unsigned型四種
C、八進制數(shù)的開頭要使用英文字母。,否則不能與十進制區(qū)分開
D、英文大寫字母X和英文小寫字母x都可以作為二進制數(shù)字的開頭字符
標準答案:B
知識點解析:C程序中的實型常量只有十進制一種數(shù)制,所以A錯誤。八進制數(shù)以
0打頭,所以C錯誤。C語言中整數(shù)只有十進制、八進制、十六進制三種沒有二進制
數(shù)制,所以D錯誤。
國家二級C語言機試(選擇題)模擬試
卷第2套
一、選擇題(本題共25題,每題1.0分,共25分。)
1、以下敘述中正確的是
A、在C語言程序設(shè)計中,所有函數(shù)必須保存在一個源文件中‘
B、在算法設(shè)計時,可以把復(fù)雜任務(wù)分解成一些簡單的子任務(wù)
C、只要包含了三種基本結(jié)構(gòu)的算法就是結(jié)構(gòu)化程序
D、結(jié)構(gòu)化程序必須包含所有的三種基本結(jié)構(gòu),缺一不可
標準答案:B
知識點解析:模塊化設(shè)計思想,就是把復(fù)雜的任務(wù)分成簡單的子任務(wù),心函數(shù)或者
過程描述子任務(wù),C語言中一個程序可以包括多個源文件,每個源文件可以有符干
個函數(shù),結(jié)構(gòu)化的程序由順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)三種基本結(jié)構(gòu)組成,不一
定全要包括這三種結(jié)構(gòu),而算法不等于程序。
2、以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是
A、結(jié)構(gòu)化程序使用got。語句會很便捷
B、一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成
C、由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題
D、在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的
標準答案:D
知識點解析:C語言是結(jié)構(gòu)化程序設(shè)計語言,順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是結(jié)
構(gòu)化程序設(shè)計的二種基本結(jié)構(gòu),研究證明任何程序都可以由這三種基本結(jié)構(gòu)組成。
但是程序可以包含一種或者兒種結(jié)構(gòu),不是必須包含全部三種結(jié)構(gòu)。自從提倡結(jié)構(gòu)
化設(shè)計以來,gol。就成了有爭議的語句。首先,由于g。。語句可以靈活跳轉(zhuǎn),如
果不加限制,它的確會破壞結(jié)構(gòu)化設(shè)計風(fēng)格。其次,got。語句經(jīng)常帶來錯誤或隱
患。它可能跳過了某些對象的構(gòu)造、變量的初始化、重要的計算等語句。Goto語
句的使用會使程序容易發(fā)生錯誤并且也不易閱讀,所以應(yīng)避免使用。由三種基本結(jié)
構(gòu)構(gòu)成的程序幾乎能解決大部分問題。
3、下列敘述中正確的是
A、)順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)
的
B、順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈式存儲結(jié)構(gòu)只針對非線性結(jié)構(gòu)
C、順序存儲結(jié)構(gòu)能存儲有序表,鏈式存儲結(jié)構(gòu)不能存儲有序表
D、鏈式存儲結(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間
標準答案:A
知識點解析:順序存儲方式主要用于線性的數(shù)據(jù)結(jié)構(gòu),它把邏輯上相鄰的數(shù)據(jù)元素
存儲在物理上相鄰的存儲單元里,結(jié)點之間的關(guān)系由存儲單元的鄰接關(guān)系來體現(xiàn)。
而鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)的。
4、對下列二叉樹()。進行前序遍歷的結(jié)果是()。
A、DYBEAFCZX
B、YDEBFZXCA
C、ABDYECFXZ
D、ABCDEFXYZ
標準答案:C
知識點解析:二叉樹前序遍歷的簡單描述:若二叉樹為空,則結(jié)束返回;否則,
①訪問根節(jié)點;②前序遍歷左子樹;③前序遍歷石子樹。可見,前序遍歷二叉樹
的過程是一個遞歸的過程。根據(jù)題目中給出的二叉樹的結(jié)構(gòu)可知前序遍歷的結(jié)果是
ABDYECFXZo
5、有以下程序main。{charcl='A',c2=*Y*;prin【f("%d,%d\n",cl,c2);)
程序的輸出結(jié)果是
A、輸出格式不合法,輸出出錯信息
B、65,90
C、65,89
D、A,Y
標準答案:C
知識點解析:C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。
在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。
6、若變量已正確定義,以下選項中非法的表達式是
A、a!=4l|b'
B、V%4
C>a,=l/2*(x=y=20,x*3)
D、'A'+32
標準答案:C
知識點解析:賦值表達式左邊應(yīng)為變量,選項C中左邊為字符常最,因此非法,
其余表達式均為合法的表達式。
7、C語言中允許用外部說明來指定變量、函數(shù)和其他標識符的特征,這里所說的
外部指的是()。
A、冠以關(guān)鍵字extern
B、位置在函數(shù)體外部
C、作用范圍是全程的
D、位置在函數(shù)的外部
標準答案:D
知識點解析:C語言中允許用位置在函數(shù)外部的說明來指定變量、函數(shù)和其他標識
符的特征。
8、下面不屬于軟件需求規(guī)格說明書內(nèi)容的是
A、軟件的可驗證性
B、軟件的功能需求
C、軟件的性能需求
D、軟件的外部接口
標準答案:A
知識點解析:軟件需求說明書的編制是為了使用戶和軟件開發(fā)者雙方對該軟件的初
始規(guī)定有一個共同的理解,使之成為整個開發(fā)工作的基礎(chǔ)。包含硬件、功能、性
能、輸入輸出、接口需求、警示信息、保密安全、數(shù)據(jù)與數(shù)據(jù)庫、文檔和法規(guī)的要
求。
9、關(guān)于算法,以下敘述中錯誤的是
A、同一個算法對于相同的輸入必能得出相同的結(jié)果
B、一個算法對于某個輸入的循環(huán)次數(shù)是可以事先估計出來的
C、某個算法可能會沒有輸入
D、任何算法都能轉(zhuǎn)換成計算機高級語言的程序,并在有限時間內(nèi)運行完畢
標準答案:D
知識點解析:算法和程序不同,算法滿足以下特性:算法有5個特性,即有窮性、
確定性、可行性、有零個或多個輸入以及有一個或多個輸出。算法的確定性是指算
法中的每一個步驟都必須有明確定義,不允許有模棱兩可的解釋,也不允許有多義
性,因此對于相同的輸入必有相同的輸出,同時可以事先估計算法的時間復(fù)雜度,
對于有循環(huán)的算法,以循環(huán)體內(nèi)的循環(huán)次數(shù)來估測時間復(fù)雜度。
10、下列敘述中正確的是()。
A、conlinue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
B、break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)
C^在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
D、break語句只能用于switch語句體中
標準答案:B
知識點解析:continue語句的作用是跳過循環(huán)體中剩余的語句而進行下一次循環(huán),
所以A選項錯誤。break語句的作用是終止正在執(zhí)行的switch流程,跳出switch結(jié)
構(gòu)或者強制終止當(dāng)前循環(huán),從當(dāng)前執(zhí)行的循環(huán)中跳出,所以C、D選項錯誤。
11、有三個關(guān)系R、S和T如下:
關(guān)系R和S通過運算得到關(guān)系T,
A、并
B、自然連接
C、笛卡爾積
D、交
標準答案:D
知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的
有序組組成的,記為Rns。
12^有以下程序:#include<stdio.h>voidf(intb|]){inti;for(i=2;i<6;i++)
b[i]*=2;}main(){inta[10]={l,2,3,4,5,6,7,8,9,10),i;f(a);
for(i=0;i<10;i++)pfinff("%d,",a[i]);}程序的運行結(jié)果是()°
A、1,2,3,4,5,6,7,8,9,10,
B、1,2,6,8,10,12,7,8,9,10,
C、1,2,3,4,10,12,14,16,9,10,
D、1,2,6,8,10,12,14,16,9,10,
標準答案:B
知識點解析:數(shù)組名是常量,表示的是數(shù)組首元素的地址。當(dāng)執(zhí)行f(a)的時候,由
于傳遞的是首地址,相當(dāng)于直接對數(shù)組a進行操作,所以從數(shù)組a的第3個元素
a[2]到元素a[5],每個元素值擴大兩倍,因此B選項正確。
13、有以下程序#includcmain(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();
d=getchar();printf("%c%c%c%c\nn,a,b,c,d);)當(dāng)執(zhí)行程序時,按卜列方式輸入數(shù)據(jù)
(從第1列開始,代表回車,注意:回車也是一個字符)1234則輸出結(jié)果是
()O
A、123
B、12
C、1234
D、1234
標準答案:A
知識點解析:考查字符數(shù)據(jù)的輸入輸出。gelchar()函數(shù)只能接受單個字符,數(shù)字和
回車也會按照字符處理,輸入多于一個字符時,只接受第一個字符。本程序輸入結(jié)
束之后,a=T,b=2,c=<回車>,d=3。則輸出的結(jié)果為A)。
14>有以卜程序^includevoidfun(char*a,char*b){while(*a=,*,)a++;
while(*b=*a){b++;a++:))main(){char*s="*****a*b*****”,t[80];fun(s,t);
puts(t);)程序的運行垢果是
A、a*b
B、*****a*b
C、a*b****
D、ab
標準答案:C
知識點解析:主函數(shù)main()定義了指向字符串的指針和一個字符數(shù)組,接著調(diào)
fun(s,I)函數(shù),進行實參向形參傳遞,函數(shù)fun()第一個while語句判斷*a中的值為
“”時繼續(xù)掃描,當(dāng)遇到不是“”時結(jié)束,接著第二個while循環(huán)語句,將*&中從“a”
開始的后續(xù)所有字符都賦予*b,也就是t[80]中的內(nèi)容為"a*b****”。
15、有以下程序#include<stdio.h>typedefstruct{intb,p;)A;voidf(Ac)/*注
意:C是結(jié)構(gòu)變量名*/{intj;c.b+=hc.p+=2;|main(){i;Aa={L2):f(a);
printfC%d,%d\n”,a.b,a.p);)程序運行后的輸出結(jié)果是
A、274
B、1,2
C、I,4
D、2,3
標準答案:B
知識點解析:在C語言中,數(shù)據(jù)只能從文參單向傳遞給形參,稱為“按值“傳遞。
也就是說,當(dāng)簡單變量作為實參時,用戶不可能在函數(shù)中改變對應(yīng)實參的值。所以
本題中在main()函數(shù)f(a)語句中結(jié)構(gòu)體實參a作為值,傳遞給函數(shù)f(AC中的形參
c;這種值傳遞的方式不會對實參a產(chǎn)生任何影響,所以結(jié)構(gòu)體實參a的值不會發(fā)
生變化。
16、若有以下說明和定義uniondt{inta;charb;doublec;)data:以下敘述中錯
誤的是
A、data的每個成員起始地址都相同
B、變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等
C、程序段:data.a=5;printfC'%f\n",data.c);輸出結(jié)果為5.000000
D、data可以作為函數(shù)的實參
標準答案:C
知識點解析:本題主要考查聯(lián)合的定義和使用。選項A)聯(lián)合中每個成員起始地址
都是一樣的,正確;選項B)聯(lián)合的長度等于長度最長成員的長度,在dala中,成
員c是double類型,長度為8個字節(jié)最長,因此data所占用字節(jié)數(shù)和成員c長度
一致。選項C)整型和double類型的存儲格式不一致,整數(shù)5在內(nèi)存中的存儲格式
和浮點數(shù)5存儲格式不一樣,因此daac輸出不會是5.000000;選項D)聯(lián)合和
結(jié)構(gòu)體都可以作為函數(shù)實參。
17、設(shè)變量已正確定義并賦值,以下正確的表達式是
A、x=y+z+5,++y
B、int(15.8%5)
C^x=y*5=x+z
D、x=25%5.0
標準答案:A
知識點解析:在賦值表達式中,賦值符號'、="的左邊只能為賦值的變量,不能為表
達式,右邊可以為常量或者是表達式,故選項C錯誤;在取余運算中,運算符“%”
兩邊都必須是整型數(shù)據(jù),所以選項B、D錯誤,選項A是C語言中的逗號表達
式。
18、有以F#include#defineN4voidfun(inta(][N],intb[]){inti;for(i=0;i
A、-3,-1,1,3,
B、-12,-3,0A
C、0,1,2,3,
D、-3,-3,-3,-3,
標準答案:A
知識點解析:函數(shù)fun()的功能是計算b[i]:b[0]=a[0][0]-a[0][3]=-3,b[l]=a[l][l]-
a[l][2]=-l,b[2]=a[2][2]-a[2][l]=l,b[3]=a[3][3]-a[3][O]=3,所以計算得到的y值為
選項A)o
19、有以下程序段charname[20];intnum;scanf(nname=%snum=%dM,name,&num);
當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001后,name的值為
A、name=Lili
B、Lilinum=
C、nanie=Lilinum=1001
D、Lili
標準答案:D
知識點解析:在題目中以字符串的形式給字符數(shù)組賦值,所以字符數(shù)組name的值
為Lili。
20、有以下程序#includeintf(intn){intt=0,a=5;if(n/2){inta=6;t+=a++;}e:se
{inta=7;t+=a++;}returnt+a++;)main(){ints=0,i=0;for(;i<2;i++)s+=f(i);
printf("%d\n”,s);}程序運行后的輸出結(jié)果是()。
A、24
B、28
C、32
D、36
標準答案:A
知識點解析:一個源文件中如果外部變量和局部變量同名,則在該局部變量的作用
域內(nèi),該外部變量會被“屏蔽",main。函數(shù)中調(diào)用兩次f()函數(shù),兩次調(diào)用均進入
else選擇支句,t=7,返回7+5=12,所以s=O+f(O)+f(1)=24,答案選A。
21、有下列程序:voidf(intb|]){intI:for(i=2;i<6;i++)b|i]=2;}main(){int
a[10]={l,2,3,4,5,6,7,8,9,10),i;f(a);for(i=0;i<10,
i++)printf("%d,“,a[i]);}程序運行后的輸出結(jié)果是
A、1,2,3,4,5,6,7,8,9,10,
B、1,2,3,4,10,12,14,16,9,10,
C、1,2,6,8,10,12,7,8,9,10,
D、1,2,6,8,10,12,14,16,9,10,
標準答案:C
知識點解析:函數(shù)voidf(intb[])的功能是對數(shù)組b口中第2個到第5個元素的值逐
個擴大2倍。所以在main。函數(shù)中,f(a)語句的作用是對數(shù)組a[10]中從a⑵到。5]
的各個數(shù)字乘以2,因而數(shù)組a[10]的元素就變成了{1,2,6,8,10,12,7,8,
9,I0)o
22、以下敘述中正確的是
A、當(dāng)break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時,其作用是跳出該switch語句
體,并中止循環(huán)體的執(zhí)行
B、只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
C、continue語句的作用是:在執(zhí)行完本次循環(huán)體中剩余語句后,中止循環(huán)
D、在while語句和do-while語句中無法使用continue語句
標準答案:B
知識點解析:break語句可以使程序流程跳出switch語句體,也可用break語句在
循環(huán)結(jié)構(gòu)中終止循環(huán)體,從而提前結(jié)束循環(huán),而當(dāng)break出現(xiàn)在循環(huán)體中的switch
語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想
強行終止循環(huán)體的執(zhí)行,可以在循環(huán)體中.但并不在*witch語句中設(shè)置break語
句,滿足某種條件則跳出循環(huán)體。continue語句的作用是結(jié)束本次循環(huán),在while
和do-while循環(huán)中,cominue語句使得流程直接跳到循環(huán)控制條件的測試部分,然
后決定循環(huán)是否繼續(xù)進行。
23、若有以下程序typedefstructstu{charname|J0|,gender;intscore;}STU;void
f(char*p){sgcpy(p,"Qian");}main(){STUa={,,Zhao",290),b;b=a;
f(b.name);b.gender=T;b.score=350;printf("%s,%c,%d,",a.name,
a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.sc
A、Zhao,m,290,Zhao,m,290
Qian,f,350,Qian,f,350
C、Zhao,m,290,Qian,f,350
D、Zhao,m,290,Zhao,f,350
標準答案:C
知識點解析:主函數(shù)中結(jié)構(gòu)體變量定義同時賦初值。執(zhí)行b=a;語句后,b的數(shù)據(jù)
和a的數(shù)據(jù)相同,調(diào)用函數(shù)f(b.name),形參指針p接收實參b.name的地址,此
時p和b.name指向同一個存儲空間,流程轉(zhuǎn)到f執(zhí)行,p指向的存儲空間存放字
符串“Qian",流程結(jié)束返回主函數(shù)。主函數(shù)中變量b的其他成員存放數(shù)據(jù)。因此a
的數(shù)據(jù){“Zhao",'m',290},b的數(shù)據(jù)為{“Qian",’3350}。注意本題結(jié)構(gòu)體STU
類型變量a和b中的name成員為數(shù)組,不是指針,它具有自己的存儲空間。
24、若實體A和B是一對多的聯(lián)系,實體B和C是一對一的聯(lián)系,則實體A和C
的聯(lián)系是
A、一對一
B、——對多
C、多對一
D、多對多
標準答案:B
知識點解析:A和B為一對多的聯(lián)系,則對于A中的每一個實體,B中有多個實
體與之聯(lián)系,而B與C為一對一聯(lián)系,則對于B中的每一個實體,C中之多有一
個實體與之聯(lián)系,則可推出對于A中的每一個實體,C中有多個實體與聯(lián)系,所
以為一對多聯(lián)系。
25、有以卜程序#includeintfun(inta,intB){retuma+b;}main(){intx=6,y=7,z=8,r;
r=fun(fun(x,y),z-);printf("%d\n",r);}程序運行后的輸出結(jié)果是
A、21
B、15
C、20
D、31
標準答案:A
知識點解析:函數(shù)fun的功能是返回兩個形參的和。調(diào)用函數(shù)fun(x,y)時,將變量
x=6和y=7的值分別傳送變量a和b,并且通過語句returna+h:將13返|口|給主函
數(shù)。繼續(xù)調(diào)用函數(shù)fun(13,z--),這里z--指將z的值參與運算后,再將z的值減1操
作;將13和8分別傳送變量a和b,且通過語句relurna+b:將21返回給主函數(shù)。
因此A選項正確。
國家二級C語言機試(選擇題)模擬試
卷第3套
一、選擇題(本題共25題,每題1.0分,共25分。)
1、設(shè)一棵樹的度為3,其中沒有度為2的結(jié)點,且葉子結(jié)點數(shù)為6。該樹中度為3
的結(jié)點數(shù)為
A、1
B、2
C、3
D、不可能有這樣的樹
標準答案:D
知識點解析:樹的度是指一棵樹中,最大的結(jié)點的度稱為樹的度。木題中樹的度為
3,也就是坡少有一個度為3的結(jié)點。要求沒有度為2的結(jié)點,且葉子結(jié)點為6,
如果要有度為3的結(jié)點,那么最多只有5個葉子結(jié)點,而畫不出6個葉子結(jié)點。因
此這樣的樹是沒有的。
2、以下不能輸出字符A的語句是(注:字符A的ASCII碼值為65,字符a的
ASCH碼值為97)
A、pnntf("%c\n",,a,-32);
B、printf(%d\n",
C、printfC%c\n",65);
D、printf("%c\n",'B-l);
標準答案:B
知識點解析:在選項B的輸出函數(shù)中,大寫字符以整型數(shù)據(jù)的形式輸出。
3、Wchara[4]="xyM;char*p;執(zhí)行了語句p=a之后,*(p+2)的值是()。
A、'B'
B、、(r
c^不確定
D、字符'B,的地址
標準答案:B
知識點解析:在C語言中定義數(shù)組指定的是元素的個數(shù),因此a[4]定義了一個含4
個元素的數(shù)組。對于字符數(shù)組,數(shù)組名a實際上是指向該串第一個元素a[0]的指
針,即其值為&a[0],在執(zhí)行了語句p=a之后,p指向a[0],而木(p+2)的含義為:
指針p加上偏移2,從而指向a[2],然后取a[2]的值。由于C語言中任何字符串都
必須以一個‘'0'字符串結(jié)束,因而聲明chara[3]二"AB”;實際上隱含賦值a[2]=,\
0\所以正確答案是B),
4、下列程序段的輸出結(jié)果是()。main。{chars[]="HellowoHd":s[5]=0:
printf("%s\n",s);}
A、HelloOworld
B、Helloworld
C、Hello
D、HelloO
標準答案:C
知識點解析:由于s數(shù)組中數(shù)組下標為5的元素賦值為0,0是字符串的結(jié)束標
志,所以在輸出字符串的時,僅輸出數(shù)組下標為0~4的數(shù)組元素。
5、以下正確的字符串常量是
A、'abc'
B、OlympicGames
C、””
D、"\\\"
標準答案:C
知識點解析:字符串常量是由雙引號括起來的一串字符。在C語言中,以一個反
斜線開頭后跟一個特定的字符,用來代表一個特定的ASCH字符。利用兩個,\\\'
表示一個反斜杠,因此選項D的表示無法確認表示幾個反斜杠。
6、設(shè)表的長度為n。下列算法中,最壞情況下比較次數(shù)小于n的是
A、二分查找法
B、堆排序
C、快速排序
D、順序查找法
標準答案:A
知識點解析:二分法查找只適用于順序存儲的有序表。二分查找的基本方法是:將
被查元素x與線性表的中間項進行比較,若中間項的值等于X,則說明查到;若小
于中間項的值則在線性表的前半部分;以相同的方法進行查找;若大于中間項的
值,則在線性表的后半部分以相同的方法進行查找。在最壞情況下,二分查找需要
比較log2n次。所以選項A正確。
7^有如下程序:#include<stdio.h>main(){FILE*fpl;fpl=fopen("fl.txt",
"wH);fprintf(fpl,"abc');fclose(fpl);}若文本文件fl.txt中原有內(nèi)容為
good,則運行以上程序后,文件fl.txt中的內(nèi)容為()。
A、goodabc
B、abed
C、abe
D、abegood
標準答案:C
知識點解析:當(dāng)用“w”方式打開一個已有內(nèi)容的文件時,文件中的已有內(nèi)容將全部
丟失,新寫入的內(nèi)容就是文件的內(nèi)容。
8、在關(guān)系數(shù)據(jù)庫中,用來表示實體間聯(lián)系的是()。
A、屬性
B、二維表
C、網(wǎng)狀結(jié)構(gòu)
D、樹狀結(jié)構(gòu)
標準答案:B
知識點解析:在關(guān)系數(shù)據(jù)庫中,用二維表表示實體間的聯(lián)系。
9、以下程序段中的變量已正確定義:for(i:0;i<4;i}{,i}{)for(k=l;k<3:
u,,
k++);prinff(*);程序的運行結(jié)果是()。
A、**
B、****
c、*
D、********
標準答案:C
知識點解析:由于內(nèi)層循環(huán)tor(k=l;k<3;k++)后面直接跟了空語句;所以在
循環(huán)內(nèi)部什么操作也不做,跳出外層循環(huán)后執(zhí)行打印語句,所以打印了一個“松,
選擇C選項。
10、以下敘述中正確的是
A、continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)
B、break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)
C^在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
D、break語句只能用于switch語句體中
標準答案:B
知識點解析:只能在循環(huán)體內(nèi)和swish語句體內(nèi)使用break語句。continue語句的
作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中continue語句后面的語句,立刻進行下
一次的循環(huán)條件判斷,可以理解為僅結(jié)束本次循環(huán)。而break語句可以使程序流程
跳出switch語句體,也可用break語句在循環(huán)結(jié)構(gòu)中終止循環(huán)體。
11、下列描述中正確的是
A、為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系
B、表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項
C、一個關(guān)系的屬性名表稱為關(guān)系模式
D、一個關(guān)系可以包括多個二維表
標準答案:C
知識點解析:為了建立一個關(guān)系,首先要指定關(guān)系的屬性,所以選項A是錯誤
的。表示關(guān)系的二維表中各元組的每一個分量必須是不可分的基本數(shù)據(jù)項,所以選
項B是錯誤的。在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,而一個二維表就是一個
關(guān)系,所以選項D是錯誤的。一個關(guān)系的屬性名表稱為該關(guān)系的關(guān)系模式,其記
法為:〈關(guān)系名〉(V屬性名1>,V屬性名2>,…,V屬性名n>)。
12、以下敘述中正確的是
A、語句inta口={0};是不合法的,遺漏「數(shù)組的人小
B、語句chara[2]={”A",”B"};是合法的,定義了一個包含兩個字符的數(shù)組
C、語句inla[8]={0};是合法的
D、語句chara[3];a="AB":是合法的,因為數(shù)組有三個字符空間的容量,可以保
存兩個字符
標準答案:c
知識點3析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲單元時.這些存
儲單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個元素賦初值。
數(shù)組初始化賦值是指在數(shù)組定義時給數(shù)組元素賦予初值。初始化賦值的一般形式
為:類型說明符數(shù)組名[常量表達式]={值,值,…,};。需要注意的是當(dāng)所賦初
值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息,在指定初值時,第一
個初值必定賦給下標為0的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素
逐個賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可以不
給出數(shù)組元素的個數(shù)。
13、若有以F程序#include〈stdio.h>intk=7,m=5;yoidflint**S){int*t=&k:
s=&t;*s=&m;printf(''%d,%d,%d,k,*t>**s);}main(){inti=3,*p=
&i,**r=&p;fir);printf(''%d,%d,%d\n”,i.*P,**r);}則程序的輸出結(jié)
果是
A、7,5,7,3,3,3,
B、7,5,7,3,5,7,
C^7,5,5,3,3,3,
D、7,7,5,3,3,3
標準答案:C
知識點解析:本題考查二級指針作為函數(shù)的參數(shù),可以通過函數(shù)調(diào)用來改變主函數(shù)
中一級指針的指向。主函數(shù)中指針變量p指向i,r指向p,調(diào)用f函數(shù),形參指針
s指向p,流程轉(zhuǎn)到f函數(shù)執(zhí)行,指針變量指向k,s指向3此時更改了s的指i,
uj,s指向了3更改了s指向的地址空間內(nèi)容為m的地址,同時[也指向變量m,
因此**s的值為m的值,%為m的值,k為7。流程返回到主函數(shù),沒有對主函數(shù)
空間的數(shù)據(jù)和指向作出更改,因此全部為3。
14、有以下程序#include#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<
N;i++){b[i]=a[i][0];for(j=1;j<N;j++)if(b[i]<a[i][j])b[i]=a[i][j];})main()
{intx|N||N]={1,2,3,4,5,6,7,8,9},y|N|,i;fun(x,y);for(i=0;i<N;
i++)printf(y[i]);printf(,'\nH);)程序運行后的輸出結(jié)果是
A、3,5,7
B、1,3,5,
C、2,4,8,
D、3,6,9,
標準答案:D
知識點解析:函數(shù)fun()的作用是求出二維數(shù)組中每一行中的最大元素,所以
在main。函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最
大元素。因此D選項正確。
15、以下敘述中錯誤的是
A、結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成
B、C語言是一種結(jié)構(gòu)化程序設(shè)計語言
C、使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題
D、結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法
標準答案:C
知識點解析:結(jié)構(gòu)化程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)3種基本結(jié)構(gòu)組成。已
經(jīng)證明,由3種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題。由3種基本結(jié)構(gòu)所
構(gòu)成的算法稱為結(jié)構(gòu)化算法;由3種基本結(jié)構(gòu)所構(gòu)成的程序稱為結(jié)構(gòu)化程序。
16、在以卜給出的表達式中,與while(E)中的(E)不等價的表達式是
A、(E>0IIE<0)
B、(!E==0)
C、(E!=0)
D、(E==0)
標準答案:A
知識點解析:在while(E)中p,表達式E可以是C語言中任意合法的條件表達式,
但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項A中表達式E〉0llE<0是一個邏
輯表達式。
17、由以下while構(gòu)成的循環(huán),循環(huán)體執(zhí)行的次數(shù)是intk=O;while(k=l)k++;
A、一次也不執(zhí)行
B、執(zhí)行一次
C、無限次
D、有語法錯,不能執(zhí)行
標準答案:C
知識點解析:循環(huán)條件表達式為賦值表達式k=-l,因此循環(huán)執(zhí)行無限次。
18、若有以下程序#includevoidf(intx){if(x>=10){printf("%d-u,
x%10);f(x/10);}elseprintf("%d",x);}main(){intz=123456;f(z);}則程序的輸出結(jié)
果是
A、6-5-4-3-2-1-
B、6-5-4-3-2-1
C、1-2-3-4-5-6
D、1-2-3-4-5-6-
標準答案:B
知識點解析:本題重點考察函數(shù)的遞歸調(diào)用,程序首先初始化整型變量z為
123456,調(diào)用函數(shù)f。f函數(shù)中首先通過if條件語句判斷x是否大于等于10,如果
條件成立,求x除以10的余數(shù)并輸出,同時將變量x進行x/10運算,同時調(diào)用函
數(shù)f。如果條件不成立,直接輸出變量X。因此第I次調(diào)用函數(shù),變量x為
123456,條件成立,輸出余數(shù)6;第2次調(diào)用函數(shù),變量x為12345,條件成立,
輸出余數(shù)5;第3次調(diào)用函數(shù),變量x為1234,條件成立,輸出余數(shù)4;第4次調(diào)
用函數(shù),變量x為123,條件成立,輸出余數(shù)3;第5次調(diào)用函數(shù),變量x為12,
條件成立,輸出余數(shù)2;第6次調(diào)用函數(shù),變量x為12345,條件不成立,輸巴
10因此B選項正確。
19、有以下程序voidfunl(char*p)main。{char*q;{chara||={"Program"),*p;
q=p;p=&a[3];funl(p);printf("%s\n'\a);while(*q!='\O')}{(*q)++;
q++;}}程序執(zhí)行后的輸出結(jié)果是
A、Prphsbn
B、Prohsbn
C>Progsbn
D>Program
標準答案:B
知識點解析:在函數(shù)voidfunl(char*p)中,語句(*q)++的功能是q所指的字符加1,
變成其后面的字符:q++就是指針q指向下一個字符的位置。所以在主函數(shù)中,語
句p=&a[3]的作用是使指針p指向字符數(shù)組叫中的第四個字符的位置,即D指向
字符'g':然后調(diào)用函數(shù)funl(p)后,字符g變成什,字符T變成",字符'a,變
成字符,變成因而字符數(shù)組a|]中的內(nèi)容就成“Prohshn”。
20、設(shè)有定義語句int(*f)(int);則以下敘述正確的是
A、f是基類型為int的指針變量
B、f是指向int類型一維數(shù)組的指針變量
C、f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參
D、f是函數(shù)名,該函數(shù)的返回值是基類型為in[類型的地址
標準答案:C
知識點解析:定義語句int(*f)(int)中f是指向函數(shù)的指針變量,該函數(shù)中也只有一
個int型的形參。
21、有以卜程序#includemain(){inta,b;for(a=l,b=l;a<=100;a++){if(b>=20)
break;if(b%3==1){b=b+3;continue;)b=b-5;)printf("%d\n",a);}程序的輸出結(jié)果
是
A、10
R、9
C、8
D、7
標準答案:B
知識點解析:首先注意f。「循環(huán)的控制條件當(dāng)b>=20或者a>100則跳出for循環(huán)
也即b<20且a<=100時執(zhí)行for循環(huán);第一次進入循環(huán)a=l,b=l均滿足循環(huán)條
件,但b%3==l條件滿足,故執(zhí)行b=b+3,得到b=4,注意有continue,所以后面語
句不執(zhí)行,直接跳轉(zhuǎn)到a++這個語句,所以第一次循環(huán)完之后a=2,b=4;進入第二
輪循環(huán),b%3==l也是滿足的,故再次b=b+3,此輪循環(huán)執(zhí)行之后a=3,b=7,進入下
一輪。此后和前面循環(huán)同理,都是b%3==l滿足,因為每次都是加3,而之后乂去
模3,且都跳過for后面語句直接執(zhí)行a++,所以,一直循環(huán)到b=22跳出而循
環(huán)。此時a為8.綜合起來就是,每次循環(huán)b增加3,a增加1,且當(dāng)b>22時跳出循
環(huán),結(jié)束程序。所以b從1增加到22,有(22-1)<3=7,所以a=1+7=8.因此B選項
正確。
22、以下敘述中正確的是()。
A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己
B、任何情況下都不能用函數(shù)名作為實參
C、函數(shù)的遞歸調(diào)用不需要額外開銷,所以效率很高
D、簡單遞歸不需要明確的結(jié)束遞歸的條件
標準答案:A
知識點解析:函數(shù)之間可以嵌套調(diào)用,選項A)描述正確;函數(shù)名可以作為實參,
實際傳遞的是該函數(shù)的返回值,選項B)錯誤;遞歸調(diào)用也是函數(shù)調(diào)用,每次調(diào)用
的時候也需要記錄每一層的返回點,也要增加許多額外的開銷的,選項C)錯誤;
遞歸調(diào)用和循環(huán)很相似,為了防止遞歸調(diào)用無休止地進行,必須在函數(shù)內(nèi)添加明確
的結(jié)束條件,選項D)錯誤;答案選A)。
23、下列與隊列結(jié)構(gòu)有關(guān)聯(lián)的是
A、函數(shù)的遞歸調(diào)用
B、數(shù)組元素的引用
C、多重循環(huán)的執(zhí)行
D、先到先服務(wù)的作業(yè)調(diào)度
標準答案:D
知識點解析:隊列的修改是依先進先出的原則進行的,D正確。
24、以下能正確定義字符串的語句是
A^charstr="\x43H;
B、charstr[]="\O";
C、charstr='';
D、charstr[]={,\064,};
標準答案:B
知識點解析:C語言中,字符串是用一對雙引號括起來的字符序列,并用字符型數(shù)
組來存放.故C選項和D選項不屬十字符串
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國手繪女褲市場調(diào)查研究報告
- 2025至2030年中國手持式光罩條碼閱讀器行業(yè)發(fā)展研究報告
- 2025至2030年中國懸掛架用組件行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國微波等離子體放電腔數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國彩色鋼板巖棉夾芯板行業(yè)發(fā)展研究報告
- 2025至2030年中國彩晶漆數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國建筑鋼模板行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國平鋁梯行業(yè)發(fā)展研究報告
- 2025至2030年中國帶電工裝板總裝線數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國工藝彩砂市場分析及競爭策略研究報告001
- 普通高中學(xué)業(yè)水平合格性考試(會考)語文試題(附答案)
- 戰(zhàn)場態(tài)勢認知理論與方法
- 綠化租擺服務(wù)投標方案技術(shù)標
- JB-T 4149-2022 臂式斗輪堆取料機
- 裝配式建筑預(yù)制構(gòu)件的生產(chǎn)制作
- 托育中心年度工作總結(jié)(21篇)
- 排水工程安全施工措施及安全操作規(guī)程
- 2023年婁底市生地會考綜合真題卷
- 語文新課標背景下:六下四單元《古詩三首》情境任務(wù)型教學(xué)設(shè)計
- 鋼結(jié)構(gòu)桁架吊裝安裝專項施工方案30
評論
0/150
提交評論