2021年海南省三亞市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021年海南省三亞市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021年海南省三亞市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021年海南省三亞市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021年海南省三亞市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年海南省三亞市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.設(shè)有定義:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若變量均已正確賦初值,則以下語句中錯誤的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

3.

4.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

5.

6.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a(chǎn)[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序運行后的輸出結(jié)果是()。A.12345B.23445C.34756D.35745

7.有以下程序:#include<stdio.h>main(){inta=123456,b;while(a){b=a%10;a/=10;switch(b){default:printf(“%d”,b++);case1:case2:printf(“%d”,b++);break;case3:printf(“%d”,b++);break;case4:printf(“%d”,b++);}}}程序運行后的輸出結(jié)果是()。

A.76654321B.12345667C.67564321D.654321

8.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復(fù)制C.計算字符串的長度D.字符串的連接

9.一個算法應(yīng)當(dāng)具有5個特性,以下敘述中正確的是()。

A.有窮性、確定性、復(fù)雜性、有零個或多個輸入、有一個或多個輸出

B.有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出

C.有窮性、確定性、可行性、必須要有一個以上的輸入、有一個或多個輸出

D.有窮性、確定性、復(fù)雜性、有零個或多個輸入、必須要有多個輸出

10.有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(“%d\n”,s);}程序的運行結(jié)果是()。

A.10B.30C.0D.64

11.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型的是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是

12.下列敘述中錯誤的是()。

A.C語言程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行過程中進行的

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.“#defmeMAX”是合法的宏定義命令行

D.在程序中,凡是以“#”開始的語句行都是預(yù)處理命令行

13.一個棧的進棧序列是a,b,c,d,e,則棧的不可能的輸出序列是()。

A.edcbaB.decbaC.dceabD.abcde

14.程序中若有如下說明和定義語句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;.....}以下選項中對函數(shù)Fun的正確調(diào)用語句是______。A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);

15.定義無符號整數(shù)類為UInt,下面可以作為類UInt實例化值的是A)B)369C)0.369D)A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}

16.設(shè)有以下語句

typedefstructS

{intg;charh;}T;

則下面敘述中正確的是()A.可用S定義結(jié)構(gòu)體變量B.可以用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

17.執(zhí)行下面的程序段后,變量k中的值為()。intk=3,s[2];s[0]=k;k=s[1]*10;

A.不定值B.33C.30D.10

18.為了使模塊盡可能獨立,要求_____。A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強

19.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

20.若有定義“intx=10;”,則表達式“x-=x+x”的值為()。

A.0B.-20C.-10D.10

二、2.填空題(20題)21.沒有chara,b;,,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

22.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是______。

structnode

{chardata;

structnode*next;}a,b

以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}

23.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

