版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年貴州省銅仁地區(qū)全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中正確的是()。
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é)省存儲空間
2.以下敘述中錯誤的是()
A.在C程序中,APH和aph是兩個不同的變量
B.C程序中的變量,代表內(nèi)存中的一個存儲單元,它的值可以根據(jù)需要隨時修改
C.在C程序中,無論是整數(shù)還是實數(shù),都能準確無誤地表示
D.在C程序中,一個正整數(shù)可以用十進制、八進制和十六進制的形式來表示
3.假設(shè)某算法的計算時間可用遞推關(guān)系式T(n)=2T(n/2)+n,T(1)=1表示,則該算法的時間復(fù)雜度為()
A.O(logn)B.O(n*logn)C.O(n)D.O(n^2)
4.連通圖G中有n個頂點,G的生成樹是()連通子圖。
A.包含G的所有頂點B.包含G的所有邊C.不包含G的所有頂點D.包含G的所有頂點和所有邊
5.
有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",m,85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的運行結(jié)果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
6.以下關(guān)于注釋的敘述中錯誤的是()。
A.注釋的邊界符號“/”和“*”之間不允許加入空格
B.C語言允許注釋出現(xiàn)在程序中任意合適的地方
C.注釋的內(nèi)容僅用于閱讀,對程序的運行不起作用
D.注釋的邊界符號“/*”和“*/”必須成對出現(xiàn)且可以嵌套
7.下述程序的輸出結(jié)果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if(i*i>=20)(i*i<=lOO))break;}printf("%d\n",i*i);}A.49B.36C.25D.64
8.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序運行后的輸出結(jié)果是()。
A.11,11B.29,29C.26,29D.121,121
9.若需要利用形參直接訪問實參,則應(yīng)把形參變量說明為____參數(shù)。
A.指針B.引用C.值D.變量
10.
11.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進行需求分析的方法A.A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標
12.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數(shù)組說明符的方括號中不能使用表達式
C.數(shù)組元素下標可以是非整數(shù)
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
13.當很頻繁的對序列中部進行插入和刪除操作時,應(yīng)該選擇使用的容器是()
A.vectorB.listC.dequeD.stack
14.某完全二叉樹有256個節(jié)點,則該二叉樹的深度為()。
A.7B.8C.9D.10
15.
16.軟件詳細設(shè)計產(chǎn)生的圖如圖所示。該圖是()。A.N—S圖B.PAD圖C.程序流程圖D.E—R圖
17.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。
A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
18.關(guān)于C語言中數(shù)的表示,以下敘述中正確的是()。
A.只有整型數(shù)在允許范圍內(nèi)能精確無誤地表示,實型數(shù)會有誤差
B.只要在允許范圍內(nèi)整型數(shù)和實型數(shù)都能精確地表示
C.只有實型數(shù)在允許范圍內(nèi)能精確無誤地表示,整形數(shù)會有誤差
D.只有用八進制表示的數(shù)才不會有誤差
19.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是()
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}
B.switch(int(x)){case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case1+2:printf("**\n");}
D.switch(a+B){case1:printf("*\n");casec:printf("**\n");}
20.圖的深度優(yōu)先遍歷類似于二叉樹的_______。
A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷
二、2.填空題(20題)21.函數(shù)sstrcmp的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
22.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【】。
23.若從鍵盤輸入58,則以下程序的輸出結(jié)果是【】。
main()
{inta;
scanf(“%d”,&A);
if(a>50)printf(“%d”,A);
if(a>40)printf(“%d”,A);
if(a>30)printf(“%d”,A);
}
24.以下程序的運行結(jié)果是______。
structNode}
intx;
charch;
};
fun(structNode*sn)
}statick=1;
sn->x=20;
Sn->ch='a'+k++;
}
main()
{inti;
staticstructNodest=}10,'a'};
for(i=0;i<2;i++)
fun(&st);
printf("%d,%c\n",st.x,st.ch);
}
25.在ER圖中,矩形表示【】。
26.以下程序的輸出是【】。
main()
{
charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"esshe");
printf("%s\n",p1);
}
27.下列程序的輸出結(jié)果是16.00,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
28.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
29.下面程序段的輸出結(jié)果是【】。
intx=5;
do{printf("%d",x-=4);
}while(!(--x));
30.以下程序的運行結(jié)果是______。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
31.以下程序的輸出結(jié)果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
32.在面向?qū)ο蠓椒ㄖ校?)是具有相似性質(zhì)的對象的集合。
33.下列程序的輸出結(jié)果是【】。
#include<stdio.h>
intfun(intx,inty)
{staticintm0,i=2;
i+=m+1;
m=i+x+y;
returnm;
}
main()
{intj=4,m=1,k;
k=fun(j,m);printf("%d,",k);
k=fun(j,m);printf("%d\n",k);
}
34.以下程序的功能是從鍵盤上輸入一行字符,存入一個字符數(shù)組中,然后輸出該字符串。請?zhí)羁铡?/p>
main()
{charstr[81],*sptr;
inti;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]=='\n')break;
}
str[i]=【】;
sptr=str1
while(*sptr)putchar(*sptr【】);
}
35.模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊)。其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
36.當所有結(jié)點的權(quán)值都相等時,用這些結(jié)點構(gòu)造的二叉排序樹是【】。
37.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
38.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(int(*f1)(),int(*f2)(),(intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
39.有以下程序:
fun(inta,intb)
{if(a>b)return(a);
elsereturn(b);
}
main()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%\d\n",r);
}
程序運行后的輸出的結(jié)果是【】。
40.軟件是程序、數(shù)據(jù)和【】的集合。
三、1.選擇題(20題)41.有以下程序main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序運行后的輸出結(jié)果是______。
A.15B.16C.12D.59
42.線性表若采用鏈式存儲結(jié)構(gòu)時,要求內(nèi)存中可用存儲單元的地址()
A.必須是連續(xù)的B.部分地址必須是連續(xù)的C.一定是不連續(xù)的D.連續(xù)不連續(xù)都可以
43.下列程序的輸出結(jié)果是______。main(){intk=17;printf("%d,%0,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,Ox11,021D.17,21,11
44.有如下程序:#include<stdio.h>intfunc(inta,intb){return(a+b):}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結(jié)果是()。
A.12B.13C.14D.15
45.現(xiàn)有如下程序段,此程序段編譯有錯誤,則程序段的錯誤出在#include<stdio.h>main(){inta=30,b=40,c=50,d;d=a>30?b:c;swish(d){casea:Printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);defaultprintf("#");}}
A.default:printf("#");這個語句
B.d=a>30?b:c;這個語句
C.casea:printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);這三個語句
D.switch(d)這個語句
46.下列數(shù)據(jù)模型中,具有堅實理論基礎(chǔ)的是()。
A.層次模型B.網(wǎng)狀模型C.關(guān)系模型D.以上3個都是
47.以下程序段的輸出為()staticchara[]="language",b[]="progratne";char*ptr1,*ptr2;intk;ptr1=a;ptr2=b;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));
A.gaeB.gaC.languageD.有語法錯誤
48.下列敘述中錯誤的是()。
A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)
B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率無關(guān)
C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率密切相關(guān)
D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機中所占的空間不一定是連續(xù)的
49.八進制數(shù)253.74轉(zhuǎn)換成二進制數(shù)是()
A.10101011.1111
B.10111011.0101
C.11001011.1001
D.10101111.1011
50.6-5/2+1.2+5%2的值是()。
A.4.3B.4.8C.3.3D.3.8
51.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i)+1;}main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf("%d",a[i]);}printf("\n");}程序運行后的輸出結(jié)果是()。
A.1313B.3234C.4234D.1234
52.下列寫法正確的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
53.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間
54.棧通常采用的兩種存儲結(jié)構(gòu)是()。
A.順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)B.散列方式和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
55.設(shè)有定義:inta=2,b=3,c=4;,則下列選項中值為0的表達式是()。
A.(!a==1)&&(!b==0)
B.(a<b)&&!c‖1
C.a&&b
D.a‖(b+b)&&(c-a)
56.下列常數(shù)中,不合法的C常量是()
A.-0x3b1B.123e+2.3C.'}'D.6e+7
57.以下程序中函數(shù)reverse的功能是將a所指數(shù)組中的內(nèi)容進行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結(jié)果是
A.22B.10C.34D.30
58.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()
A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;
59.有以下程序:#include<stdio.h>voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1='A',c2='a',*p1,*p2;p1=&c1;P2=&c2;fun(p1,p2);printf("%c%c\n",c1,c2);}程序運行后的輸出結(jié)果是()。
A.AbB.aaC.AaD.Bb
60.以下錯誤的定義語句是A.intx[][3]={{0},{1},{1,2,3}};
B.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D.intx[][3]={1,2,3,4};
四、選擇題(20題)61.有以下程序
程序的運行結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.2,1,4,3,6,5,8,7,0,9,
C.0,9,8,7,6,5,4,3,2,l,
D.0,1,2,3,4,5,6,7,8,9,
62.
63.有以下程序:
程序運行后的輸出結(jié)果是()。
A.3B.6C.9D.2
64.
65.在數(shù)據(jù)庫管理系統(tǒng)的層次結(jié)構(gòu)中,處于最上層的是()。
A.應(yīng)用層B.語言翻譯處理層C.數(shù)據(jù)存取層D.數(shù)據(jù)存儲層
66.
67.下列敘述中正確的是()。A.線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的
B.線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)
C.線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)
D.線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)在存儲空間的需求上沒有可比性
68.設(shè)有如下三個關(guān)系表:
69.
下列程序執(zhí)行后的輸出結(jié)果是()。
main
{inta[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3B.6C.9D.隨機數(shù)
70.以下程序的運行結(jié)果是()。
#include<stdio.h>
main{inta=1,b=2,c=3,x;
x=(a^b)&c;printf("%d\n",x);}
A.0B.1C.2D.3
71.
72.有以下程序
73.有以下函數(shù)函數(shù)的功能是()。
A.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)
B.查找x和y所指字符串中是否有’\0’
C.將y所指字符串賦給x所指存儲空間
D.統(tǒng)計x和y所指字符串中相同的字符個數(shù)
74.下列工具中為需求分析常用工具的是()。
A.PADB.BFDC.N-SD.DFD
75.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是
76.
77.
78.若變量x、y已正確定義并賦值,以下符合C語言語法的表達式是()。
A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10
79.若執(zhí)行下面的程序時,從鍵盤輸入6和2,則輸出結(jié)果是()。
A.5B.3C.2D.0
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型形參n,計算如下公式的值:A1=1,A2=1/(5+A1),A3=1/(5+A2),…,An=1/(5+A(n-1))例如,若n一10,則應(yīng)輸出0.192582。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),對長度為9個字符的字符串,除首、尾字符外,將其余7個字符按ASCⅡ碼值降序排列。例如,原來的字符串為HabcdefA,則排序后輸出為HfedcbaA。注意:部分源程序給出如下。請勿改動main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()中填入所編寫的若干語句。試題程序:
參考答案
1.A解析:順序存儲結(jié)構(gòu)就是用一組地址連續(xù)的存儲單元依次存儲該線性表中的各個元素,鏈式存儲結(jié)構(gòu)中各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致,所以選項A是正確的。兩者都可以存儲線性的、有序的邏輯結(jié)構(gòu),所以選項B、C不正確。順序結(jié)構(gòu)使用的是連續(xù)物理空間,鏈式結(jié)構(gòu)可以使用零散的物理空間存儲,鏈式結(jié)構(gòu)更靈活,不存在誰節(jié)約空間的說法,所以選項D不正確。
2.C
3.B
4.A
5.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進行賦值后,然后返回變量a。
6.D在編寫程序時可以在程序中加入注釋。在添加注釋時,注釋內(nèi)容必須放在符號“/*”和“*/”之間,“/*”和“*/”必須成對出現(xiàn),“/*”與“*/”之間不可以有空格,選項A正確;注釋可以用英文,可以用中文,可以出現(xiàn)在程序中任意合適的地方,選項B正確;注釋部分只適用于閱讀,對程序的運行不起作用,選項C正確;使用“/*”和“*/”的注釋之間不可再嵌套“/*”和“*/”,選項D錯誤。故本題答案為D選項。
7.C當if執(zhí)行到第一個滿足(i*i>=20)(i*i<=100)這個條件的i出現(xiàn)時,通過break語句跳出循環(huán),執(zhí)行下面的prinlf語句。
8.B#define命令是C語言中的一個宏定義命令,為了區(qū)分其他標識符,標識符一般使用大寫。將標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。題目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,經(jīng)計算可得29?!癝(j+k+2)=j+k+2*k+j+2/j+k+2”,經(jīng)計算可得29。因此輸出為29,29。故本題答案為B選項。
9.A
10.D
11.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。
12.AC語言規(guī)定定義數(shù)組時,數(shù)組的長度必須是整型常量,數(shù)組說明符的方括號中表達式只要是常量即合法,因此選項B錯誤。C語言規(guī)定,數(shù)組元素下標必須是非負整數(shù),因此選項C錯誤。選項D中,“chararray[4]”數(shù)組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規(guī)定數(shù)組的下標必須是非負整數(shù)不符。故本題答案為A選項。
13.B
14.C
15.C
16.CN-S圖(也被稱為盒圖或CHAPIN圖)、PAD(問題分析圖)及PFD(程序流程圖)是詳細設(shè)計階段的常用工具。E—R圖即實體一聯(lián)系圖,是數(shù)據(jù)庫設(shè)計的常用工具。從題中圖可以看出該圖屬于程序流程圖。
17.A【答案】:A
【知識點】:黑盒測試
【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動測試,它完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只著眼于程序的外部結(jié)構(gòu),主要用來檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選A。
18.A當數(shù)據(jù)類型是實數(shù)時,在存儲過程中,當小數(shù)部分無限長時,會存在小數(shù)部分的截斷,會存在誤差,所以答案選擇A。
19.C
20.A
21.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應(yīng)的字符相等則接著比較下一個字符,一直到兩個字符串中對應(yīng)字符不等,或者有一個為\\0,此時字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為\\0,且*s和*t相同,第一處應(yīng)填“*t”或其他等價形式。根據(jù)題意可知第二處應(yīng)填*s-*t或其等價形式。
22.log2n
23.585858585858解析:在程序中,執(zhí)行scanf()語句后,a被賦值為58。接著執(zhí)行第一個if語句,因為,a=58>50,執(zhí)行第一個if語句后面的輸出語句,輸出58;接著執(zhí)行第二個if語句,因為,a=58>40,執(zhí)行第二個if語句后面的輸出語句,輸出58;接著執(zhí)行第三個if語句,因為,a=58>30,執(zhí)行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。
24.20c。20,c。解析:函數(shù)fun的功能是給結(jié)構(gòu)體指針變量所指的結(jié)構(gòu)體變量的各成員賦值,主函數(shù)兩次調(diào)用函數(shù)fun,第一次調(diào)用,實參st兩個成員的值是20和字符b,調(diào)用結(jié)束時,靜態(tài)局部變量k沒有釋放,值為2:第二次調(diào)用,實參st兩個成員的值是20和字符c,調(diào)用結(jié)束時,靜態(tài)局部變量k沒有釋放,值為3;因此,輸出結(jié)果是20和c。
25.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。
26.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷貝函數(shù),作用是將字符串s1拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str的長度,函數(shù)的值為字符串中實際長度,不包括\'\\0\'在內(nèi)。本題中strlen(str1)的值為13,則strcpy(strl+strlen(strl)/2,'esshe');相當于strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe
解析:本題以浮點格式輸出z值,寬度為5,有2位小數(shù)。應(yīng)該注意的是,兩個整數(shù)運算結(jié)果仍為整數(shù),如1/2的結(jié)果為0。本題可逐步求解:
16.00=9/2+2*x/1.1+1/2
16.00=4+2*x/1.1+0
12.00=2*x/1.1
所以,x的值為6.6。
28.*pmax=*px*pmax=*px解析:首先將變量x的值放到max中,然后依次和變量y、z進行比較。若有比max大的數(shù),將該數(shù)存放到max中,這樣最后在max中的值就是x、y、z中的最大值。
29.1-41-4解析:題目中首先讓x=5,然后進入do-while循環(huán)體,輸出x-4的值1,此時x為1,表達式!(--x)的值為!(0)為真(此時x變?yōu)?),所以再次執(zhí)行循環(huán)體,輸出x-4的值-4,此時x為-4,表達式!(--x)的值為!(—5)為假,退出循環(huán)。故輸出結(jié)果是1-4。
30.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個元素輸出到文件fp中兩次,共10個字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中,此時數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結(jié)果為“1,2,3,0,0,1,2,3,0,0”。
31.1010解析:整型指針最初被賦的值是數(shù)組arr的頭指針,即指向數(shù)組的第一個元素30,p++后,指針指向數(shù)組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當于a[1+3],即10。因此,輸出應(yīng)為100。
32.類類解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同操作性質(zhì)的對象的集合,是已經(jīng)定義了的關(guān)于對象的特征、外觀和行為的模板。所以類是對象的抽象,它描述了屬于該對象類型的所有對象的性質(zhì),而一個對象則是其劃應(yīng)類的一個實例。
33.817
34.\0'++
35.在進行單元測試時,要用一些輔助模塊去模擬與被測模塊相聯(lián)系的其他模塊,即為被測模塊設(shè)計和搭建驅(qū)動模塊和樁模塊。其中,驅(qū)動模塊相當于被測模塊的主程序,它接收測試數(shù)據(jù),并傳給被測模塊,輸出實際測試結(jié)果;而樁模塊是模擬其他被調(diào)用模塊,不必將子模塊的所有功能帶入。\r\n\r\n
36.右子樹(單支樹)右子樹(單支樹)解析:二叉排序樹對于任意新結(jié)點,若大于等于根結(jié)點,則在右子樹上建立。
37.調(diào)試調(diào)試
38.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為23-22=4。
39.1212解析:函數(shù)fun的功能是求兩個數(shù)當中的最大值。語句r=fun(fun(x,y),2*z)的執(zhí)行過程為:首先計算fun(x,y),因x=3、y=8,所以結(jié)果為8;然后計算fun(8,2,*z),即計算fun(8,12),所以r=12。
40.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
41.A解析:自增運算符“++”放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。語句p=s;使指針p指向字符串s的首地址,第一次輸出語句先輸出字符'1',指針p再往后移一位,指向字符'5'的地址,第二個輸出語句,同樣先輸出字符'5',指針p再往后移一位,指向字符'9'的地址。
42.D解析:在鏈式存儲結(jié)構(gòu)中,存儲數(shù)據(jù)結(jié)構(gòu)的存儲空間可以不連續(xù),各數(shù)據(jù)接點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。
43.D
44.D解析:在表達式r=func(func(x,y),z)中,func(x,y)是第一次調(diào)用函數(shù),它的返回值7作為func函數(shù)第二次調(diào)用的實參,結(jié)果為15。
45.C解析:case也是關(guān)鍵字,與其后面的常量表達式合稱case語句標號,常量表達式的類型必須與switch后的表達式類型相同。這個程序段主要考查的是case后是常量表達式。
46.C在數(shù)據(jù)庫設(shè)計中,目前常用的數(shù)據(jù)模型主要有三種,分別是層次模型、網(wǎng)狀模型和關(guān)系模型。
層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。我們通常把滿足以下兩個條件的數(shù)據(jù)模型稱為層次模型。
(1)有且僅有一個結(jié)點無雙親,這個結(jié)點稱為根結(jié)點。
(2)其他結(jié)點有且僅有一個雙親。
層次模型用樹形結(jié)構(gòu)來表示各實體與實體間的聯(lián)系。實體是數(shù)據(jù)庫中數(shù)據(jù)描述的對象,可以是一個人、一種商品等。在層次模型中,每個結(jié)點表示一個記錄類型,記錄之間的聯(lián)系用結(jié)點之間的連線表示,這種聯(lián)系是父子之間一對多的聯(lián)系。記錄就是描述實體的相關(guān)數(shù)據(jù)。
如果取消層次模型中的兩個限制,即允許一個以上的結(jié)點無雙親,則每一個結(jié)點可以有多個父結(jié)點,便形成了網(wǎng)狀。我們把網(wǎng)狀表示實體之間聯(lián)系的模型稱為網(wǎng)狀模型。
關(guān)系模型用表格形式表示實體類型及其實體間的聯(lián)系。關(guān)系模型是目前最重要的一種模型,它是建立在嚴格的數(shù)學(xué)概念的基礎(chǔ)上的,具有最堅實的理論基礎(chǔ)。關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu)是二維表,每一張二維表稱為一個關(guān)系。
47.B
48.B解析:一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),常用的存儲結(jié)構(gòu)有順序、鏈接、索引等,選項A和選項D正確。采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率不同,因此,在進行數(shù)據(jù)處理時,選擇合適的存儲結(jié)構(gòu)是很重要的,選項C正確,選項B錯誤,應(yīng)為本題正確答案。
49.A
50.D
51.C解析:函數(shù)fun(int*x,inti)的功能是把數(shù)組元素x[i]的值加1賦給x[0]。所以在主函數(shù)中執(zhí)行fun(a,2)后,數(shù)組元數(shù)a[0]的值等于4。然后在for循環(huán)語句中,輸出數(shù)組a中的前4個元素的值,分別是4,2,3,4。
52.D解析:本題考查語句的基本構(gòu)成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數(shù)定義格式,一個完整的函數(shù)定義格式還包括一對花括號:選項D)正確,是一個空語句。
53.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。
54.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設(shè)指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易于實現(xiàn)。注意:這3種運算方法在各種存儲結(jié)構(gòu)中的應(yīng)用。
55.A解析:在選項A)中,因為!a=0,所以關(guān)系表達式!a==1的值為0,又因為邏輯與運算符“&&”兩邊的表達式只要一個等于零,則整個表達式為零,所以選項A)正確。在選項B)中,關(guān)系表達式a<b為真,表達式(a<b)&&!c為假,而表達式(a<b)&&!c‖1為真,所以整個表達式的值為真。選項C)中,a&&b的結(jié)果為真。在選項D)中,a‖(b+b)&&(c-a)的結(jié)果為真。
56.B
57.A解析:本題考查的知識點是數(shù)組名作為函數(shù)參數(shù)及函數(shù)調(diào)用。reverse()數(shù)的功能是將具有n個元素的數(shù)組a反序存放。在主函數(shù)中調(diào)用語句是“reverse(b,8);”,實現(xiàn)的功能是把b數(shù)組的前八個元素逆置,所以b數(shù)組中依次存放的值為“8,7,6,5,4,3,2,1,9,10”。for循環(huán)了4次,分別把b[6]、b[7]、b[8]和b[9]的值(分別是2、1、9、10)加到了s中,s的結(jié)果是22,所以最后輸出的s值為22。所以4個選項中A正確。
58.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,故選項B不正確;選項D表達式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確:4個選項中只有C正確。
59.A解析:本題中fun函數(shù)的形參是兩個指向字符型數(shù)據(jù)的指針,其功能是把b賦給a,然后將a所指存儲單元里的變量值加1。在main函數(shù)中,p1里存放的是c1的地址,p2里存放的是c2的地址,經(jīng)函數(shù)調(diào)用fun(p1,P2)后,p2的值賦給了p1,使p1和p2都指向了c2,而(*a)++又使'a'的值加1變成了'b',所以此時c2的值為'b',而c1的值沒變,仍為'A'。程序改變的是p1的地址和c2的值。
60.C解析:本題考查的是二維數(shù)組的定義和初始化方法。C語言中,在定義并初始化二維數(shù)組時,可以省略數(shù)組第一維的長度,但是不能省略第二維的長度。故選項C)錯誤。
61.A函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳遞是單向的,即只能把實參的值傳遞給形參。而不能把形參的值反向地傳遞給實參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化,所以數(shù)組C中的元素的值并沒有變化,故選擇A)。
62.D
63.B本題的考查點是指向數(shù)組元素的指針變量的定義和賦值。所謂數(shù)組的指針是指數(shù)組的起始地址,數(shù)組元素的指針是數(shù)組元素的地址。P=&a[0][O]是把該數(shù)組的第一個元素的地址賦給指針變量P,而且此時指針變量P也是int型。a[1][2]剛好是數(shù)組中的第6個元素,此時也就是P所指的地址,所以輸出結(jié)果是6。
64.D
65.A在數(shù)據(jù)庫管理系統(tǒng)的層次結(jié)構(gòu)中,應(yīng)用層是直接面向終端客戶的,因此它是出于最上層得。
66.D
67.B線性鏈式存儲結(jié)構(gòu)中每個結(jié)點都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲空間,所以一般要多于順序存儲結(jié)構(gòu)。
68.B兩個相同結(jié)構(gòu)關(guān)系的“并”是由屬于這兩個關(guān)系的元組組成的集合。
69.D
\n程序執(zhí)行在for循環(huán),當i=p時,i中放的是P的地址,類型不符合,因此輸出隨機數(shù),故選擇D進項.
\n
70.D
71.C
72.A本題主要考查的是:數(shù)組名用作函數(shù)參數(shù)。數(shù)組名用作函數(shù)參數(shù)的情況類似于指針,屬于傳地址,故對形參數(shù)組元素的修改會同時修改實參。本題中,f()函數(shù)通過一個for循環(huán)語句,將傳人數(shù)組的元素從下標2到下標5每個各自乘以2。因此,調(diào)用結(jié)束時,數(shù)組a中的內(nèi)容為(l.2,6,8,10,12,7,8,9,101,故本題應(yīng)該選擇A)。
73.A本題中由循環(huán)條件可知,當遇到l\0”’或“x與y所指的字符的值不相等”中的一個條件時就結(jié)束循環(huán),因此本題函數(shù)的功能是統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)。
74.D需求分析常用的工具有4種:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判斷樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N—S(盒式圖)都是詳細設(shè)計的常用工具,不是需求分析的工具。
75.C本題考查switch語句的使用。
switch語句是多分支選擇語句,有些教程上介紹說switch語句后面括弧里的表達式可以是任何類型,實際上,由于float型的數(shù)據(jù)在內(nèi)存中的存儲會有誤差,絕大多數(shù)編譯器是不允許switch語句后面是float型的數(shù)據(jù)的。case后是常量表達式,只能是一個整數(shù)或整型常量表達式,也可以是一個字符常量或枚舉型常量,但不能是實型數(shù)據(jù)。
A選項中的case后面用的是實型常量,case語句后面不能跟實型常量。
B選項switch語句后面的語句是int(x),該表達式格式錯誤,強制轉(zhuǎn)換為整型的語句應(yīng)該為(int)x。
C選項是正確的,switch后面的表達式和case后面的整型常量表達式都是規(guī)范的。
D選項的case語句后用到了變量,case后面是不允許用變量表達式的。
76.C
77.B
78.BA選項中不能將變量Y賦給表達式,c選項中錯誤與A選項一樣,D選項中強制類型轉(zhuǎn)換表達式應(yīng)寫成(doub1e)x/10。
79.C本題考查簡單的if…else語句。先執(zhí)行條件if(a<b),顯然不成立,然后執(zhí)行else語句。
80.C
81.(1)錯誤:intA[100];
正確:floatA[100];
(2)錯誤:for(i=1;i<=n;i++)
正確:for(i=2;i<=n;i++)
82.
【解析】按照題目中要求,求除首、尾字符外,將其余7個字符按ASCⅡ碼值降序排列。首先需要判斷除首、尾字符之外,其余7個字符ASCⅡ碼值的大小,將不符合順序要求的字符互換。
2021年貴州省銅仁地區(qū)全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中正確的是()。
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é)省存儲空間
2.以下敘述中錯誤的是()
A.在C程序中,APH和aph是兩個不同的變量
B.C程序中的變量,代表內(nèi)存中的一個存儲單元,它的值可以根據(jù)需要隨時修改
C.在C程序中,無論是整數(shù)還是實數(shù),都能準確無誤地表示
D.在C程序中,一個正整數(shù)可以用十進制、八進制和十六進制的形式來表示
3.假設(shè)某算法的計算時間可用遞推關(guān)系式T(n)=2T(n/2)+n,T(1)=1表示,則該算法的時間復(fù)雜度為()
A.O(logn)B.O(n*logn)C.O(n)D.O(n^2)
4.連通圖G中有n個頂點,G的生成樹是()連通子圖。
A.包含G的所有頂點B.包含G的所有邊C.不包含G的所有頂點D.包含G的所有頂點和所有邊
5.
有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",m,85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的運行結(jié)果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
6.以下關(guān)于注釋的敘述中錯誤的是()。
A.注釋的邊界符號“/”和“*”之間不允許加入空格
B.C語言允許注釋出現(xiàn)在程序中任意合適的地方
C.注釋的內(nèi)容僅用于閱讀,對程序的運行不起作用
D.注釋的邊界符號“/*”和“*/”必須成對出現(xiàn)且可以嵌套
7.下述程序的輸出結(jié)果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if(i*i>=20)(i*i<=lOO))break;}printf("%d\n",i*i);}A.49B.36C.25D.64
8.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序運行后的輸出結(jié)果是()。
A.11,11B.29,29C.26,29D.121,121
9.若需要利用形參直接訪問實參,則應(yīng)把形參變量說明為____參數(shù)。
A.指針B.引用C.值D.變量
10.
11.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進行需求分析的方法A.A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標
12.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數(shù)組說明符的方括號中不能使用表達式
C.數(shù)組元素下標可以是非整數(shù)
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
13.當很頻繁的對序列中部進行插入和刪除操作時,應(yīng)該選擇使用的容器是()
A.vectorB.listC.dequeD.stack
14.某完全二叉樹有256個節(jié)點,則該二叉樹的深度為()。
A.7B.8C.9D.10
15.
16.軟件詳細設(shè)計產(chǎn)生的圖如圖所示。該圖是()。A.N—S圖B.PAD圖C.程序流程圖D.E—R圖
17.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。
A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
18.關(guān)于C語言中數(shù)的表示,以下敘述中正確的是()。
A.只有整型數(shù)在允許范圍內(nèi)能精確無誤地表示,實型數(shù)會有誤差
B.只要在允許范圍內(nèi)整型數(shù)和實型數(shù)都能精確地表示
C.只有實型數(shù)在允許范圍內(nèi)能精確無誤地表示,整形數(shù)會有誤差
D.只有用八進制表示的數(shù)才不會有誤差
19.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是()
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}
B.switch(int(x)){case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case1+2:printf("**\n");}
D.switch(a+B){case1:printf("*\n");casec:printf("**\n");}
20.圖的深度優(yōu)先遍歷類似于二叉樹的_______。
A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷
二、2.填空題(20題)21.函數(shù)sstrcmp的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
22.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【】。
23.若從鍵盤輸入58,則以下程序的輸出結(jié)果是【】。
main()
{inta;
scanf(“%d”,&A);
if(a>50)printf(“%d”,A);
if(a>40)printf(“%d”,A);
if(a>30)printf(“%d”,A);
}
24.以下程序的運行結(jié)果是______。
structNode}
intx;
charch;
};
fun(structNode*sn)
}statick=1;
sn->x=20;
Sn->ch='a'+k++;
}
main()
{inti;
staticstructNodest=}10,'a'};
for(i=0;i<2;i++)
fun(&st);
printf("%d,%c\n",st.x,st.ch);
}
25.在ER圖中,矩形表示【】。
26.以下程序的輸出是【】。
main()
{
charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"esshe");
printf("%s\n",p1);
}
27.下列程序的輸出結(jié)果是16.00,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
28.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
29.下面程序段的輸出結(jié)果是【】。
intx=5;
do{printf("%d",x-=4);
}while(!(--x));
30.以下程序的運行結(jié)果是______。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
31.以下程序的輸出結(jié)果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
32.在面向?qū)ο蠓椒ㄖ校?)是具有相似性質(zhì)的對象的集合。
33.下列程序的輸出結(jié)果是【】。
#include<stdio.h>
intfun(intx,inty)
{staticintm0,i=2;
i+=m+1;
m=i+x+y;
returnm;
}
main()
{intj=4,m=1,k;
k=fun(j,m);printf("%d,",k);
k=fun(j,m);printf("%d\n",k);
}
34.以下程序的功能是從鍵盤上輸入一行字符,存入一個字符數(shù)組中,然后輸出該字符串。請?zhí)羁铡?/p>
main()
{charstr[81],*sptr;
inti;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]=='\n')break;
}
str[i]=【】;
sptr=str1
while(*sptr)putchar(*sptr【】);
}
35.模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊)。其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
36.當所有結(jié)點的權(quán)值都相等時,用這些結(jié)點構(gòu)造的二叉排序樹是【】。
37.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
38.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(int(*f1)(),int(*f2)(),(intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
39.有以下程序:
fun(inta,intb)
{if(a>b)return(a);
elsereturn(b);
}
main()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%\d\n",r);
}
程序運行后的輸出的結(jié)果是【】。
40.軟件是程序、數(shù)據(jù)和【】的集合。
三、1.選擇題(20題)41.有以下程序main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序運行后的輸出結(jié)果是______。
A.15B.16C.12D.59
42.線性表若采用鏈式存儲結(jié)構(gòu)時,要求內(nèi)存中可用存儲單元的地址()
A.必須是連續(xù)的B.部分地址必須是連續(xù)的C.一定是不連續(xù)的D.連續(xù)不連續(xù)都可以
43.下列程序的輸出結(jié)果是______。main(){intk=17;printf("%d,%0,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,Ox11,021D.17,21,11
44.有如下程序:#include<stdio.h>intfunc(inta,intb){return(a+b):}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結(jié)果是()。
A.12B.13C.14D.15
45.現(xiàn)有如下程序段,此程序段編譯有錯誤,則程序段的錯誤出在#include<stdio.h>main(){inta=30,b=40,c=50,d;d=a>30?b:c;swish(d){casea:Printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);defaultprintf("#");}}
A.default:printf("#");這個語句
B.d=a>30?b:c;這個語句
C.casea:printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);這三個語句
D.switch(d)這個語句
46.下列數(shù)據(jù)模型中,具有堅實理論基礎(chǔ)的是()。
A.層次模型B.網(wǎng)狀模型C.關(guān)系模型D.以上3個都是
47.以下程序段的輸出為()staticchara[]="language",b[]="progratne";char*ptr1,*ptr2;intk;ptr1=a;ptr2=b;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));
A.gaeB.gaC.languageD.有語法錯誤
48.下列敘述中錯誤的是()。
A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)
B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率無關(guān)
C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率密切相關(guān)
D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機中所占的空間不一定是連續(xù)的
49.八進制數(shù)253.74轉(zhuǎn)換成二進制數(shù)是()
A.10101011.1111
B.10111011.0101
C.11001011.1001
D.10101111.1011
50.6-5/2+1.2+5%2的值是()。
A.4.3B.4.8C.3.3D.3.8
51.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i)+1;}main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf("%d",a[i]);}printf("\n");}程序運行后的輸出結(jié)果是()。
A.1313B.3234C.4234D.1234
52.下列寫法正確的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
53.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間
54.棧通常采用的兩種存儲結(jié)構(gòu)是()。
A.順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)B.散列方式和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
55.設(shè)有定義:inta=2,b=3,c=4;,則下列選項中值為0的表達式是()。
A.(!a==1)&&(!b==0)
B.(a<b)&&!c‖1
C.a&&b
D.a‖(b+b)&&(c-a)
56.下列常數(shù)中,不合法的C常量是()
A.-0x3b1B.123e+2.3C.'}'D.6e+7
57.以下程序中函數(shù)reverse的功能是將a所指數(shù)組中的內(nèi)容進行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結(jié)果是
A.22B.10C.34D.30
58.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()
A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;
59.有以下程序:#include<stdio.h>voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1='A',c2='a',*p1,*p2;p1=&c1;P2=&c2;fun(p1,p2);printf("%c%c\n",c1,c2);}程序運行后的輸出結(jié)果是()。
A.AbB.aaC.AaD.Bb
60.以下錯誤的定義語句是A.intx[][3]={{0},{1},{1,2,3}};
B.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D.intx[][3]={1,2,3,4};
四、選擇題(20題)61.有以下程序
程序的運行結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.2,1,4,3,6,5,8,7,0,9,
C.0,9,8,7,6,5,4,3,2,l,
D.0,1,2,3,4,5,6,7,8,9,
62.
63.有以下程序:
程序運行后的輸出結(jié)果是()。
A.3B.6C.9D.2
64.
65.在數(shù)據(jù)庫管理系統(tǒng)的層次結(jié)構(gòu)中,處于最上層的是()。
A.應(yīng)用層B.語言翻譯處理層C.數(shù)據(jù)存取層D.數(shù)據(jù)存儲層
66.
67.下列敘述中正確的是()。A.線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的
B.線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)
C.線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)
D.線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)在存儲空間的需求上沒有可比性
68.設(shè)有如下三個關(guān)系表:
69.
下列程序執(zhí)行后的輸出結(jié)果是()。
main
{inta[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3B.6C.9D.隨機數(shù)
70.以下程序的運行結(jié)果是()。
#include<stdio.h>
main{inta=1,b=2,c=3,x;
x=(a^b)&c;printf("%d\n",x);}
A.0B.1C.2D.3
71.
72.有以下程序
73.有以下函數(shù)函數(shù)的功能是()。
A.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)
B.查找x和y所指字符串中是否有’\0’
C.將y所指字符串賦給x所指存儲空間
D.統(tǒng)計x和y所指字符串中相同的字符個數(shù)
74.下列工具中為需求分析常用工具的是()。
A.PADB.BFDC.N-SD.DFD
75.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是
76.
77.
78.若變量x、y已正確定義并賦值,以下符合C語言語法的表達式是()。
A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10
79.若執(zhí)行下面的程序時,從鍵盤輸入6和2,則輸出結(jié)果是()。
A.5B.3C.2D.0
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型形參n,計算如下公式的值:A1=1,A2=1/(5+A1),A3=1/(5+A2),…,An=1/(5+A(n-1))例如,若n一10,則應(yīng)輸出0.192582。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),對長度為9個字符的字符串,除首、尾字符外,將其余7個字符按ASCⅡ碼值降序排列。例如,原來的字符串為HabcdefA,則排序后輸出為HfedcbaA。注意:部分源程序給出如下。請勿改動main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()中填入所編寫的若干語句。試題程序:
參考答案
1.A解析:順序存儲結(jié)構(gòu)就是用一組地址連續(xù)的存儲單元依次存儲該線性表中的各個元素,鏈式存儲結(jié)構(gòu)中各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致,所以選項A是正確的。兩者都可以存儲線性的、有序的邏輯結(jié)構(gòu),所以選項B、C不正確。順序結(jié)構(gòu)使用的是連續(xù)物理空間,鏈式結(jié)構(gòu)可以使用零散的物理空間存儲,鏈式結(jié)構(gòu)更靈活,不存在誰節(jié)約空間的說法,所以選項D不正確。
2.C
3.B
4.A
5.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進行賦值后,然后返回變量a。
6.D在編寫程序時可以在程序中加入注釋。在添加注釋時,注釋內(nèi)容必須放在符號“/*”和“*/”之間,“/*”和“*/”必須成對出現(xiàn),“/*”與“*/”之間不可以有空格,選項A正確;注釋可以用英文,可以用中文,可以出現(xiàn)在程序中任意合適的地方,選項B正確;注釋部分只適用于閱讀,對程序的運行不起作用,選項C正確;使用“/*”和“*/”的注釋之間不可再嵌套“/*”和“*/”,選項D錯誤。故本題答案為D選項。
7.C當if執(zhí)行到第一個滿足(i*i>=20)(i*i<=100)這個條件的i出現(xiàn)時,通過break語句跳出循環(huán),執(zhí)行下面的prinlf語句。
8.B#define命令是C語言中的一個宏定義命令,為了區(qū)分其他標識符,標識符一般使用大寫。將標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。題目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,經(jīng)計算可得29?!癝(j+k+2)=j+k+2*k+j+2/j+k+2”,經(jīng)計算可得29。因此輸出為29,29。故本題答案為B選項。
9.A
10.D
11.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軋機軸承課程設(shè)計
- 迷宮問題課程設(shè)計用棧
- 陶瓷直播認知課程設(shè)計
- 音樂網(wǎng)頁課課程設(shè)計
- 量子力學(xué)壁掛課程設(shè)計
- 財務(wù)方面的課程設(shè)計
- 體育賽事參與者意外傷害自擔風(fēng)險協(xié)議書
- 廣告投放及效果評估合同
- 音樂作品發(fā)行合作協(xié)議
- 環(huán)保智能設(shè)備采購合同
- 二年級數(shù)學(xué)上冊100道口算題大全 (每日一套共26套)
- 基于新型光彈性實驗技術(shù)的力學(xué)實驗教學(xué)方法探索
- 醫(yī)院后勤保障管理組織架構(gòu)圖
- 南寧市中小學(xué)學(xué)籍管理系統(tǒng)數(shù)據(jù)采集表
- 中空吹塑成型課件
- 領(lǐng)先閱讀X計劃第四級Bug Hunt 教學(xué)設(shè)計
- 《詩詞格律》word版
- 預(yù)算第二十三講
- 高中體育與健康人教版全一冊 6.2田徑—短跑 課件(共11張PPT)
- 蔬菜供貨服務(wù)保障方案
- WordA4信紙(A4橫條直接打印版)
評論
0/150
提交評論