版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年內(nèi)蒙古自治區(qū)錫林郭勒盟全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)有如下定義:intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()。
A.1B.0C.4D.3
2.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的運(yùn)行結(jié)果是()。
A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,
3.函數(shù)fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始點(diǎn)是()。
A.文件開始B.文件末尾C.文件當(dāng)前位置D.以上都不對
4.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達(dá)式x+a%3*(int)(x+y)%2/4的值是()。
A.2.4B.2.5C.2.75D.0
5.有以下函數(shù):intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函數(shù)的功能是()。A.將y所指字符串賦給x所指存儲空間
B.查找和y所指字符串中是否有‘\0’
C.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)
D.統(tǒng)計x和y所指字符串中相同的字符個數(shù)
6.
7.若一棵二叉樹具有10個出度為2的結(jié)點(diǎn),則在該二叉樹中,出度為0的結(jié)點(diǎn)個數(shù)是()
A.9B.11C.12D.不確定
8.軟件生命周期中所花費(fèi)用最多的階段是()。
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
9.
10.程序調(diào)試的任務(wù)是()。
A.設(shè)計測試用例B.驗(yàn)證程序的正確性C.發(fā)現(xiàn)程序中的錯誤D.診斷和改正程序中的錯誤
11.若有下面的說明和定義
structtest
{intml;charm2;floatm3;
unionuu{charul[5];intu2[2];}ua;
}myaa;
則sizeof(structtest)的值是A.A.12B.16C.14D.9
12.
13.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。
A.#definen5inta[2*n];
B.intn=10,a[n];
C.inta[5+5];
D.#defineN10inta[N];
14.有下列程序:intfunl(doublea){returna*=a;)intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……)程序執(zhí)行后變量w中的值是()。A.5.21B.5C.5.0D.0.0
15.
16.
17.折半查找的時間復(fù)雜性為()
A.O(n2)B.O(n)C.O(nlogn)D.O(logn)
18.若有以下說明和定義:則對函數(shù)fun的正確調(diào)用語句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);
19.C語言中的變量名只能由字母,數(shù)字和下劃線三種字符組成,且第一個字符()。
A.必須為字母B.必須為下劃線C.必須為字母或下劃線D.可以是字母,數(shù)字或下劃線中的任意一種
20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10
二、2.填空題(20題)21.以下程序的運(yùn)行結(jié)果是【】。
main()
{char*k="aeiou";
for(;*k;k++)printf("%c",*k);
}
22.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>
strcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;}
return(num);
}
23.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實(shí)現(xiàn)。
24.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。
25.下列程序的輸出結(jié)果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
26.語句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)。
27.長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數(shù)為【】。
28.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{charc;intn=100;
floatf=10;doublex;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
}
29.以下程序運(yùn)行后的輸出結(jié)果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
30.以下程序的輸出結(jié)果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
31.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
32.下面的if語句與y=(x>=10)?3*x-11:(x<1)?x:2*x-1;的功能相同,請補(bǔ)充完整。
if(______)
if(______)y=2*x-1;
elsey=x;
elsey=3*x-11;
33.下面的程序可列指定字符串中的字符串進(jìn)行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
34.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。
35.以下程序運(yùn)行后的輸出結(jié)果是()。
#include<stdio.h>
main()
{intx=20;
printf("%d",0<x<20);
printf("%d\n",0<x&&x<20);
}
36.在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多為【】。
37.下列程序的功能是輸入一個整數(shù),判斷其是否是素數(shù),若為素數(shù)則輸出1,否則輸出0。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,x,y=1;
scanf("%d",&x);
for(i=2;i<=x/2;i++)
if【】{y=0;break;}
printf("%d\n",y);
}
38.以下sum函數(shù)的功能是計算下列級數(shù)之和。請給函數(shù)中的各變量正確賦初值。
doublesum(doublex,intn)
{inti;doublea,b,s;
for(i=1;i<=n;i++)
{a=a*x;b=b*i;s=s+a/b;}
returns;
}
39.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
40.在面向?qū)ο蟮姆椒ㄖ校琠_____描述的是具有相似屬性與操作的一組對象。
三、1.選擇題(20題)41.數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲
42.下列敘述錯誤的是()。
A.在C語言中的保留字必須小寫
B.變量的存儲類型決定了變量的存儲位置及其生存期
C.宏定義以#define開頭,行末必須加分號
D.在C語言中的注釋行可以出現(xiàn)在程序的任何位置
43.下列選項中不能正確定義結(jié)構(gòu)體的是_______。
A.typedefstruct
B.structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;}COLOR;};COLORcl;
C.structcolor
D.struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;
44.以下合法的賦值語句是______。
A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)
45.對長度為N的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為______。A.N+1B.NC.(N+1)/2D.N/2
46.關(guān)系代數(shù)運(yùn)算是以______為基礎(chǔ)的運(yùn)算。
A.關(guān)系運(yùn)算B.謂詞運(yùn)算C.集合運(yùn)算D.代數(shù)運(yùn)算
47.字長為32位的計算機(jī)是指()
A.該計算機(jī)中的CPU有32個寄器
B.該計算機(jī)能夠處理的最大數(shù)不超過232
C.該計算機(jī)每秒鐘所能執(zhí)行的指令條數(shù)為32MIPS
D.該計算機(jī)中的CPU可以相同時處理32位的二進(jìn)制數(shù)
48.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
49.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的()。A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)
50.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖牵ǎ?/p>
A.多態(tài)性B.標(biāo)識惟一性C.封裝性D.耦合性
51.字長為16位的計算機(jī)是指______。
A.該計算機(jī)能夠處理的最大數(shù)不超過16
B.該計算機(jī)中的CPU可以同時處理16位的二進(jìn)制信息
C.該計算機(jī)的內(nèi)存量為16MB
D.該計算機(jī)每秒鐘所能執(zhí)行的指令條數(shù)為16MIPS
52.數(shù)據(jù)庫管理系統(tǒng)提供給用戶的接口是()
A.過程化語言B.數(shù)據(jù)庫語言C.宿主語言D.面向?qū)ο笳Z言
53.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
54.下列程序的輸出結(jié)果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}
A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi
55.以下選項中,不能作為合法常量的是
A.1.23E+04B.1.234e0.4C.1.23E+04D.1.23E+00
56.請讀程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的輸出結(jié)果是()
A.34756B.23445C.35745D.12345
57.設(shè)有以下語句
typedefstructS
{intg;charh;}T;
則下面敘述中正確的是()A.可用S定義結(jié)構(gòu)體變量B.可以用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量
58.模塊本身的內(nèi)聚是模塊獨(dú)立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強(qiáng)內(nèi)聚的—類是______。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
59.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}該程序中的for循環(huán)執(zhí)行的次數(shù)是______。
A.5B.6C.7D.8
60.設(shè)x、y、t均為int型變量,則執(zhí)行語句x=y=3;t=++x||++y;后,y的值為______。
A.不定值B.4C.3D.1
四、選擇題(20題)61.下列可用于C語言用戶標(biāo)識符的一組是()。
A.void,define,WORD
B.a3_3,_123,Car
C.For,-abc,IFCase
D.2a,DO,sizeof
62.信息隱蔽的概念與下述哪一種概念直接相關(guān)()。
A.軟件結(jié)構(gòu)定義B.模塊獨(dú)立性C.模塊類型劃分D.模塊耦合度
63.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運(yùn)行后的輸出結(jié)果是______。
A.12353514B.12353513C.12343514D.12343513
64.軟件詳細(xì)設(shè)計產(chǎn)生的圖如下:該圖是()。
A.N—s圖B.PAD圖C.程序流程圖D.E—R圖
65.
66.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.1.1.3B.2,2,3C.1,2,3D.3,3,3
67.有以下程序
68.
69.有如下嵌套的語句
70.下列關(guān)于結(jié)構(gòu)化設(shè)計原則的描述,錯誤的是
A.在塊和進(jìn)程的非正常出口處往往需要調(diào)用GOTO語句,使用GOTO語句使程序執(zhí)行效率提高,但是濫用GOTO語句確實(shí)有害,應(yīng)該避免使用GOTO語句
B.程序設(shè)計時應(yīng)該自頂向下,逐步求精
C.程序設(shè)計時,應(yīng)該將復(fù)雜問題進(jìn)行模塊化,就是將程序設(shè)計的總目標(biāo)分解為若干個分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo)
D.在進(jìn)行程序設(shè)計時,應(yīng)該盡量在一行寫一條語句,盡量做到效率第一,清晰第二
71.
72.下列哪個不屬于DOM元素結(jié)點(diǎn)類型?
A.元素結(jié)點(diǎn)B.文本結(jié)點(diǎn)C.屬性結(jié)點(diǎn)D.樣式結(jié)點(diǎn)
73.已知數(shù)據(jù)表A中每個元素距其最終位置不遠(yuǎn),為節(jié)省時間,應(yīng)采用的算法是()
A.堆排序B.直接插入排序C.快速排序D.直接選擇排序
74.在E—R圖中,用來表示實(shí)體的圖形是()。
A.矩形B.橢圓形C.菱形D.三角形
75.兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結(jié)果是()。
if(x++>5)printf("%d",x);
elseprintf("%d\n",x--);
A.7和5B.6和3C.7和4D.6和4
76.在長度為n的有序線性表中進(jìn)行二分查找,最壞情況下需要比較的次數(shù)是()。
A.0(n)B.D(n2)C.O(1092n)D.0(nl092n)
77.
78.
79.在滿足實(shí)體完整性約束的條件下()。
A.一個關(guān)系中廊該有一個或多個候選關(guān)鍵字
B.一個關(guān)系中只能有一個候選關(guān)鍵字
C.一個關(guān)系中必須有多個候選關(guān)鍵字
D.一個關(guān)系中可以沒有候選關(guān)鍵字
80.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運(yùn)行結(jié)果是()。A.741B.963C.852D.875421
五、程序改錯題(1題)81.下列給定程序是建立一個帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)proc()的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,函數(shù)fmi()的功能是將a、b中的兩個正整數(shù)合并成一個新的整數(shù)存放在c中。合并的方式是將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,a=45,b=12,調(diào)用該函數(shù)后,c=5241。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.D
2.A本題由fun函數(shù)可知,執(zhí)行for循環(huán),當(dāng)i=0時,b[0]=a[0][0]-a[0][3]=1-4=-3;當(dāng)i=1時,b[1]=a[1][1]-a[1][2]=6-7=-1;當(dāng)i=2時,b[2]=a[2][2]-a[2][1]=11-10=1;當(dāng)i=3時,b[3]=a[3][3]-a[3][0]=16-13=3。主函數(shù)中輸出y數(shù)組元素的值為:-3,-1,1,3。故本題答案為A選項。
3.BSEEK_SET代表文件的開始,SEEK_END代表文件末尾,SEEK_CUR代表文件當(dāng)前位置。
4.B
5.C本題中由循環(huán)條件可知遇到‘\\0’或x與y所指的字符的值不等中的一個條件時就結(jié)束,所以功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)。
6.C
7.B
8.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)3個階段。本題中,詳細(xì)設(shè)計、軟件編碼和軟件測試都屬于軟什開發(fā)階段;維護(hù)是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費(fèi)代價最大的一個階段.軟件工程學(xué)的一個目的就是提高軟件的可維護(hù)性,降低維護(hù)的代價。
9.A
10.D程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。
11.A
12.D
13.B一維數(shù)組定義的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]。注意定義數(shù)組時,元素個數(shù)不能是變量。故本題答案為B選項。
14.C子函數(shù)fun1(doublea)的功能是返回a的平方值的整數(shù)部分。子函數(shù)fun2(doublex,doubley)的功能是返回X的平方值的整數(shù)部分與Y的平方值的整數(shù)部分的和。又因?yàn)轭}中變量w的定義為double型,函數(shù)fun(2)的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算,整型數(shù)據(jù)被轉(zhuǎn)換為實(shí)型數(shù)據(jù)。所以雙精度型變量w的值為5.0。
15.C
16.D
17.D
18.A題干中,函數(shù)fun接收一個整型指針參數(shù),返回值為int類型。main函數(shù)首先定義一個函數(shù)指針a,將函數(shù)fun的地址賦給a,所以a是指向函數(shù)fun的指針,可以通過a調(diào)用函數(shù)fun。選項A中,通過a調(diào)用函數(shù)fun,可以使用(*a),接收的參數(shù)是整型變量c的地址,正確;選項B中,參數(shù)x是一個數(shù)組,錯誤;選項C中,調(diào)用b函數(shù),由于程序沒有給出函數(shù)b的定義,因此這里調(diào)用b是錯誤的,而且函數(shù)b是沒有參數(shù)的,這里調(diào)用b的時候傳入了參數(shù),所以C錯誤;選項D中,由于b是一個函數(shù),不能作為整型指針變量傳給fun函數(shù),因此D錯誤。本題答案為A選項。
19.C
20.Bstrlen是求字符串的長度,結(jié)果為4,sizeof是求數(shù)組的長度,而數(shù)據(jù)在定義時已給出長度為10。
21.aeiou
22.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1
23.測試實(shí)例測試實(shí)例解析:進(jìn)行軟件測試時,應(yīng)精心設(shè)計測試實(shí)例和選擇測試數(shù)據(jù),以對系統(tǒng)進(jìn)行全面測試。
24.概念(或概念級)概念(或概念級)
25.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達(dá)式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。
26.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標(biāo)識符(*指針變量名)()。注:“類型標(biāo)識符”為函數(shù)返回值的類型。
27.n/2性表的任何位置插入一個元素的概率相等,即概率為p=1/(n+1),則插入一個元素時所需移動元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。
28.220.000000220.000000解析:注意區(qū)分運(yùn)算符的優(yōu)先級。先是給c賦值,然后計算x=f*=n/=50,得x=f*=2,最后有x=20。x輸出是按浮點(diǎn)數(shù)的形式輸出的,小數(shù)點(diǎn)后的0不能少。
29.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),m[2].k=4。所以最后輸出為13431。
30.1010解析:整型指針最初被賦的值是數(shù)組arr的頭指針,即指向數(shù)組的第一個元素30,p++后,指針指向數(shù)組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當(dāng)于a[1+3],即10。因此,輸出應(yīng)為100。
31.98768769876\r\n876解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:
類型說明符*指針變量名;
32.x<10x>=1
33.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實(shí)現(xiàn)過程是將相鄰兩個字符進(jìn)行比較,如果當(dāng)前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+l]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。
34.軟件工程學(xué)軟件工程學(xué)
35.1010解析:表達(dá)式0<x<20,首先計算0<x,其值為1,再計算1<20,其值為1,輸出1;表達(dá)式0<x&&x<20,0<x為1,x<20為0,再計算1&&0,其值為0,輸出0。所以輸出結(jié)果為10。
36.1515解析:在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多的是深度為5的滿二叉樹。在深度為5的滿二叉樹中,前4層中所有結(jié)點(diǎn)的度為2。即在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多相當(dāng)于深度為4的滿二叉樹中的結(jié)點(diǎn)數(shù)。深度為4的滿二叉樹中的結(jié)點(diǎn)數(shù)為24(上標(biāo))-1=15。
37.(x%i==0)(x%i==0)解析:為判數(shù)x是否是素數(shù),預(yù)置變量y的值為1(x可能是素數(shù)),然后用2至x/2的整數(shù)i測試對x的整除性,若x能被其中的某個整數(shù)整除,則x是合數(shù),置y的值為0(即x不是素數(shù)),結(jié)束循環(huán)測試;若循環(huán)中i都不能整除x,則x為素數(shù)。一般可用求余運(yùn)算x%i是否等于0來判定i能否整除x,所以程序中的空格處可填(x%i==0)。
38.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或給abs賦1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或給a,b,s賦1或1.0或1.解析:sum函數(shù)的功能是求表達(dá)式s的級數(shù)之和,該函數(shù)的大致思路是:在該函數(shù)中,定義了—個整型變量i用作循環(huán)計數(shù)器,定義一個變量a用來表示各個子項的分子,初始為第一個子項的分子,故為1,定義了一個變量b用來表示各個子項大分母,初始為第一個子項的分母,故為1,定義一個變量s存放累加和,初始為第一個子項的值即為1,然后給各個定義的變量初始化,然后通過一個for循環(huán)將題目中的數(shù)學(xué)表達(dá)式的各個子項求出來并累加到s中,所以說,在該題的空格處應(yīng)該填寫將a、b和s賦初值的語句,即為a=1;b=1;s=1:(說明:語句的順序可任意)或a=b=s=1;(說明:變量的順序可任意)或a=1,b=1,s=1(說明:賦值表達(dá)式的順序可任意)給a,b,s賦1或1.0或1都可以。
39.調(diào)試調(diào)試
40.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實(shí)例。
41.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計算機(jī)中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。
42.C解析:本題涉及C語言最基本的4個知識點(diǎn):①C語言的保留字必須小寫;②變量的存儲類型不同,其存儲位置和生存期也不一樣:③C語言允許其注釋部分出現(xiàn)在程序中的任何位置;④宏定義以#define開頭,行末不需要加分號。
43.B解析:將一個變量定義為標(biāo)準(zhǔn)類型與定義為結(jié)構(gòu)體類型不同之處在于:后者不僅要求指定變量為結(jié)構(gòu)體類型,而且要求指定為某一特定的結(jié)構(gòu)體類型(例如,structcolor),不能只指定結(jié)構(gòu)體名。其中可以不出現(xiàn)結(jié)構(gòu)體名,答案D就是缺省結(jié)構(gòu)體名的隋況。而變量名歹婊必須放在成員列表后面,所以B答案不能正確將cl定義為結(jié)構(gòu)件變量。
44.B解析:本題中的答案A與D都缺少“;”,而答案C中,表達(dá)式是不能獨(dú)立成為語句的,答案B使用了C語言的自減運(yùn)算符它就相當(dāng)于D=D-1,所以答案B為一賦值語句。
45.B解析:在進(jìn)行順序查找過程中,如果被查的元素是線性表中的最后一個,或者被查元素根本不性表中,則為了查找這個元素需要與線性表中所有元素進(jìn)行比較,這是順序查找最壞的情況。
46.C解析:關(guān)系代數(shù)是以集合代數(shù)為基礎(chǔ)女發(fā)展起來的,它是以關(guān)系代數(shù)作為運(yùn)算對象的一組高級運(yùn)算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包括針對數(shù)據(jù)庫環(huán)境專門設(shè)計的操作,包括對關(guān)系進(jìn)行垂直分割(投影)、水平分割(選擇)、關(guān)系的結(jié)合(連接)等。
47.D
48.A解析:函數(shù)定義時如果數(shù)據(jù)類型默認(rèn),則默認(rèn)為int。函數(shù)中如果有“retum(表達(dá)式):”語句,表達(dá)式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實(shí)際情況是把表達(dá)式轉(zhuǎn)換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。
49.C數(shù)據(jù)結(jié)構(gòu)概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)(物理結(jié)構(gòu))及數(shù)據(jù)上的運(yùn)算集合。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,即數(shù)據(jù)元素之間的前后件關(guān)系,而不管它在計算機(jī)中的存儲表示形式。
50.DD)【解析】面向?qū)ο笤O(shè)計方法與面向過程設(shè)計方法有本質(zhì)不同,其基本原理是:使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題。其特點(diǎn)包括:標(biāo)識惟一性、多態(tài)性、封裝性、模塊獨(dú)立性、繼承和多態(tài)性好。
51.B解析:字長是指CPU可以同時處理二進(jìn)制的位數(shù),是由CPU的型號和類型決定的。
52.C
53.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計的常用工具,不是需求分析的工具。
54.A
55.B解析:C語言的語法規(guī)定,字母e(E)之前必須有數(shù)字,且e(E)后面的指數(shù)必須是整數(shù),而選項B)中,e(E)后面的指數(shù)是小數(shù),所以不合法。
56.C
57.B解析:結(jié)構(gòu)體類型的定義格式為:
strcut結(jié)構(gòu)體名
{成員說明列表};
結(jié)構(gòu)體變量的定義有3種形式:第一種:定義結(jié)構(gòu)體型的同時定義結(jié)構(gòu)體變量如:strcut結(jié)構(gòu)體名{成員說明列表}變量;第二種先定義一個結(jié)構(gòu)體類型,然后使用該類型來定義結(jié)構(gòu)體變量,如:strcutstudent{成員說明列表):student變量;第三種:定義一個無名稱的結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,如:Strctstudent{成員說明列表}變量。和上面三種情況比較我們不難得知只有選項B是正確的。所以,4個選項中選項B符合題意。
58.D解析:內(nèi)聚性是一個模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強(qiáng)排列順序?yàn)椋号既粌?nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。
59.B解析:該題目測試考生對宏替換的理解。這是一種簡單的情況:不帶參數(shù)的宏。關(guān)鍵要注意在對2*M+1進(jìn)行宏替換時,要將宏名M原封不動地代進(jìn)去,得到NUM的形式為2*N+1+1(千萬不要隨意給N+1加上小括號,使NUM變?yōu)?。(N+1)+1,這就是宏名和變量名之間的區(qū)別),在將N代進(jìn)去,得到NUM的值為6。
60.C解析:++高于=和||,=的優(yōu)先級最低。而||為自左向右的結(jié)合性,因此先計算表達(dá)式++x的值,x的初值為3,3+1=4,4為非零值,不必再計算||右側(cè)表達(dá)式的值,即可得到整個邏輯表達(dá)式的值1,++y沒有做運(yùn)算,仍為原值3,所以,選項C正確。
61.B解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線,排除選項C)和D);C語言中還規(guī)定標(biāo)識符不能為C語言的關(guān)鍵字,而選項A)中void為關(guān)鍵字,故排除選項A)。
62.B解析:信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。衡量軟件的模塊獨(dú)立性的度量標(biāo)準(zhǔn)是耦合性和內(nèi)聚性。一個模塊的耦合性越強(qiáng),則該模塊的模塊獨(dú)立性越強(qiáng)。
63.A解析:自增運(yùn)算符“++”,放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。第一條輸出語句,先輸出m=12,m再自加1,變成13,n先自加1再輸出,輸出n=35;第二條輸出語句,先輸出n=35,n再自加1,變成36,m先自加1再輸出,輸出m=14。
64.C\nN—S圖(也稱h盒圖或CHAPIN圖)和PAD(問題分析圖)及PFD(程序流程圖)是詳細(xì)設(shè)計階段的常用工具,E—R圖即實(shí)體-聯(lián)系圖是數(shù)據(jù)庫設(shè)計的常用工具。從題中圖可以看出該圖屬于程序流程圖。
\n
65.C
66.DmaUoc函數(shù)動態(tài)分配一個整型的內(nèi)存空間,然后把函數(shù)返回的地址用(int{)強(qiáng)制類型轉(zhuǎn)換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c都指向剛申請的內(nèi)存空間。所以只有最后一個賦值語句+C=3的值保留在了該空間內(nèi),因?yàn)閍、b、C三個指針變量均指向該空間,所以打印該空間內(nèi)的數(shù)值為3。
67.Afor分別輸/klt[2][01,till[1],t[0][2]分別為357,答案選擇A)。
68.A
69.Aif\r\nelse語句和“?:”可以互換,?前語句相當(dāng)于i垢括號內(nèi)容,?后語句相當(dāng)于i垢的執(zhí)行語句,冒號后語句相當(dāng)于else后語句,綜合以上可以看出A)符合題意。
70.D在結(jié)構(gòu)化程序設(shè)計過程中,我們可以根據(jù)下面的原則進(jìn)行:
(1)使用語言中的順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等有限的基本控制結(jié)構(gòu)表示程序邏輯。
(2)選用的控制結(jié)構(gòu)只準(zhǔn)許有一個入口和一個出口。
(3)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)。
(4)語言中沒有的控制結(jié)構(gòu)可以用一段等價的程序段來模擬,但是要求程序段在整個系統(tǒng)中前后一致。
(5)嚴(yán)格限制GOTO語句。
(6)在編寫程序時,強(qiáng)調(diào)使用幾種基本的控制結(jié)構(gòu),通過組合嵌套,形成程序的控制結(jié)構(gòu)。
(7)在程序設(shè)計過程中,盡量采用自頂向下和逐步細(xì)化的原則,由粗到細(xì),一步步展開。把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而翻譯成一系列用某種程序設(shè)計語言寫成的源程序。
總之,在結(jié)構(gòu)化程序設(shè)計的過程中,要將清晰放在第一位。因此,本題中的答案D是不正確的。
71.C
72.D
73.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的過程是:先建一個堆,輸出堆頂?shù)淖畲蠡蜃钚〉脑兀賹⑹S嗟膎-1個元素重新調(diào)整成一個新堆。如此反復(fù)進(jìn)行,直到排序完成。
直接插入排序是一種最簡單的排序方法,它的基本操作是將一個記錄插入到已排好的有序表中,從而得到一個新的、記錄數(shù)增1的有序表。首先,將序列中的第1個記錄看成是一個有序的子序列,然后從第2個記錄起逐個進(jìn)行插入,直至整個序列變成按關(guān)鍵字非遞減有序序列為止。
快速排序是對冒泡排序的一種改進(jìn)。它的基本思想是通過一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,則可以分別對這兩部分記錄繼續(xù)進(jìn)行排序,以達(dá)到整個序列有序。
直接選擇排序是通過n-i次關(guān)鍵字間的比較,從n-i+1個記錄中選出關(guān)鍵字最小的一個記錄,并和第i個記錄交換。這樣重復(fù)執(zhí)行n-1趟選擇排序。
在本題中,數(shù)據(jù)表A中每個元素距其最終位置不遠(yuǎn),即說明數(shù)據(jù)表基本有序,簡單移動一些元素即可完成排序,在這種情況下,使用直接插入排序法所需時間最少,最合理。因此本題的正確答案是B。
\r\n\r\n\r\n
74.AA。【解析】在E—R圖中,矩形表示實(shí)體;菱形表示聯(lián)系名;橢圓形表示實(shí)體的屬性。
75.C
76.C當(dāng)有序線性表為順序存儲時才能用二分法查找。可以證明的是對于長度為n的有序線性表,在最壞情況下,二分法查找只需要比較l092n次,而順序查找需要比較n次。
77.D
78.B
79.A實(shí)體完整性約束要求關(guān)系的主鍵中屬性值不能為空值,因此本題答案為A)。
80.C在for循環(huán)中,當(dāng)y的值為9、6或3時,執(zhí)行輸出語句,輸出表達(dá)式--Y的值。Y先自減l,然后再輸出y的值。
81.(1)錯誤:proc(NODE*h)
正確:intproc(NODE*h)
(2)錯誤:P=h->next;
正確:P=p->next;
【解析】根據(jù)題意,將數(shù)據(jù)域中的最大值作為函數(shù)值返回,可知函數(shù)proc()有一個整型的返回值,因此“proc(NODE*h)”應(yīng)改為“intproe(NODE*h)”;每執(zhí)行完一次循環(huán),指針P指向其本身結(jié)點(diǎn)的下一個結(jié)點(diǎn),因此,“P=h->next”應(yīng)改為“P=P->next”。
82.1voidfun(inta,intb,long*c)2{3*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);4}本題給出兩個兩位數(shù)的正整數(shù)。分別取出兩個數(shù)各位上的數(shù)字,再按條件組成一個新數(shù)。取整數(shù)a十位數(shù)的方法為a/10,取整數(shù)a個位數(shù)的方法為a%10。同理可取出整數(shù)b的個位數(shù)和十位數(shù)。2021年內(nèi)蒙古自治區(qū)錫林郭勒盟全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)有如下定義:intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()。
A.1B.0C.4D.3
2.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的運(yùn)行結(jié)果是()。
A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,
3.函數(shù)fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始點(diǎn)是()。
A.文件開始B.文件末尾C.文件當(dāng)前位置D.以上都不對
4.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達(dá)式x+a%3*(int)(x+y)%2/4的值是()。
A.2.4B.2.5C.2.75D.0
5.有以下函數(shù):intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函數(shù)的功能是()。A.將y所指字符串賦給x所指存儲空間
B.查找和y所指字符串中是否有‘\0’
C.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)
D.統(tǒng)計x和y所指字符串中相同的字符個數(shù)
6.
7.若一棵二叉樹具有10個出度為2的結(jié)點(diǎn),則在該二叉樹中,出度為0的結(jié)點(diǎn)個數(shù)是()
A.9B.11C.12D.不確定
8.軟件生命周期中所花費(fèi)用最多的階段是()。
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
9.
10.程序調(diào)試的任務(wù)是()。
A.設(shè)計測試用例B.驗(yàn)證程序的正確性C.發(fā)現(xiàn)程序中的錯誤D.診斷和改正程序中的錯誤
11.若有下面的說明和定義
structtest
{intml;charm2;floatm3;
unionuu{charul[5];intu2[2];}ua;
}myaa;
則sizeof(structtest)的值是A.A.12B.16C.14D.9
12.
13.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。
A.#definen5inta[2*n];
B.intn=10,a[n];
C.inta[5+5];
D.#defineN10inta[N];
14.有下列程序:intfunl(doublea){returna*=a;)intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……)程序執(zhí)行后變量w中的值是()。A.5.21B.5C.5.0D.0.0
15.
16.
17.折半查找的時間復(fù)雜性為()
A.O(n2)B.O(n)C.O(nlogn)D.O(logn)
18.若有以下說明和定義:則對函數(shù)fun的正確調(diào)用語句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);
19.C語言中的變量名只能由字母,數(shù)字和下劃線三種字符組成,且第一個字符()。
A.必須為字母B.必須為下劃線C.必須為字母或下劃線D.可以是字母,數(shù)字或下劃線中的任意一種
20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10
二、2.填空題(20題)21.以下程序的運(yùn)行結(jié)果是【】。
main()
{char*k="aeiou";
for(;*k;k++)printf("%c",*k);
}
22.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>
strcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;}
return(num);
}
23.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實(shí)現(xiàn)。
24.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。
25.下列程序的輸出結(jié)果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
26.語句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)。
27.長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數(shù)為【】。
28.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{charc;intn=100;
floatf=10;doublex;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
}
29.以下程序運(yùn)行后的輸出結(jié)果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
30.以下程序的輸出結(jié)果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
31.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
32.下面的if語句與y=(x>=10)?3*x-11:(x<1)?x:2*x-1;的功能相同,請補(bǔ)充完整。
if(______)
if(______)y=2*x-1;
elsey=x;
elsey=3*x-11;
33.下面的程序可列指定字符串中的字符串進(jìn)行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
34.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。
35.以下程序運(yùn)行后的輸出結(jié)果是()。
#include<stdio.h>
main()
{intx=20;
printf("%d",0<x<20);
printf("%d\n",0<x&&x<20);
}
36.在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多為【】。
37.下列程序的功能是輸入一個整數(shù),判斷其是否是素數(shù),若為素數(shù)則輸出1,否則輸出0。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,x,y=1;
scanf("%d",&x);
for(i=2;i<=x/2;i++)
if【】{y=0;break;}
printf("%d\n",y);
}
38.以下sum函數(shù)的功能是計算下列級數(shù)之和。請給函數(shù)中的各變量正確賦初值。
doublesum(doublex,intn)
{inti;doublea,b,s;
for(i=1;i<=n;i++)
{a=a*x;b=b*i;s=s+a/b;}
returns;
}
39.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
40.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。
三、1.選擇題(20題)41.數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲
42.下列敘述錯誤的是()。
A.在C語言中的保留字必須小寫
B.變量的存儲類型決定了變量的存儲位置及其生存期
C.宏定義以#define開頭,行末必須加分號
D.在C語言中的注釋行可以出現(xiàn)在程序的任何位置
43.下列選項中不能正確定義結(jié)構(gòu)體的是_______。
A.typedefstruct
B.structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;}COLOR;};COLORcl;
C.structcolor
D.struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;
44.以下合法的賦值語句是______。
A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)
45.對長度為N的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為______。A.N+1B.NC.(N+1)/2D.N/2
46.關(guān)系代數(shù)運(yùn)算是以______為基礎(chǔ)的運(yùn)算。
A.關(guān)系運(yùn)算B.謂詞運(yùn)算C.集合運(yùn)算D.代數(shù)運(yùn)算
47.字長為32位的計算機(jī)是指()
A.該計算機(jī)中的CPU有32個寄器
B.該計算機(jī)能夠處理的最大數(shù)不超過232
C.該計算機(jī)每秒鐘所能執(zhí)行的指令條數(shù)為32MIPS
D.該計算機(jī)中的CPU可以相同時處理32位的二進(jìn)制數(shù)
48.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
49.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的()。A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)
50.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖牵ǎ?/p>
A.多態(tài)性B.標(biāo)識惟一性C.封裝性D.耦合性
51.字長為16位的計算機(jī)是指______。
A.該計算機(jī)能夠處理的最大數(shù)不超過16
B.該計算機(jī)中的CPU可以同時處理16位的二進(jìn)制信息
C.該計算機(jī)的內(nèi)存量為16MB
D.該計算機(jī)每秒鐘所能執(zhí)行的指令條數(shù)為16MIPS
52.數(shù)據(jù)庫管理系統(tǒng)提供給用戶的接口是()
A.過程化語言B.數(shù)據(jù)庫語言C.宿主語言D.面向?qū)ο笳Z言
53.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
54.下列程序的輸出結(jié)果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}
A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi
55.以下選項中,不能作為合法常量的是
A.1.23E+04B.1.234e0.4C.1.23E+04D.1.23E+00
56.請讀程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的輸出結(jié)果是()
A.34756B.23445C.35745D.12345
57.設(shè)有以下語句
typedefstructS
{intg;charh;}T;
則下面敘述中正確的是()A.可用S定義結(jié)構(gòu)體變量B.可以用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量
58.模塊本身的內(nèi)聚是模塊獨(dú)立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強(qiáng)內(nèi)聚的—類是______。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
59.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}該程序中的for循環(huán)執(zhí)行的次數(shù)是______。
A.5B.6C.7D.8
60.設(shè)x、y、t均為int型變量,則執(zhí)行語句x=y=3;t=++x||++y;后,y的值為______。
A.不定值B.4C.3D.1
四、選擇題(20題)61.下列可用于C語言用戶標(biāo)識符的一組是()。
A.void,define,WORD
B.a3_3,_123,Car
C.For,-abc,IFCase
D.2a,DO,sizeof
62.信息隱蔽的概念與下述哪一種概念直接相關(guān)()。
A.軟件結(jié)構(gòu)定義B.模塊獨(dú)立性C.模塊類型劃分D.模塊耦合度
63.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運(yùn)行后的輸出結(jié)果是______。
A.12353514B.12353513C.12343514D.12343513
64.軟件詳細(xì)設(shè)計產(chǎn)生的圖如下:該圖是()。
A.N—s圖B.PAD圖C.程序流程圖D.E—R圖
65.
66.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.1.1.3B.2,2,3C.1,2,3D.3,3,3
67.有以下程序
68.
69.有如下嵌套的語句
70.下列關(guān)于結(jié)構(gòu)化設(shè)計原則的描述,錯誤的是
A.在塊和進(jìn)程的非正常出口處往往需要調(diào)用GOTO語句,使用GOTO語句使程序執(zhí)行效率提高,但是濫用GOTO語句確實(shí)有害,應(yīng)該避免使用GOTO語句
B.程序設(shè)計時應(yīng)該自頂向下,逐步求精
C.程序設(shè)計時,應(yīng)該將復(fù)雜問題進(jìn)行模塊化,就是將程序設(shè)計的總目標(biāo)分解為若干個分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo)
D.在進(jìn)行程序設(shè)計時,應(yīng)該盡量在一行寫一條語句,盡量做到效率第一,清晰第二
71.
72.下列哪個不屬于DOM元素結(jié)點(diǎn)類型?
A.元素結(jié)點(diǎn)B.文本結(jié)點(diǎn)C.屬性結(jié)點(diǎn)D.樣式結(jié)點(diǎn)
73.已知數(shù)據(jù)表A中每個元素距其最終位置不遠(yuǎn),為節(jié)省時間,應(yīng)采用的算法是()
A.堆排序B.直接插入排序C.快速排序D.直接選擇排序
74.在E—R圖中,用來表示實(shí)體的圖形是()。
A.矩形B.橢圓形C.菱形D.三角形
75.兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結(jié)果是()。
if(x++>5)printf("%d",x);
elseprintf("%d\n",x--);
A.7和5B.6和3C.7和4D.6和4
76.在長度為n的有序線性表中進(jìn)行二分查找,最壞情況下需要比較的次數(shù)是()。
A.0(n)B.D(n2)C.O(1092n)D.0(nl092n)
77.
78.
79.在滿足實(shí)體完整性約束的條件下()。
A.一個關(guān)系中廊該有一個或多個候選關(guān)鍵字
B.一個關(guān)系中只能有一個候選關(guān)鍵字
C.一個關(guān)系中必須有多個候選關(guān)鍵字
D.一個關(guān)系中可以沒有候選關(guān)鍵字
80.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運(yùn)行結(jié)果是()。A.741B.963C.852D.875421
五、程序改錯題(1題)81.下列給定程序是建立一個帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)proc()的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,函數(shù)fmi()的功能是將a、b中的兩個正整數(shù)合并成一個新的整數(shù)存放在c中。合并的方式是將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,a=45,b=12,調(diào)用該函數(shù)后,c=5241。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.D
2.A本題由fun函數(shù)可知,執(zhí)行for循環(huán),當(dāng)i=0時,b[0]=a[0][0]-a[0][3]=1-4=-3;當(dāng)i=1時,b[1]=a[1][1]-a[1][2]=6-7=-1;當(dāng)i=2時,b[2]=a[2][2]-a[2][1]=11-10=1;當(dāng)i=3時,b[3]=a[3][3]-a[3][0]=16-13=3。主函數(shù)中輸出y數(shù)組元素的值為:-3,-1,1,3。故本題答案為A選項。
3.BSEEK_SET代表文件的開始,SEEK_END代表文件末尾,SEEK_CUR代表文件當(dāng)前位置。
4.B
5.C本題中由循環(huán)條件可知遇到‘\\0’或x與y所指的字符的值不等中的一個條件時就結(jié)束,所以功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)。
6.C
7.B
8.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)3個階段。本題中,詳細(xì)設(shè)計、軟件編碼和軟件測試都屬于軟什開發(fā)階段;維護(hù)是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費(fèi)代價最大的一個階段.軟件工程學(xué)的一個目的就是提高軟件的可維護(hù)性,降低維護(hù)的代價。
9.A
10.D程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。
11.A
12.D
13.B一維數(shù)組定義的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]。注意定義數(shù)組時,元素個數(shù)不能是變量。故本題答案為B選項。
14.C子函數(shù)fun1(doublea)的功能是返回a的平方值的整數(shù)部分。子函數(shù)fun2(doublex,doubley)的功能是返回X的平方值的整數(shù)部分與Y的平方值的整數(shù)部分的和。又因?yàn)轭}中變量w的定義為double型,函數(shù)fun(2)的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算,整型數(shù)據(jù)被轉(zhuǎn)換為實(shí)型數(shù)據(jù)。所以雙精度型變量w的值為5.0。
15.C
16.D
17.D
18.A題干中,函數(shù)fun接收一個整型指針參數(shù),返回值為int類型。main函數(shù)首先定義一個函數(shù)指針a,將函數(shù)fun的地址賦給a,所以a是指向函數(shù)fun的指針,可以通過a調(diào)用函數(shù)fun。選項A中,通過a調(diào)用函數(shù)fun,可以使用(*a),接收的參數(shù)是整型變量c的地址,正確;選項B中,參數(shù)x是一個數(shù)組,錯誤;選項C中,調(diào)用b函數(shù),由于程序沒有給出函數(shù)b的定義,因此這里調(diào)用b是錯誤的,而且函數(shù)b是沒有參數(shù)的,這里調(diào)用b的時候傳入了參數(shù),所以C錯誤;選項D中,由于b是一個函數(shù),不能作為整型指針變量傳給fun函數(shù),因此D錯誤。本題答案為A選項。
19.C
20.Bstrlen是求字符串的長度,結(jié)果為4,sizeof是求數(shù)組的長度,而數(shù)據(jù)在定義時已給出長度為10。
21.aeiou
22.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1
23.測試實(shí)例測試實(shí)例解析:進(jìn)行軟件測試時,應(yīng)精心設(shè)計測試實(shí)例和選擇測試數(shù)據(jù),以對系統(tǒng)進(jìn)行全面測試。
24.概念(或概念級)概念(或概念級)
25.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達(dá)式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。
26.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標(biāo)識符(*指針變量名)()。注:“類型標(biāo)識符”為函數(shù)返回值的類型。
27.n/2性表的任何位置插入一個元素的概率相等,即概率為p=1/(n+1),則插入一個元素時所需移動元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。
28.220.000000220.000000解析:注意區(qū)分運(yùn)算符的優(yōu)先級。先是給c賦值,然后計算x=f*=n/=50,得x=f*=2,最后有x=20。x輸出是按浮點(diǎn)數(shù)的形式輸出的,小數(shù)點(diǎn)后的0不能少。
29.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),m[2].k=4。所以最后輸出為13431。
30.1010解析:整型指針最初被賦的值是數(shù)組arr的頭指針,即指向數(shù)組的第一個元素30,p++后,指針指向數(shù)組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當(dāng)于a[1+3],即10。因此,輸出應(yīng)為100。
31.98768769876\r\n876解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:
類型說明符*指針變量名;
32.x<10x>=1
33.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實(shí)現(xiàn)過程是將相鄰兩個字符進(jìn)行比較,如果當(dāng)前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+l]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。
34.軟件工程學(xué)軟件工程學(xué)
35.1010解析:表達(dá)式0<x<20,首先計算0<x,其值為1,再計算1<20,其值為1,輸出1;表達(dá)式0<x&&x<20,0<x為1,x<20為0,再計算1&&0,其值為0,輸出0。所以輸出結(jié)果為10。
36.1515解析:在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多的是深度為5的滿二叉樹。在深度為5的滿二叉樹中,前4層中所有結(jié)點(diǎn)的度為2。即在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多相當(dāng)于深度為4的滿二叉樹中的結(jié)點(diǎn)數(shù)。深度為4的滿二叉樹中的結(jié)點(diǎn)數(shù)為24(上標(biāo))-1=15。
37.(x%i==0)(x%i==0)解析:為判數(shù)x是否是素數(shù),預(yù)置變量y的值為1(x可能是素數(shù)),然后用2至x/2的整數(shù)i測試對x的整除性,若x能被其中的某個整數(shù)整除,則x是合數(shù),置y的值為0(即x不是素數(shù)),結(jié)束循環(huán)測試;若循環(huán)中i都不能整除x,則x為素數(shù)。一般可用求余運(yùn)算x%i是否等于0來判定i能否整除x,所以程序中的空格處可填(x%i==0)。
38.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或給abs賦1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或給a,b,s賦1或1.0或1.解析:sum函數(shù)的功能是求表達(dá)式s的級數(shù)之和,該函數(shù)的大致思路是:在該函數(shù)中,定義了—個整型變量i用作循環(huán)計數(shù)器,定義一個變量a用來表示各個子項的分子,初始為第一個子項的分子,故為1,定義了一個變量b用來表示各個子項大分母,初始為第一個子項的分母,故為1,定義一個變量s存放累加和,初始為第一個子項的值即為1,然后給各個定義的變量初始化,然后通過一個for循環(huán)將題目中的數(shù)學(xué)表達(dá)式的各個子項求出來并累加到s中,所以說,在該題的空格處應(yīng)該填寫將a、b和s賦初值的語句,即為a=1;b=1;s=1:(說明:語句的順序可任意)或a=b=s=1;(說明:變量的順序可任意)或a=1,b=1,s=1(說明:賦值表達(dá)式的順序可任意)給a,b,s賦1或1.0或1都可以。
39.調(diào)試調(diào)試
40.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實(shí)例。
41.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計算機(jī)中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。
42.C解析:本題涉及C語言最基本的4個知識點(diǎn):①C語言的保留字必須小寫;②變量的存儲類型不同,其存儲位置和生存期也不一樣:③C語言允許其注釋部分出現(xiàn)在程序中的任何位置;④宏定義以#define開頭,行末不需要加分號。
43.B解析:將一個變量定義為標(biāo)準(zhǔn)類型與定義為結(jié)構(gòu)體類型不同之處在于:后者不僅要求指定
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開學(xué)儀式學(xué)生發(fā)言稿
- 幼兒園世界讀書日頒獎活動
- 陰式手術(shù)在婦科良性腫瘤的臨床應(yīng)用分析
- 安全講話稿(匯編15篇)
- 無人船自主靠泊規(guī)劃與控制方法研究
- 建筑與市政工程第三方質(zhì)量安全管理與巡查方案
- 建材行業(yè)安全工作心得
- 二零二五年度道路標(biāo)志涂料施工與維護(hù)合同模板2篇
- 二零二五年度企業(yè)內(nèi)部員工技能提升委托培訓(xùn)合作協(xié)議書3篇
- 二零二五年度個人住房抵押借款擔(dān)保與房地產(chǎn)項目投資咨詢協(xié)議3篇
- 銷售提成對賭協(xié)議書范本 3篇
- EPC項目階段劃分及工作結(jié)構(gòu)分解方案
- 《跨學(xué)科實(shí)踐活動4 基于特定需求設(shè)計和制作簡易供氧器》教學(xué)設(shè)計
- 術(shù)后病人燙傷不良事件PDCA循環(huán)分析
- 金字塔原理完整版本
- 隧道配電設(shè)備安裝與調(diào)試方案
- 2024年河北省中考數(shù)學(xué)試題(含答案解析)
- 新租賃準(zhǔn)則(2024版)
- 家禽呼吸系統(tǒng)認(rèn)知
- 《社區(qū)康復(fù)》課件-第九章 言語障礙患者的社區(qū)康復(fù)實(shí)踐
- 凸優(yōu)化在經(jīng)濟(jì)學(xué)與金融學(xué)中的應(yīng)用
評論
0/150
提交評論