24.以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結(jié)束標(biāo)志。請?zhí)羁铡?include<stdio.h>long();/*函數(shù)說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

25.以下程序的輸出結(jié)果是【】。

main()

{inta=0;

a+=(a=8);

printf("%d\n",A);

}

26.計算機指令是由【】和地址碼組成的。

27.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素的最大值。請?zhí)羁铡?/p>

voidfun(int,int,int(*)[4],int*);

main()

{

inta[3][4]={{12,41,36,28},{19,33,15,27),{3,27,19,1}},b[3],i;

fun(3,4,a,B);

for(i=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

for(i=0;i<m;i++)

{

x=ar[i][0];

for(i=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=X;

}

}

28.下列程序的功能是輸入一個整數(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);

}

29.下列程序段的運行結(jié)果是______。

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

30.以下程序的定義語句中,x[1]的初值是[9],程序運行后輸出的內(nèi)容是[10]。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

for(i=0;i<4;i++)

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

31.以下程序的輸出結(jié)果是【】。

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

32.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

printf("%d%d\n",a,b);

}

33.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

34.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

35.設(shè)有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。

36.排序是計算機程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

37.以下函數(shù)的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

38.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算s,計算結(jié)果通過形參指針sn傳回;n通過形參傳入,n的值大于或等于0。請?zhí)羁铡?/p>

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti;

for(i=0;i<=n;i++)

{f=【】*f;

w=f/(2*i+1);

s+=w;

}

【】=s;

}

39.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。

40.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

printf("%d\n",k);}

三、1.選擇題(20題)41.以下不能正確定義二維數(shù)組的選項是()。

A.inta[2][12]={{1},{2}};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3}:

D.inta[2][]={{1,2},{3,4}};

42.函數(shù)rewind的作用是

A.使文件位置指針重新返回文件的開始位置

B.將文件位置指針指向文件中所要求的特定位置

C.使文件位置指針指向文件的末尾

D.使文件位置指針自動移至下一個字符位置

43.下面對對象概念描述,不正確的是

A.任何對象都必須有繼承性B.對象是屬性和方法的封裝體C.對象間的通訊靠消息傳遞D.操作是對象的動態(tài)屬性

44.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7

45.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a+b);

46.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序運行后的輸出結(jié)果是()。

A.6B.7C.5D.8

47.以下程序運行后的輸出結(jié)果是______。main(){inta=1,b=2,c=3;if(c=a)printf("%d\n",c);elseprintf("%d\n",b);}

A.2B.3C.5D.1

48.下面程序的輸出結(jié)果是()main(){charx=040;print{("%d\n",x=x<<1);}

A.100B.160C.120D.64

49.兩次運行下面的程序后,如果從鍵盤上分別輸入7和3,則輸出結(jié)果是______。main(){intx;scanf("%d",&x);if(++x>5)printf("%d",x);elseprintf("%d\n",x--);}

A.7和5B.6和3C.7和4D.8和4

50.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()。A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)

51.下列選項中不是結(jié)構(gòu)化程序基本結(jié)構(gòu)的是

A.順序結(jié)構(gòu)B.跳轉(zhuǎn)分支結(jié)構(gòu)C.選擇結(jié)構(gòu)D.循環(huán)結(jié)構(gòu)

52.假定x和y為double型,則表達式x=2,y=x+3/2的值是

A.3.5B.3C.2D.3

53.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運行后的輸出結(jié)果是______。

A.12353514B.12353513C.12343514D.12343513

54.循環(huán)鏈表的主要優(yōu)點是()

A.不再需要頭指針了

B.從表中任一結(jié)點出發(fā)都能訪問到整個鏈表

C.在進行插入、刪除運算時,能更好的保證鏈表不斷開

D.已知某個結(jié)點的位置后,能夠容易的找到它的直接前件

55.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

56.下列敘述中正確的是A.程序設(shè)計就是編制程序

B.程序的測試必須由程序員自己去完成

C.程序經(jīng)調(diào)試改錯后還應(yīng)進行再測試

D.程序經(jīng)調(diào)試改錯后不必進行再測試

57.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段

58.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結(jié)果是

#include<stdio.h>

main()

{charc;

intv0=1,v1=0,v2=0;

do{switch(c=getchar())

{case′a′:case′A′:

case′e′:case′E′:

case′i′:case′I′:

case′o′:case′O′:

case′u′:case′U′:v1+=1;

default:v0+=1;v2+=1;}}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

59.在C語言程序中,下列說法正確的是()。

A.函數(shù)的定義和函數(shù)的調(diào)用均可以嵌套

B.函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套

C.函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套

D.函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套

60.假定以下程序經(jīng)編譯和連接后生成可執(zhí)行文件PROG.EXE,如果在此可執(zhí)行文件所在目錄的DOS提示符下鍵入:PROGABCDEFGHIJKL<回車>則輸出結(jié)果是()。#include<stdio.h>main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf("\n");}

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

四、選擇題(20題)61.對于一個正常運行的C程序,以下敘述中正確的是()。A.程序的執(zhí)行總是從main函數(shù)開始

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束

C.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

62.在下述程序中,判斷條件“i>j”共執(zhí)行的次數(shù)是

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf("%d",s);

break;

}s+=i;

}

}

A.4B.7

C.5D.6

63.下列敘述中正確的是()。

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

64.設(shè)文件指針fp已定義,執(zhí)行語句fp=fopen(”61e”,”W”);后,以下針對文本文件file操作敘述的選項中正確的是()。

A.只能寫不能讀B.寫操作結(jié)束后可以從頭開始讀C.可以在原有內(nèi)容后追加寫D.可以隨意讀和寫

65.棧和隊列的共同特點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同點

66.

67.有如下程序

main()

{

inta=2,b=-1,c=2;

if(a<b)c=1;

if(b<0)c=0;

elsec++;

printf("%d\n",c);

}

該程序的輸出結(jié)果是

A.0B.1

C.2D.3

68.

69.

70.下列程序的輸出結(jié)果是()。#include<stdio.h>intb=2:intfunc(int*a){b+=*a;returnb;}main{inta=1,t=2;t+=func(&a):printf("%d\n",t);}A.4B.5C.6D.8

71.

72.下列程序的輸出結(jié)果是()。

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i;

}A.A.49B.36C.25D.64

73.

74.

75.

76.輸出語句:prinff(”%d\n”,ll+011);的輸出結(jié)果是()。

A.20B.22C.022D.021

77.設(shè)循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35?,F(xiàn)經(jīng)過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數(shù)為()。

A.20B.0或35C.15D.16

78.設(shè)有如下說明

typedefstruct

{intn;

charc;

doublex;

}STD;

則以下選項中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是

A.STDtt[2]={{1,’A’,62},{2,’B’,75}};B.STDtt[2]={1,"A",62,2,"B",75};

C.structtt[2]={{1,’A’},{2,’B’}};D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};

79.(29)用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()

A.關(guān)系模型

B.層次模型

C.網(wǎng)狀模型

D.數(shù)據(jù)模型

80.在軟件工程中,白箱測試法可用于測試程序的內(nèi)部結(jié)構(gòu)。此方法將程序只看做是

A.路徑的集合B.循環(huán)的集合C.目標(biāo)的集合D.地址的集合

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳人,若k的值為600,則函數(shù)的值為5671。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,它的功能是計算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.5

在C語言中可調(diào)用log(n)函數(shù)求ln(n)。

例如,若m的值為30,則proc函數(shù)值為8.640500。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。

試題程序:

#include<stdlib.h>

#include<conio.h>

#inclllde<stdio.h>

#include<math.h>

doubleproc(intm)

{

}

voidmain

{

system("CLS");

printf("%f\n",proc(30));

}

參考答案

1.C

2.C結(jié)構(gòu)體不能通過結(jié)構(gòu)體名字整體賦值,通過結(jié)構(gòu)體名.成員名的方式賦值。所以C選項錯誤。

3.B

4.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。

5.B

6.D本題考查靜態(tài)變量,靜態(tài)變量有儲存已經(jīng)操作過的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案選擇D。

7.C程序中變量a的初值為123456,while循環(huán)的終止條件是a為0。循環(huán)開始將a的最后一位數(shù)字賦給b,a除以10后(丟棄最后一位)重新賦給a。在循環(huán)過程中,變量a和b的取值分別為:124566、123455、12344、1233、122、11。循環(huán)體中,執(zhí)行switch(b)語句,當(dāng)b的數(shù)值不等于1、2、3、4時,首先執(zhí)行default語句,輸出b并將b自增1,再執(zhí)行case1、case2語句,輸出自增后的b值;當(dāng)b的數(shù)值等于1、2、3、4時,只執(zhí)行case語句,輸出b的值。綜上,當(dāng)b為6、5時,分別輸出67、56;當(dāng)b為4、3、2、1時,分別輸出4、3、2、1。最終程序輸出結(jié)果為67564321。故本題答案為C選項。

8.C

9.B算法是指為解決某個特定問題而采取的確定且有限的步驟,一個算法應(yīng)當(dāng)具有5個特征:有窮性、確定性、可行性、有雩個或多個輸入、有一個或多個輸出。本題答案為B選項。

10.D本題中靜態(tài)局部變量X,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放。在main函數(shù)中,執(zhí)行for循環(huán),第1次循環(huán),變量s的值為2;第2次循環(huán),函數(shù)的返回值為4,所以變量s的值為8;第3次循環(huán),函數(shù)的返回值為8,所以s的值為64。故本題答案為D選項。

11.C解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。因此,本題的正確答案是C。

12.A預(yù)處理是在程序編譯之前進行的,所以A選項錯誤。故本題答案為A選項。

13.C

14.A解析:題中將函數(shù)fun的入口地址賦給了指針變量f1,這時f1和fun都指向函數(shù)的開頭,調(diào)用*f1就是調(diào)用函數(shù)fun。

15.B

16.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符合題意。

17.A解析:定義數(shù)組時,沒有對s[1]進行初始化,因此s[1]的值不確定,所以k=s[1]*10的值也不確定。

18.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準,耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。本題答案為B。

19.B變量J只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會被保存到浮點型變量Y中。

20.C算術(shù)運算符“+”的優(yōu)先級高于,且“-=”的結(jié)合方向為自右向左。所以表達式“x-=x+x”可以表示成“x=x-(x+x)=10-(10+10)=-10”。故本題答案為C選項。

21.1000001010000010解析:運算“&”的規(guī)則是只有當(dāng)兩個相應(yīng)的二進制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進制數(shù)10000010相與。

22.B

23.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標(biāo)準的調(diào)用形式應(yīng)該寫成:

p(double*)malloc(sizeof(double));

24.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數(shù)在主函數(shù)之后定義,就要對其進行說明,說明的形式為:“函數(shù)類型名函數(shù)名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數(shù),所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。

25.1616解析:在程序中首先將8賦值給變量a,然后在進行復(fù)合賦值運算。即a=a+a=8+8=16,所以該空格處應(yīng)該填16。

26.操作碼操作碼

27.br[i]或*(br+i)br[i]或*(br+i)解析:求最大值算法要求輸入的一般是一系列數(shù),例如一個數(shù)組,而輸出只有一個值。計算時通常的做法是,首先將這一系列數(shù)的笫1個值保存到結(jié)果變量中,然后用一個指針或循環(huán)變量從頭(或從第2個值)至尾遍歷這一系列數(shù),每次比較結(jié)果變量和被遍歷的值,如果該值比結(jié)果大,則將該值保存到結(jié)果中。本題中,3行4列二維數(shù)組a顯然是算法的輸入值,而傳給函數(shù)fun()的3和4在函數(shù)中起到限制循環(huán)次數(shù)的作用,所以它們代表輸入數(shù)據(jù)的行列數(shù).而傳遞給函數(shù)的一維數(shù)組b即沒有初始化,最后又要輸出它,所以數(shù)組b肯定是用來保存每行的最大值。在函數(shù)中是一個二重循環(huán),外循環(huán)首先將ar[i][0]賦給x,然后內(nèi)循環(huán)中比較x和ar[il剛,若x比較小就讓x=ar[i][j],這就說明x是保存結(jié)果的臨時變量.最后應(yīng)該將x的值輸出到數(shù)組b中,也就是形參br的相應(yīng)位置。故在空格處應(yīng)該填的內(nèi)容為br[i]或者寫成指針方式*(br+i)。

28.(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ù)。一般可用求余運算x%i是否等于0來判定i能否整除x,所以程序中的空格處可填(x%i==0)。

29.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。

30.在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中;當(dāng)i=0時,p[0]=&x[1],p[0][0]=2;當(dāng)i=1時,P[1];&x[3],p[1][0]=4;當(dāng)i=2時,p[2]=及x[5],p[2][0]=6;當(dāng)i=3時,p[3]=&x[7],p[3][0]=8,所以程序輸出的結(jié)果為2、4、6、8。\r\n\r\n

31.2468

32.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因為y=0,所以執(zhí)行case0:a++;break;此時a=1執(zhí)行case2:a++;b++;這時a=2,b=1;最后輸出結(jié)果是21。

33.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。

34.空間復(fù)雜度和時間復(fù)雜度算法的復(fù)雜性是指對一個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計算量是算法的時間復(fù)雜性。

35.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。

36.交換排序交換排序解析:所謂排序是指將一個無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

37.求出數(shù)組元素平均值求出數(shù)組元素平均值解析:函數(shù)有一個數(shù)組形參a和一個整型形參n。函數(shù)首先用循環(huán)求數(shù)組a的前n個元素和,然后將和除以n。即求數(shù)組元素的平均值。

38.-1*sn-1*sn解析:根據(jù)公式可知,第一處應(yīng)填-1;由于計算結(jié)果要通過形參指針sn傳回,所以第二處應(yīng)填*sn。

39.方法方法解析:在面向?qū)ο蠓椒ㄖ?,方法是指允許作用于某個對象上的各種操作。

40.k=p;k=p;解析:為尋找數(shù)組中最大元素的下標(biāo),需先預(yù)設(shè)1個臨時最大元素的下標(biāo),并順序逐一考查數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時最大元素更大時,就用當(dāng)前元素的下標(biāo)更新臨時最大元素下標(biāo)。直至考查了數(shù)組的全部元素后,這臨時最大元素下標(biāo)就是數(shù)組的最大元素下標(biāo)。通常預(yù)設(shè)的最大元素下標(biāo)是數(shù)組的首元素下標(biāo),考查通常從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標(biāo)的變量是k,變量p控制順序考查的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時最大元素s[k]更大時,應(yīng)該用p更新k,所以在空框處應(yīng)填入代碼'k=p;'。

41.D解析:在定義中如果對所有元素賦初值,其第1維的長度可以省略,故選項B正確;二維數(shù)組初始化也可以只對每行或前若干個行的前若干個元素賦初值,故選項A和選項C正確:在二維數(shù)組定義時不能省略第二維的長度,故選項D錯誤。所以,4個選項中選項D符合題意。

42.A解析:函數(shù)rewind的功能是將文件指針重新指向一個流的開頭。用法如下:

intrewind(FILE*stream);并且無返值。

43.A解析:有時為了保護某些特有的對象,可以通過定義其為私有屬性達到不被繼承的目的。

44.B解析:在長度為64的有序線性表中,其中的64個數(shù)據(jù)元素是按照從大到小或從小到大的順序排列有序的。在這樣的線性表中進行順序查找,最壞的情況就是查找的數(shù)據(jù)元素不性表中或位于線性表的最后。按照線性表的順序查找算法,首先用被查找的數(shù)據(jù)和線性表的第一個數(shù)據(jù)元素進行比較,若相等,則查找成功,否則,繼續(xù)進行比較,即和線性表的第二個數(shù)據(jù)元素進行比較。同樣,若相等,則查找成功,否則,繼續(xù)進行比較。依次類推,直到性表中查找到該數(shù)據(jù)或查找到線性表的最后一個元素,算法才結(jié)束。因此,在長度為64的有序線性表十進行順序查找,最壞的情況下需要比較64次。因此,本題的正確答案為選項B。

45.B解析:選項A的結(jié)尾沒用‘;’,所以不是一條語句:選項C中的表達式不會改變?nèi)魏巫兞康膬?nèi)容,也不是合法的賦值語句;選項D有語法錯誤,int應(yīng)該加上括號。所以,4個選項中只有選項B符合題意,運行后d的內(nèi)容被減一。

46.A解析:本題將主函數(shù)中a[2]的地址傳遞給了sum函數(shù)中的形參a[],使得sum函數(shù)中的(a+0)為主函數(shù)中a[2]的地址,所以a[-1]即*(a-1)的值為主函數(shù)中a[1]的值,故函數(shù)sum中a[0]=2+4。由于此函數(shù)中的a是指向主函數(shù)中的a[2],所以主函數(shù)中的a[2]的值即為6。

47.B解析:根據(jù)if條件,語句c=a的值為1,因此輸出c值為3。

48.D

49.D解析:輸入7,先使x加1,條件表達式成立,執(zhí)行語句printf('%d',x);,輸出8;輸入3,先使x加1,條件表達式不成立,執(zhí)行語句printf('%d\\n',x--);,輸出4,再將x自減。

50.C數(shù)據(jù)結(jié)構(gòu)概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)(物理結(jié)構(gòu))及數(shù)據(jù)上的運算集合。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,即數(shù)據(jù)元素之間的前后件關(guān)系,而不管它在計算機中的存儲表示形式。

51.B解析:結(jié)構(gòu)化程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)組成。

52.D解析:本題需要掌握的知識點是:逗號表達式的求解步驟,另外,注意一下兩個整數(shù)相除的結(jié)果仍為整數(shù)。了解了知識點后,本題就可以逐步求解了:

x=2

y=x+3/2

y=2.000000+1

y=3.000000

53.A解析:自增運算符“++”,放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。第一條輸出語句,先輸出m=12,m再自加1,變成13,n先自加1再輸出,輸出n=35;第二條輸出語句,先輸出n=35,n再自加1,變成36,m先自加1再輸出,輸出m=14。

54.B解析:循環(huán)鏈表就是將單向鏈表中最后一個結(jié)點的指針指向頭結(jié)點,使整個鏈表構(gòu)成一個環(huán)形,這樣的結(jié)構(gòu)使得從表中的任一結(jié)點出發(fā)都能訪問到整個鏈表。

55.A解析:函數(shù)定義時如果數(shù)據(jù)類型默認,則默認為int。函數(shù)中如果有“retum(表達式):”語句,表達式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實際情況是把表達式轉(zhuǎn)換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。

56.C解析:軟件設(shè)計的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),軟件沒計是確定系統(tǒng)的物理模型。軟件測試即使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其日的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。軟件調(diào)試后要進行回歸測試,防止引進新的錯誤。

57.B數(shù)據(jù)庫應(yīng)用系統(tǒng)的邏輯設(shè)計包括數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫事務(wù)概要設(shè)計和應(yīng)用程序概要設(shè)計三方面。數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計的主要步驟為:將E—R圖轉(zhuǎn)換為初始關(guān)系模式,對初始關(guān)系模式進行優(yōu)化,檢查關(guān)系表對數(shù)據(jù)庫事務(wù)的支持性,確定關(guān)系模式完整性約束,設(shè)計基于關(guān)系模式的用戶視圖。

58.D解析:本題考查switch語句的掌握。必須撐握以下內(nèi)容:首先應(yīng)該明白switch語句的語法格式:

switch語句的語法格式為:

switch(表達式)

{

case常量表達式1:語句組1;

case常量表達式2:語句組2;

case常量表達式n:語句組n;

default:語句組n+1;

}

另外,以下幾點關(guān)于switch語句的重點:

①系統(tǒng)在執(zhí)行時計算開關(guān)表達式的值;②根據(jù)所得的值在各個case標(biāo)號表達式中尋找匹配,直到發(fā)現(xiàn)與表達式匹配的標(biāo)號(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后執(zhí)行后面相應(yīng)的語句表,順序往下執(zhí)行;④如果無相匹配的標(biāo)號,若存在default標(biāo)號,則執(zhí)行該語句標(biāo)號后面的語句表n+1;當(dāng)不存在default標(biāo)號時,不執(zhí)行switch中的任何一個語句表。

一般而言,在多分支結(jié)構(gòu)中總會出現(xiàn)'意外'的情況,這時均可歸入default程序段,作統(tǒng)一的處理。default標(biāo)號是可選性的,不必每次都有,視需要而定。switch語句中還可以包含switch語句,形成switch的嵌套。

59.B解析:本題考查函數(shù)調(diào)用的基本概念。因為函數(shù)的結(jié)果是個未知量,而函數(shù)定義時不能使用未知量,所以函數(shù)定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套。

60.D解析:本題中,arge表示參數(shù)的個數(shù),應(yīng)為3。argv是一個指向字符串的指針數(shù)組,指針數(shù)組argv中的元素argv[0]指向字符串“PROG”,元素argv[1]指向字符串“ABCDEFGH”,argv[2]指向字符串“IJKL”。在while循環(huán)條件中,先進行自減運算,再執(zhí)行相應(yīng)的printf語句。

61.A程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)中結(jié)束,其他函數(shù)通過main函數(shù)調(diào)用執(zhí)行,所以A)正確。

62.D本題主要要求我們求判斷條件“i>j”執(zhí)行的次數(shù)。在本題的程序中,首先定義了四個整型變量,并分別賦初值,然后執(zhí)行for循環(huán)結(jié)構(gòu),該循環(huán)結(jié)構(gòu)中都是缺省語句,那么如果循環(huán)體中沒有break語句,程序?qū)⒚媾R死循環(huán),從后面的程序中我們可以看出,程序中存在一條break語句。

第一次循環(huán)時,變量k的值為2,變量i的值被改變?yōu)?,而此時變量j的值為10,執(zhí)行if(i>j)語句,結(jié)果為假,不執(zhí)行break語句,然后改變變量s的值,一次循環(huán)結(jié)束。

通過對這次循環(huán)的分析,我們發(fā)現(xiàn)變量k的值一直沒被改變,而變量i值的改變與變量k有關(guān),且每循環(huán)一次增加2,那么變量i的改變軌跡應(yīng)該為0,2,4,6,8,10,12,當(dāng)i等于12時,其值大于j,條件判斷語句結(jié)果為真,執(zhí)行break語句,結(jié)束循環(huán)。從這里我們可以推斷出循環(huán)執(zhí)行的次數(shù)為6,因此,判斷條件“i>j”執(zhí)行的次數(shù)也為6次,本題的正確答案選D。

63.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件,則跳出本層循環(huán)體。

64.A考查文件操作函數(shù)fopen的基礎(chǔ)知識,以”W”方式打開文件,只能寫不能讀。選項A正確。

65.C解析:考查棧和隊列概念的掌握。棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進行插入或刪除操作,是一種'后進先出'的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種'先進先出'的線性表。模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。

66.D

67.A本題主要考查if結(jié)構(gòu)的應(yīng)用。在程序中,首先定義三個整型變量a,b,c,并分別賦初值為2,-1,2,然后執(zhí)行第一條if語句,由于變量a的值大于變量b的值,a<b為假,那么接著執(zhí)行第二條if語句,由于變量b的值小于0,b<0為真,則執(zhí)行c=0,這時跳過else結(jié)構(gòu),輸出結(jié)果為0。

提醒注意:if與else結(jié)構(gòu)具有就近結(jié)合的原則。本題中的else結(jié)構(gòu)與第二個if語句結(jié)合,而不是與第一個if語句結(jié)合。

68.D

69.C

70.B本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在執(zhí)行函數(shù)func時,由于全局定義了一個變量b,所以在函數(shù)體中執(zhí)行b=2+1=3,最終t=2+3=5。

71.A

72.C本題考查for循環(huán)及if語句。當(dāng)執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,break跳出循環(huán),執(zhí)行下列的printf語句。

73.C

74.C

75.B

76.Aprintf(”%d\n”,ll+叭1),11為十進制,011為八進制形式,打印格式%d表示十進制格式輸出,因此,先將八進制數(shù)轉(zhuǎn)化為十進制,011(8)=81s1+1+80=9,相當(dāng)于printf(”%d\n”,ll+9),故答案為20,A選項正確。

77.BQ(1:35)則隊列的存儲空間為35;對空條件:front=rear(初始化時:front=rear),隊滿時:(rear+1)%n==front,n為隊列長度(所用數(shù)組大小),因此當(dāng)執(zhí)行一系列的出隊與入隊操作,front=rear.則隊列要么為空,要么為滿。

78.C本題主要考查關(guān)鍵字typedef的作用和結(jié)構(gòu)體的初始化。C語言不僅提供了豐富的數(shù)據(jù)類型,而且還允許由用戶自己定義類型說明符,也就是說,允許由用戶為已存在的數(shù)據(jù)類型名定義一個“別名”。類型定義符typedef即可用來完成此功能。說明新類型名的語句一般形式為:

typedef類型名標(biāo)識符;

這里的“類型名”必須是在此語句之前已有定義的類型標(biāo)識符,可以是任何基本類型、結(jié)構(gòu)或聯(lián)合類型符號。

在本題中,通過題目中程序的定義可以知道,STD為該結(jié)構(gòu)體的類型,而不是結(jié)構(gòu)體變量,因此,STDtt[2]的聲明是正確的。

由于結(jié)構(gòu)體的第三個成員變量為雙精度型,而在選項A中,輸入與其對應(yīng)的值是整型,數(shù)據(jù)類型不匹配,因此不正確。

由于結(jié)構(gòu)體的第二個成員變量為字符型,而在選項B和選項D中,用雙引號引起,表示字符串,而不是單個字符,因此不正確。

在選項C中,雖然缺少一個元素,但系統(tǒng)提供了一個默認的值0。因此,這個賦值語句是正確的。

79.B

80.A本題考查軟件的測試方法。

測試任何產(chǎn)品都有兩種方法:如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用;如果知道產(chǎn)品內(nèi)部工作過程,可以通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行。前一個方法稱為黑盒測試,后一個方法稱為白盒測試。

對于軟件測試而言,黑盒測試法把程序看成一個黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,是在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫或文件)的完整性。黑盒測試又稱為功能測試。

與黑盒測試法相反,白盒測試法的前提是可以把程序看成裝在一個透明的白盒里,也就是完全了解程序的結(jié)構(gòu)和處理過程。測試人員依據(jù)程序內(nèi)部邏輯結(jié)構(gòu)的相關(guān)信息,設(shè)計或選擇測試用例,對程序所有的邏輯路徑進行窮舉測試,通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。

81.(1)錯誤:if((k%13=0)||(k%17=0))

正確:if((k%13==0)||(k%17==0))

(2)錯誤:缺少大括號

正確:在“k-=;”后加}

【解析】題目中要求能被13或17整除的自然數(shù),判斷整除條件是取余恒等于0,判斷相等的符號應(yīng)該用“==”,符號“=”是賦值符號,因此“=”應(yīng)改為“==”;在C語言中,括號一定是成對出現(xiàn)的,因此,在語句“k——;”后要加上符號“}”。

82.doubleproc(intm)

\n{

\ninti;

\ndoubles=0.0;//s是表示其和

\nfor(i=1;i<=m;i++)

\ns=s+log(i);//計算s=ln(1)+ln(2)+ln(3)+…+ln(m)

\nreturnsqrt(s);//最后將其開平方的值返回到主函數(shù)中

\n}

\n【解析】由題目中所給表達式可知,表達式的值為m項表達式的和然后開平方??梢允紫韧ㄟ^m次循環(huán)求得m項表達式的和,然后將其和開平方并返回到主函數(shù)當(dāng)中。

\n2021年海南省三亞市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.設(shè)有定義:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若變量均已正確賦初值,則以下語句中錯誤的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

3.

4.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

5.

6.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a(chǎn)[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序運行后的輸出結(jié)果是()。A.12345B.23445C.34756D.35745

7.有以下程序:#include<stdio.h>main(){inta=123456,b;while(a){b=a%10;a/=10;switch(b){default:printf(“%d”,b++);case1:case2:printf(“%d”,b++);break;case3:printf(“%d”,b++);break;case4:printf(“%d”,b++);}}}程序運行后的輸出結(jié)果是()。

A.76654321B.12345667C.67564321D.654321

8.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復(fù)制C.計算字符串的長度D.字符串的連接

9.一個算法應(yīng)當(dāng)具有5個特性,以下敘述中正確的是()。

A.有窮性、確定性、復(fù)雜性、有零個或多個輸入、有一個或多個輸出

B.有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出

C.有窮性、確定性、可行性、必須要有一個以上的輸入、有一個或多個輸出

D.有窮性、確定性、復(fù)雜性、有零個或多個輸入、必須要有多個輸出

10.有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(“%d\n”,s);}程序的運行結(jié)果是()。

A.10B.30C.0D.64

11.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型的是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是

12.下列敘述中錯誤的是()。

A.C語言程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行過程中進行的

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.“#defmeMAX”是合法的宏定義命令行

D.在程序中,凡是以“#”開始的語句行都是預(yù)處理命令行

13.一個棧的進棧序列是a,b,c,d,e,則棧的不可能的輸出序列是()。

A.edcbaB.decbaC.dceabD.abcde

14.程序中若有如下說明和定義語句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;.....}以下選項中對函數(shù)Fun的正確調(diào)用語句是______。A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);

15.定義無符號整數(shù)類為UInt,下面可以作為類UInt實例化值的是A)B)369C)0.369D)A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}

16.設(shè)有以下語句

typedefstructS

{intg;charh;}T;

則下面敘述中正確的是()A.可用S定義結(jié)構(gòu)體變量B.可以用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

17.執(zhí)行下面的程序段后,變量k中的值為()。intk=3,s[2];s[0]=k;k=s[1]*10;

A.不定值B.33C.30D.10

18.為了使模塊盡可能獨立,要求_____。A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強

19.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

20.若有定義“intx=10;”,則表達式“x-=x+x”的值為()。

A.0B.-20C.-10D.10

二、2.填空題(20題)21.沒有chara,b;,,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

22.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是______。

structnode

{chardata;

structnode*next;}a,b

以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}

23.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

24.以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結(jié)束標(biāo)志。請?zhí)羁铡?include<stdio.h>long();/*函數(shù)說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

25.以下程序的輸出結(jié)果是【】。

main()

{inta=0;

a+=(a=8);

printf("%d\n",A);

}

26.計算機指令是由【】和地址碼組成的。

27.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素的最大值。請?zhí)羁铡?/p>

voidfun(int,int,int(*)[4],int*);

main()

{

inta[3][4]={{12,41,36,28},{19,33,15,27),{3,27,19,1}},b[3],i;

fun(3,4,a,B);

for(i=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

for(i=0;i<m;i++)

{

x=ar[i][0];

for(i=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=X;

}

}

28.下列程序的功能是輸入一個整數(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);

}

29.下列程序段的運行結(jié)果是______。

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

30.以下程序的定義語句中,x[1]的初值是[9],程序運行后輸出的內(nèi)容是[10]。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

for(i=0;i<4;i++)

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

31.以下程序的輸出結(jié)果是【】。

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

32.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

printf("%d%d\n",a,b);

}

33.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

34.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

35.設(shè)有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。

36.排序是計算機程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

37.以下函數(shù)的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

38.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算s,計算結(jié)果通過形參指針sn傳回;n通過形參傳入,n的值大于或等于0。請?zhí)羁铡?/p>

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti;

for(i=0;i<=n;i++)

{f=【】*f;

w=f/(2*i+1);

s+=w;

}

【】=s;

}

39.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。

40.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

printf("%d\n",k);}

三、1.選擇題(20題)41.以下不能正確定義二維數(shù)組的選項是()。

A.inta[2][12]={{1},{2}};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3}:

D.inta[2][]={{1,2},{3,4}};

42.函數(shù)rewind的作用是

A.使文件位置指針重新返回文件的開始位置

B.將文件位置指針指向文件中所要求的特定位置

C.使文件位置指針指向文件的末尾

D.使文件位置指針自動移至下一個字符位置

43.下面對對象概念描述,不正確的是

A.任何對象都必須有繼承性B.對象是屬性和方法的封裝體C.對象間的通訊靠消息傳遞D.操作是對象的動態(tài)屬性

44.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7

45.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a+b);

46.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序運行后的輸出結(jié)果是()。

A.6B.7C.5D.8

47.以下程序運行后的輸出結(jié)果是______。main(){inta=1,b=2,c=3;if(c=a)printf("%d\n",c);elseprintf("%d\n",b);}

A.2B.3C.5D.1

48.下面程序的輸出結(jié)果是()main(){charx=040;print{("%d\n",x=x<<1);}

A.100B.160C.120D.64

49.兩次運行下面的程序后,如果從鍵盤上分別輸入7和3,則輸出結(jié)果是______。main(){intx;scanf("%d",&x);if(++x>5)printf("%d",x);elseprintf("%d\n",x--);}

A.7和5B.6和3C.7和4D.8和4

50.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()。A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)

51.下列選項中不是結(jié)構(gòu)化程序基本結(jié)構(gòu)的是

A.順序結(jié)構(gòu)B.跳轉(zhuǎn)分支結(jié)構(gòu)C.選擇結(jié)構(gòu)D.循環(huán)結(jié)構(gòu)

52.假定x和y為double型,則表達式x=2,y=x+3/2的值是

A.3.5B.3C.2D.3

53.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運行后的輸出結(jié)果是______。

A.12353514B.12353513C.12343514D.12343513

54.循環(huán)鏈表的主要優(yōu)點是()

A.不再需要頭指針了

B.從表中任一結(jié)點出發(fā)都能訪問到整個鏈表

C.在進行插入、刪除運算時,能更好的保證鏈表不斷開

D.已知某個結(jié)點的位置后,能夠容易的找到它的直接前件

55.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

56.下列敘述中正確的是A.程序設(shè)計就是編制程序

B.程序的測試必須由程序員自己去完成

C.程序經(jīng)調(diào)試改錯后還應(yīng)進行再測試

D.程序經(jīng)調(diào)試改錯后不必進行再測試

57.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段

58.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結(jié)果是

#include<stdio.h>

main()

{charc;

intv0=1,v1=0,v2=0;

do{switch(c=getchar())

{case′a′:case′A′:

case′e′:case′E′:

case′i′:case′I′:

case′o′:case′O′:

case′u′:case′U′:v1+=1;

default:v0+=1;v2+=1;}}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

59.在C語言程序中,下列說法正確的是()。

A.函數(shù)的定義和函數(shù)的調(diào)用均可以嵌套

B.函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套

C.函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套

D.函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套

60.假定以下程序經(jīng)編譯和連接后生成可執(zhí)行文件PROG.EXE,如果在此可執(zhí)行文件所在目錄的DOS提示符下鍵入:PROGABCDEFGHIJKL<回車>則輸出結(jié)果是()。#include<stdio.h>main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf("\n");}

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

四、選擇題(20題)61.對于一個正常運行的C程序,以下敘述中正確的是()。A.程序的執(zhí)行總是從main函數(shù)開始

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束

C.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

62.在下述程序中,判斷條件“i>j”共執(zhí)行的次數(shù)是

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf("%d",s);

break;

}s+=i;

}

}

A.4B.7

C.5D.6

63.下列敘述中正確的是()。

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論