2021年山西省陽泉市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021年山西省陽泉市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021年山西省陽泉市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021年山西省陽泉市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021年山西省陽泉市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年山西省陽泉市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.對包含N個元素散列表進(jìn)行查找,平均查找長度()。

A.為OB.為O(N)C.不直接依賴ND.上述三者都不是

2.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.

4.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14

5.以下定義語句中正確的是()。

A.inta=b=0;

B.charA=65+1,b=‘b’;

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

6.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))

B.每個函數(shù)都可以被單獨(dú)編譯

C.每個函數(shù)都可以單獨(dú)運(yùn)行

D.在一個函數(shù)內(nèi)部可以定義另一個函數(shù)

7.能在O(1)時間內(nèi)訪問線性表的第i個元素的結(jié)構(gòu)是()

A.順序表B.單鏈表C.單向循環(huán)鏈表D.雙向鏈表

8.以下說法錯誤的是()。

A.C語言標(biāo)識符中可以有多個字母、數(shù)字和下劃線字符

B.C語言標(biāo)識符中下劃線字符可以出現(xiàn)在任意位置

C.C語言標(biāo)識符不能全部由數(shù)字組成

D.C語言標(biāo)識符必須以字母開頭

9.有以下定義和語句

StructWorkers

{intnum;charname[20];charc;

struct

{intday;intmonth;intyear;}s;

};

StructWorkersW,*pe;

PW=&W;

能給W中yeaR成員賦1980的語句是A.*pW.yeaR=1980;

B.W.yeaR=1980;

C.pW->yeaR=1980;

D.W.s.yeaR=1980;

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

A.順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲空間不一定是連續(xù)的

B.順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈?zhǔn)酱鎯Y(jié)構(gòu)只針對非線性結(jié)構(gòu)

C.順序存儲結(jié)構(gòu)能存儲有序表,鏈?zhǔn)酱鎯Y(jié)構(gòu)不能存儲有序表

D.鏈?zhǔn)酱鎯Y(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間

11.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

12.

13.

14.下列不屬于過程設(shè)計(jì)工具中圖形工具的是()。

A.N—SB.PADC.程序流程圖D.PDL

15.以下敘述中正確的是()。

A.無論指針變量P具有何種基類型,表達(dá)式“p=p+1”都代表指針P移動1個字節(jié)

B.指針變量具有基類型,基類型不同的指針變量不能直接相互賦值

C.指針變量的賦值操作“p=0;”是非法的

D.通過指針變量存取某個變量值的方式稱為“直接存取”方式

16.若有以下程序段intm=0xabc,n=0xubc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是

A.0X0B.0x0C.0D.0XABC

17.以下敘述中錯誤的是()

A.在C程序中,APH和aph是兩個不同的變量

B.C程序中的變量,代表內(nèi)存中的一個存儲單元,它的值可以根據(jù)需要隨時修改

C.在C程序中,無論是整數(shù)還是實(shí)數(shù),都能準(zhǔn)確無誤地表示

D.在C程序中,一個正整數(shù)可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式來表示

18.以下說法正確的是()。

A.數(shù)據(jù)項(xiàng)是數(shù)據(jù)的基本單位

B.數(shù)據(jù)元素是數(shù)據(jù)的最小單位

C.數(shù)據(jù)結(jié)構(gòu)是帶結(jié)構(gòu)的數(shù)據(jù)項(xiàng)的集合

D.一些表面上很不相同的數(shù)據(jù)可以有相同的邏輯結(jié)構(gòu)

19.一個順序棧一旦聲明,其占用空間的大小()。

A.已固定B.可以變動C.不能固定D.動態(tài)變化

20.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序運(yùn)行后的輸出結(jié)果是()。

A.efgabcdhijklmnopq

B.abcdefghijklmnopq

C.mnopqhijklefgabcd

D.efgabcdmnopqhijkl

二、2.填空題(20題)21.若線性表的長度經(jīng)常發(fā)生變化,那么該線性表應(yīng)采用的存儲結(jié)構(gòu)是【】。

22.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

23.以下程序的運(yùn)行結(jié)果是【】。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%s\n",p);

}

24.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

25.以下程序中,select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。請?zhí)羁铡?/p>

#defineN3

#defineM3

select(inta[N][M],int*n)

{inti,j,row=1,colum=1;

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

for(j=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n=【】;

return(【】);

}

main()

{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;

max=select(a,&n);

printf(“max=%d,line=%d\n”,max,n);

}

26.以下程序運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)return(2);

p=x*func(x-1);

return(p);}

main()

{printf("%d\n",func(4));}

27.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

28.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當(dāng)字符串是回文時,函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda,請?zhí)羁铡?/p>

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=();

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(t==0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

printf("%s\n",huiwen(str));

}

29.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是【】。

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

30.設(shè)有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

31.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。

32.實(shí)體之間的聯(lián)系可以歸結(jié)為一對一聯(lián)系、一對多(或多對多)的聯(lián)系與多對多聯(lián)系。如果一個學(xué)校有許多教師,而一個教師只歸屬于一個學(xué)校,則實(shí)體集學(xué)校與實(shí)體集教師之間的聯(lián)系屬于______的聯(lián)系。

33.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

34.下面程序的運(yùn)行結(jié)果是【】。

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

35.若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>

p=【】malloc(sizeof(double));

36.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

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

#defineMAX3

inta[MAX];

main()

{fun1();fun2(a);printf("\n");}

fun1()

{intk,t=0;

for(k=0;k<MAX;k++,t++)a[k]=t+t;

}

fun2(intb[])

{intk;

for(k=0;k<MAX;k++)printf("%d",*(b+k));

}

38.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu)、存取方式等)改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

39.若有如下程序:

sub(int*y)

{while(--(*y));

printf("%d",(*y)--);}

main()

{intx=10;

sub(&x);

}

則程序運(yùn)行后的輸出結(jié)果是【】。

40.若有如下結(jié)構(gòu)體說明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。

【】t[20]

三、1.選擇題(20題)41.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

42.有以下程序:#include<string.h>voidf(charp[][10],intn)/*字符串從小到大排序*/{chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdog","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序運(yùn)行后的輸出結(jié)果是()。

A.2B.4C.6D.3

43.以下敘述中不正確的是

A.C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)

B.C語言中對二進(jìn)制文件的訪問速度比文本文件快

C.C語言中,隨機(jī)讀寫方式不適用于文本文件

D.C語言中,順序讀寫方式不適用于二進(jìn)制文件

44.表達(dá)式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8

45.若程序執(zhí)行時的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=,'\n'){switch(cs='2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

46.以下程序的輸出結(jié)果是()。{intx;int*y;}*p;intdt[4]={1,2,3,4};structstaa[4]={2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],};{p=aa;pfintf("%d\n",++(p->x));}

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

47.對存儲器按字節(jié)進(jìn)行編址,若某存儲器芯片共有10根地址線的引腳,則該存儲器芯片的存儲容量為()

A.512BB.1KBC.2KBD.4KB

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

A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);

49.以下對C語言函數(shù)的有關(guān)描述中,正確的是

A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳給形參,形參的值不能傳送給實(shí)參

B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C.函數(shù)必須有返回值,否則不能使用函數(shù)

D.函數(shù)必須有返回值,返回值類型不定

50.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循環(huán),不能確定次數(shù)

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

A.C語言編譯時不檢查語法B.C語言的子程序有過程和函數(shù)兩種C.C語言的函數(shù)可以嵌套定義D.C語言的函數(shù)可以嵌套調(diào)用

52.在調(diào)用函數(shù)時,如果實(shí)參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實(shí)參傳遞給形參,再由形參傳遞給實(shí)參D.傳遞方式由用戶指定

53.以下對結(jié)構(gòu)體類型變量的定義中,不正確的是()

A.typedefstructaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm,}tdl;

54.以下選項(xiàng)中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

55.下列不合法的用戶標(biāo)識符是()。

A.j2_KEYB.DoubleC.4dD._8_

56.下列程序的輸出結(jié)果是______。main(){inti;for(i=l;i<6;i++){if(i%2){printf("#");continue;}printf("*");}printf("\n");}

A.#*#*#B.#####C.****D.*#*#*

57.有以下程序main(){char*p[10]={"abc",aabdfg","dedbe","abbd","cd"};printf("%d\n",stxlen(p[4]));}執(zhí)行后輸出結(jié)果是

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

58.下面程序段的運(yùn)行結(jié)果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

59.有以下程序:mare(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。

A.45B.20C.25D.36

60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}

A.a=0,b=0,c=0B.a=1,b=1,c=1C.a=1,b=0,c=1D.a=0,b=1,c=1

四、選擇題(20題)61.下列敘述中錯誤的是()。

A.列表框和組合框都有List屬性

B.列表框有Selected屬性,而組合框沒有

C.列表框和組合框都有Style屬性

D.組合框有Text屬性,而列表框沒有

62.下列SQL語句中,用于修改表結(jié)構(gòu)的命令式是A.A.Alter

B.Create

C.Update

D.Insert

63.

有以下程序:

intfun(intx)

{intp;

if(x==0||x==1)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

執(zhí)行后的結(jié)果是()。

A.7B.3C.2D.0

64.有以下程序(注:字符a的ASCIl碼值為97)

#include<stdio.h>

main()

{char*s={"abc")

do

{printf("%d",*S%10");++S;}

while(*s);

}

隉序運(yùn)行后的輸出結(jié)果是()。

A.abcB.789C.7890D.979899

65.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.X…Y5;B.X=n%2.5;C.X+n=i;D.x=5=4+1:

66.下列敘述中正確的是()。A.在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化

B.在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化

C.在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化

D.在棧中,棧中元素不會隨棧底指針與棧頂指針的變化而動態(tài)變化

67.

68.有以下程序程序運(yùn)行后的輸出結(jié)果是()。

A.1,3B.2,3C.1,4D.1.2

69.

70.下列程序執(zhí)行后的輸出結(jié)果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

71.

72.

73.若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

74.面向?qū)ο蠓椒ㄖ校^承是指()。

A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制

75.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.852B.963C.741D.875421

76.下列關(guān)于棧的敘述中,正確的是()。

A.棧底元素一定是最后入棧的元素B.棧操作遵循先進(jìn)后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對

77.在C語言中,運(yùn)算對象必須是整型數(shù)的運(yùn)算符是()。

A.%B.\C.%和\D.**

78.

79.

有以下程序:

voidf(intx,inty)

{intt;

if(x<y){t=x;x=Y;y=t;)

}

main

{inta=4,b=3,c=5;

f(a,b);f(a,c);f(b,c);

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

}

執(zhí)行后輸出結(jié)果是()。

A.3,4,5B.5,3,4C.5,4,3D.4,3,5

80.以下語句中存在語法錯誤的是()。

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。

例如,若n=12,則應(yīng)輸出0.618026。

請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫—個函數(shù),用來刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.C

2.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

3.A

4.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。

5.BA選項(xiàng)中的變量b沒有定義,不能直接給變量a賦值。C選項(xiàng)中,*b、*c表示的是一個實(shí)型變量的地址,不能將指針型變量b的地址賦值給指針型變量c。D選項(xiàng)中,“a=0.0”后面應(yīng)該為逗號,不能是分號。故本題答案為B選項(xiàng)。

6.B在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項(xiàng)A)錯誤;C程序從main函數(shù)開始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時,整個程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)開始,選項(xiàng)C)選項(xiàng)錯誤;函數(shù)不能嵌套定義,選項(xiàng)D)錯誤。

7.A

8.DC語言的合法的標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下劃線組成,并且第1個字符必須是字母或下劃線。選項(xiàng)D錯誤。本題答案為D選項(xiàng)。

9.D解析:結(jié)構(gòu)體structureworkers中的成員s是結(jié)構(gòu)體類型,給w中成員year賦值的語句是w.s.year=1980,故選D。

10.A解析:順序存儲結(jié)構(gòu)就是用一組地址連續(xù)的存儲單元依次存儲該線性表中的各個元素,鏈?zhǔn)酱鎯Y(jié)構(gòu)中各數(shù)據(jù)結(jié)點(diǎn)的存儲序號是不連續(xù)的,并且各結(jié)點(diǎn)在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致,所以選項(xiàng)A是正確的。兩者都可以存儲線性的、有序的邏輯結(jié)構(gòu),所以選項(xiàng)B、C不正確。順序結(jié)構(gòu)使用的是連續(xù)物理空間,鏈?zhǔn)浇Y(jié)構(gòu)可以使用零散的物理空間存儲,鏈?zhǔn)浇Y(jié)構(gòu)更靈活,不存在誰節(jié)約空間的說法,所以選項(xiàng)D不正確。

11.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項(xiàng)錯誤。故本題答案為C選項(xiàng)。

12.B

13.D

14.D\n常用的過程設(shè)計(jì)工具有圖形工具(程序流程圖、N-S圖、PAD圖、HIPO)、表格工具(判定表)、語言工具(PDL)。

\n

15.B指針自增或自減1,移動的字節(jié)數(shù)與指針變量的基類型有關(guān),假設(shè)指針變量p基類型為int類型,那么“p=p+1”表示指針P移動4個字節(jié)(通常int類型占4個字節(jié)),選項(xiàng)A錯誤;指針變量具有基類型,基類型不同的指針變量不能直接相互賦值,選項(xiàng)B正確;將0賦給指針變量,表示指針變量的值為空,這是合法的,選項(xiàng)C錯誤;通過指針變量存儲指向變量的地址并通過指針存取變量的值,稱為“間接存取”方式,選項(xiàng)D錯誤。故本題答案為B選項(xiàng)。

16.C解析:C語言中的自反賦值運(yùn)算符。“m-=n”相當(dāng)于“m=m-n”,兩個相等的數(shù)相減,其值為0。

17.C

18.D

19.A

20.Bmain函數(shù)中定義一個二維數(shù)組v,另外還定義一個指針數(shù)組p。通過for循環(huán),將v的各個行(字符串的首地址)賦給P的對應(yīng)下標(biāo)的元素。然后通過嵌套的for循環(huán),為該二維數(shù)組中存放的各個字符串進(jìn)行排序。strcmp函數(shù)返回值大于0時(p[i]>p[j])交換兩個字符串,所以每一輪內(nèi)嵌的for循環(huán),都將下標(biāo)為i的字符串放在最終的排序位置上,即排序規(guī)則是按字符串升序排列。字符串排序時,是將兩個字符串自左向右逐個字符比較(按字符的ASCII值大?。?,直到出現(xiàn)不同的字符或遇到‘\\0’為止。排序后,再將v中各個排序后的字符串輸出。所以程序輸出結(jié)果為:abcdefghijklmnopq。故本題答案為B選項(xiàng)。

21.鏈?zhǔn)酱鎯Y(jié)構(gòu)鏈?zhǔn)酱鎯Y(jié)構(gòu)

22.->->解析:若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的標(biāo)記形式有abc.a和p_abc->a。

23.efghefgh解析:函數(shù)ss返回形參s所指向的符號串的后半部分,故p='efgh'。

24.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

25.rowa[row][colum]row\r\na[row][colum]解析:指針變量作為函數(shù)參數(shù)及二維數(shù)組的一個典型算法——求最大值及其下標(biāo)。通過對題意的分析,在select()函數(shù)中,變量row的作用是用來記錄最大元素的行下標(biāo),colum的作用是用來記錄最大元素的列下標(biāo)。程序中通過一個循環(huán)求得數(shù)組元素中最大值的行列下標(biāo),分別存放在變量row和colum中,根據(jù)題意,應(yīng)該把行下標(biāo)賦值給形參指針變量n指向的變量,把最大值a[row][colum]作為函數(shù)值返回。

26.4848解析:本題主要考查的是函數(shù)的遞歸調(diào)用,遞歸的終止條件是x==0或x==1,然后用已知值逐步遞推向上求未知值,直到得到最終的結(jié)果。

func(4)=4*func(3);

func(3)=3*func(2);

func(2)=2*func(1);

func(1)=2;

所以func(2)=2*2=4;

func(3)=3*4=12;

fune(4)=4*12=48。

27.存儲結(jié)構(gòu)

28.str+strlen(str)-1str+strlen(str)-1解析:檢查一個字符串是否是回文,函數(shù)huiwen中定義了兩個字符指針,pl=str指向字符串頭,p2應(yīng)該指向字符串尾,因此該處應(yīng)該填入:str+strlen(str)-1或&str[strlen(str)-1]。

29.22

30.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點(diǎn):①在c語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標(biāo)識符'\\0',所以題中數(shù)組str有6個元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

31.空間空間解析:程序在計(jì)算機(jī)上運(yùn)行時所耗費(fèi)的時間由程序運(yùn)行時所需輸入的數(shù)據(jù)總量、對源程序進(jìn)行編譯所需時間、計(jì)算機(jī)執(zhí)行每條指令所需時間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運(yùn)行時間的相對量度,稱作算法的時間復(fù)雜度。算法在運(yùn)行過程中需輔助存儲空間的大小稱為算法的空間復(fù)雜度。

32.一對多或1:N。一對多或1:N。

33.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。

34.x=11x=11解析:在對無符號數(shù)的右移是高位補(bǔ)0。

35.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲單元時,要在前面用強(qiáng)制類型轉(zhuǎn)換符說明該存儲單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點(diǎn)型數(shù)據(jù)的指針變量p分配存儲單元,因此用(double*)說明。

36.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。

37.024

38.物理獨(dú)立性物理獨(dú)立性

39.00解析:while循環(huán)的條件為即當(dāng)*y非零時執(zhí)行循環(huán),-(*y)先對*y的值減1,再使用*y的值,不再執(zhí)行while循環(huán)時最后*y的值為0,輸出函數(shù)中的(*y)--,是先使用*y的值再對*y減1,就是先輸出0。

40.strudctSTRUstrudctSTRU解析:結(jié)構(gòu)件類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。

結(jié)構(gòu)體類型的定義:

struct結(jié)構(gòu)體類型名

{

成員項(xiàng)表;

};

定義結(jié)構(gòu)體變量的的形式為:

struct結(jié)構(gòu)體類型名變量1,變量2,...?

其中變量包括;一般變量、指針變量、數(shù)組變量等。

41.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

42.C解析:題目中已告知函數(shù)f()的作用是將字符串從小到大排序,因此主函數(shù)中調(diào)用完f(p,5);后,二維數(shù)組p中的內(nèi)容為('aabdfg','abbd','abc','cd','dcdbc'}。輸出的結(jié)果是strlen(p[0]),即p中第1個字符串的長度,所以結(jié)果是6。故本題應(yīng)該選擇C。

43.D解析:在C語言中文本文件是以ASCII碼形式存放的,每個字符占一個字節(jié)。由于數(shù)據(jù)在計(jì)算機(jī)中是以二進(jìn)制形式存放的,因此二進(jìn)制文件中的數(shù)據(jù)可以直接讀出,而不需要像文本文件那樣把ASCII碼轉(zhuǎn)換成二進(jìn)制,因此速度較快。在文本文件葉,,數(shù)據(jù)以ASCII碼形式存放,用戶很難判定一個數(shù)據(jù)到底占幾個字節(jié),所以不適合使用隨機(jī)讀寫方式。數(shù)據(jù)以二進(jìn)制形式存放,占有的字節(jié)數(shù)是固定的,所以可以進(jìn)行隨機(jī)讀寫,當(dāng)然也可以順序讀寫。故D選項(xiàng)為所選。

44.A解析:在C語言中,雖然字符都是變?yōu)槠鋵?yīng)的ASCII碼值來參與算術(shù)運(yùn)算的,但字符間的相對位置關(guān)系還是不變的,字符8和字符2的ASCII碼值相差仍是6。

45.A解析:本題主要考查switch語句的使用方法。switch語句的執(zhí)行過程為:進(jìn)入switch結(jié)構(gòu)后,對條件表達(dá)式進(jìn)行運(yùn)算,然后從上至下去找與條件表達(dá)式值相匹配的case,以此作為入口,執(zhí)行switch結(jié)構(gòu)中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時,則執(zhí)行default后面的語句。

46.C解析:程序首先將指針p指向結(jié)構(gòu)體數(shù)組aa的首地址,通過p->x引用了結(jié)構(gòu)體數(shù)組aa[0]的第一個成員2;++(p->x)是將p->x的值加1,所以輸出結(jié)果為3。

47.B

48.A

49.A解析:C語言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但不能在函數(shù)中定義函數(shù),即函數(shù)不能嵌套定義。函數(shù)可以沒有返回值,若有返回值,則返回值類型必須確定。

50.D解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當(dāng)break出現(xiàn)在switch語句體內(nèi)時,其作用只是跳出該switch語句體。當(dāng)break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體.而continue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判定。本程序中,變量i的初始值為0,判斷while后面括號內(nèi)表達(dá)式的值為真,執(zhí)行循環(huán)體內(nèi)的if語句,判斷if后面括號內(nèi)表達(dá)式的值為真,執(zhí)行“continue;”語句.因continue的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判斷,所以i的值未發(fā)生變化,循環(huán)條件仍然為真,if語句也仍然成立,因此循環(huán)將無止境地進(jìn)行下去。所以,4個選項(xiàng)中D為所選。

51.D解析:C語言相對其他高級語言來說,放寬了語法檢查,因此程序設(shè)計(jì)自由度大,但并不是不檢查語法,C語言的程序是由函數(shù)構(gòu)成的。函數(shù)不能嵌套定義,但是可以嵌套調(diào)用。

52.B解析:C語言以定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“單向值傳遞”,只由實(shí)參傳紿形參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。調(diào)用結(jié)束后,實(shí)參單元仍保留并維持原值。

53.C解析:定義結(jié)構(gòu)體類型的變量有幾種的方法如下:

①定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體類型的變量,如下面的定義中在定義結(jié)構(gòu)體類型aa的同時定義了該類型的變量tdl。上述B)項(xiàng)中將宏名AA用宏體structaa替換進(jìn)去后,與該定義形式一樣,因此是正確的。這一定義形式中,結(jié)構(gòu)體類型名明是可以省略的,因此,D)項(xiàng)也是正確的。

structaa

{...

}tdl;

②先定義結(jié)構(gòu)體類型,然后再定義結(jié)構(gòu)體類型的變量,形式如下:

structaa

{

};

structaatdl;

這種定義形式也可演變?yōu)?,先用類型定義語句typedef將該結(jié)構(gòu)體類型定義成一個類型名AA,然后直接用該類型名AA去定義一個變量(這時不再需要使用關(guān)鍵字struct了)。這就是A)項(xiàng)的形式。

54.D解析:選項(xiàng)A)在C語言中是一個合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計(jì)算0<=x<100時,從左到右結(jié)合,先計(jì)算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運(yùn)算符的優(yōu)先級,選項(xiàng)B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項(xiàng)C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項(xiàng)D)是將一個數(shù)據(jù)賦給一個表達(dá)式,等號左邊不合要求,所以錯誤。

55.C解析:在C語言程序中,合法標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下劃線組成,并且第一個字符必須是字母或下劃線。

56.A

57.A解析:本題中首先定義了一個長度為10的指針數(shù)組,并賦初值,因此執(zhí)行strlen(p[4])后的返回值為字符串“cd”的長度為2。

58.C解析:本段程序的作用是輸出字符串“l(fā)anuage”中字母u之前的字符,并將其轉(zhuǎn)化為大寫字母。注意:如果一個字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時,數(shù)組的大小就應(yīng)該比它將要實(shí)際存放的最長字符多一個元素,以存放‘\\0’。

59.C解析:要獲得數(shù)組t的第i個元素的內(nèi)容,既可以使用常規(guī)的t[i]表達(dá)式,也可以將數(shù)組名t看作一個指針常量,使用表達(dá)式*(t+i)來獲取數(shù)組t的第i個元素的內(nèi)容。在本題中,for循環(huán)會循環(huán)5次,循環(huán)變量i從。開始,每次加2。所以,循環(huán)結(jié)束后,s中的值為t[0]+t[2]+t[4]+t[6]+t[6]+t[8]=1+3+5+7+9=25。故應(yīng)該選擇C。

60.C解析:“||”是或運(yùn)算,它有個“短路”的特點(diǎn)需特別注意,當(dāng)“||”運(yùn)算符左邊的表達(dá)式的值為真時,則程序就不再對“||”右邊的表達(dá)式的值進(jìn)行運(yùn)算,而是使得整個表達(dá)式的值直接為真。

61.BB?!窘馕觥拷M合框和列表框都沒有selected屬性。

62.A本題主要考查SQL中一些基本的命令。SQL常用的語句包括:Select、Insert、Update、Delete、Create、Alter和Drop等。

在SQL語言中使用率最高的是Select,這個命令的作用是從表中查找出滿足條件的記錄。

Insert命令的作用是對數(shù)據(jù)表進(jìn)行插入操作。

Update命令的作用是對數(shù)據(jù)表進(jìn)行更新操作。

Delete命令的作用是對數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行刪除操作。

Create命令的作用是創(chuàng)建數(shù)據(jù)表。

Alter命令的作用是修改表的結(jié)構(gòu)。

Drop命令的作用是用來刪除表,它與Delete的區(qū)別是進(jìn)行Drop操作后,數(shù)據(jù)表不存在了,而進(jìn)行Delete操作后,數(shù)據(jù)表還在,只是數(shù)據(jù)被刪除了。

63.C

\n調(diào)用函數(shù)fun(7)時,由于x的值為7,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(5);

\n調(diào)用函數(shù)fun(5)時,由于x的值為5,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(3);

\n調(diào)用函數(shù)fun(3)時,由于x的值為3,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(1);

\n調(diào)用函數(shù)fun(1)時,由于X的值為1,執(zhí)行語句“return(3);”,函數(shù)的返回值為3。

\n因此函數(shù)調(diào)用fun(7)等價于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。答案為C。

\n

64.B\n程序中的*s%10是求余運(yùn)算,分別是a、b、C的ASCIl碼值對10進(jìn)行求余運(yùn)算然后輸出,所以輸出的答案為789。r

\n

65.AB選項(xiàng)中運(yùn)算符“%”的前后必須為整數(shù),C選項(xiàng)中不能將變量賦給表達(dá)式x+n,D選項(xiàng)中不能將表達(dá)式4+1賦給常量5。

66.C棧是先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),在對棧操作的整個過程中,棧底指針不變,入棧與出棧操作均由棧頂指針的變化來完成,因此本題答案為c)。

67.B

68.Af函數(shù)功能使第二個指針指向的元素增1,第一個指針指向的元素不變,所以答案選擇A)。

69.A

70.D解析:本題中的宏調(diào)用MA(1+a+b)展開后的結(jié)果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以輸出的結(jié)果是8,選項(xiàng)D正確。

71.B

72.D

73.B當(dāng)n為9時,此時if語句成立,執(zhí)行n++后,n為10,因此輸出n的值為10,故選擇B選項(xiàng)。

74.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。

75.A第一次for循環(huán),y的值為9,y%3的值為3,滿足條件打印一一Y,即先減一后打印,所以打印8;第二次for循環(huán),Y的值為7,y%3的值為1,不執(zhí)行打印語句;第三次for循環(huán),y的值為6,y%3的值為0,滿足條件打印一一Y,即先減一后打印,所以打印5;第四次for循環(huán),Y的值為4,不滿足if條件,不執(zhí)行打印語句;第五次for循環(huán),Y的值為3,滿足if條件,打印輸出2;第六次for循環(huán),Y的值為1,不滿足條件,不執(zhí)行打印語句。

76.B棧是先進(jìn)后出,因此,棧底元素是先入棧的元素,棧頂元素是后入棧的元素。

77.A解析:在C語言中,“%”運(yùn)算符兩側(cè)的運(yùn)算數(shù)必須是整型。

78.C

79.D

\na、b、C都是按值傳遞給函數(shù)f,函數(shù)f不能改變它們的值。所以,a、b、t的值仍然是4、3、5。

\n

80.A數(shù)組定義后,不可以對數(shù)組整體賦值,s是二維數(shù)組,因SS[1]是一維字符數(shù)組,即字符串,字符串賦值可以使用strcpy(SS[1],”right”);這樣的形式,而選項(xiàng)A中對二維數(shù)組中的第…l維(相當(dāng)于一個一維數(shù)組)賦值,是不可以的。選項(xiàng)8和D是定義時對數(shù)組初始化,這是可以的。選項(xiàng)c中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的一個元素,這是可以的。

81.(1)錯誤:intproc(intn)

正確:floatproc(intn)

(2)錯誤:for(i=2;i<n;i++)

正確:for(i=2;i<=n;i++)

【解析】由主函數(shù)中的調(diào)用以及函數(shù)proc()的返回值可知,函數(shù)proc()的返回值類型應(yīng)為float型數(shù)據(jù)。因此,“intproc(intn)”應(yīng)改為“floatproc(intn)”;由題目中所給公式可知,循環(huán)中應(yīng)該包含n的值,因此,“for(i=2;i<n;i++)”應(yīng)改為“for(i=2;i<=n;i++)”。

82.[答案][解析]題目要求刪除空格,也就是重新保存空格以外的其他字符。通過循環(huán)刪除字符串中的每一個空格,將非空格字符進(jìn)行重新保存。2021年山西省陽泉市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.對包含N個元素散列表進(jìn)行查找,平均查找長度()。

A.為OB.為O(N)C.不直接依賴ND.上述三者都不是

2.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.

4.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14

5.以下定義語句中正確的是()。

A.inta=b=0;

B.charA=65+1,b=‘b’;

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

6.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))

B.每個函數(shù)都可以被單獨(dú)編譯

C.每個函數(shù)都可以單獨(dú)運(yùn)行

D.在一個函數(shù)內(nèi)部可以定義另一個函數(shù)

7.能在O(1)時間內(nèi)訪問線性表的第i個元素的結(jié)構(gòu)是()

A.順序表B.單鏈表C.單向循環(huán)鏈表D.雙向鏈表

8.以下說法錯誤的是()。

A.C語言標(biāo)識符中可以有多個字母、數(shù)字和下劃線字符

B.C語言標(biāo)識符中下劃線字符可以出現(xiàn)在任意位置

C.C語言標(biāo)識符不能全部由數(shù)字組成

D.C語言標(biāo)識符必須以字母開頭

9.有以下定義和語句

StructWorkers

{intnum;charname[20];charc;

struct

{intday;intmonth;intyear;}s;

};

StructWorkersW,*pe;

PW=&W;

能給W中yeaR成員賦1980的語句是A.*pW.yeaR=1980;

B.W.yeaR=1980;

C.pW->yeaR=1980;

D.W.s.yeaR=1980;

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

A.順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲空間不一定是連續(xù)的

B.順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈?zhǔn)酱鎯Y(jié)構(gòu)只針對非線性結(jié)構(gòu)

C.順序存儲結(jié)構(gòu)能存儲有序表,鏈?zhǔn)酱鎯Y(jié)構(gòu)不能存儲有序表

D.鏈?zhǔn)酱鎯Y(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間

11.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

12.

13.

14.下列不屬于過程設(shè)計(jì)工具中圖形工具的是()。

A.N—SB.PADC.程序流程圖D.PDL

15.以下敘述中正確的是()。

A.無論指針變量P具有何種基類型,表達(dá)式“p=p+1”都代表指針P移動1個字節(jié)

B.指針變量具有基類型,基類型不同的指針變量不能直接相互賦值

C.指針變量的賦值操作“p=0;”是非法的

D.通過指針變量存取某個變量值的方式稱為“直接存取”方式

16.若有以下程序段intm=0xabc,n=0xubc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是

A.0X0B.0x0C.0D.0XABC

17.以下敘述中錯誤的是()

A.在C程序中,APH和aph是兩個不同的變量

B.C程序中的變量,代表內(nèi)存中的一個存儲單元,它的值可以根據(jù)需要隨時修改

C.在C程序中,無論是整數(shù)還是實(shí)數(shù),都能準(zhǔn)確無誤地表示

D.在C程序中,一個正整數(shù)可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制的形式來表示

18.以下說法正確的是()。

A.數(shù)據(jù)項(xiàng)是數(shù)據(jù)的基本單位

B.數(shù)據(jù)元素是數(shù)據(jù)的最小單位

C.數(shù)據(jù)結(jié)構(gòu)是帶結(jié)構(gòu)的數(shù)據(jù)項(xiàng)的集合

D.一些表面上很不相同的數(shù)據(jù)可以有相同的邏輯結(jié)構(gòu)

19.一個順序棧一旦聲明,其占用空間的大小()。

A.已固定B.可以變動C.不能固定D.動態(tài)變化

20.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序運(yùn)行后的輸出結(jié)果是()。

A.efgabcdhijklmnopq

B.abcdefghijklmnopq

C.mnopqhijklefgabcd

D.efgabcdmnopqhijkl

二、2.填空題(20題)21.若線性表的長度經(jīng)常發(fā)生變化,那么該線性表應(yīng)采用的存儲結(jié)構(gòu)是【】。

22.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

23.以下程序的運(yùn)行結(jié)果是【】。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%s\n",p);

}

24.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

25.以下程序中,select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。請?zhí)羁铡?/p>

#defineN3

#defineM3

select(inta[N][M],int*n)

{inti,j,row=1,colum=1;

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

for(j=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n=【】;

return(【】);

}

main()

{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;

max=select(a,&n);

printf(“max=%d,line=%d\n”,max,n);

}

26.以下程序運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)return(2);

p=x*func(x-1);

return(p);}

main()

{printf("%d\n",func(4));}

27.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

28.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當(dāng)字符串是回文時,函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda,請?zhí)羁铡?/p>

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=();

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(t==0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

printf("%s\n",huiwen(str));

}

29.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是【】。

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

30.設(shè)有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

31.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。

32.實(shí)體之間的聯(lián)系可以歸結(jié)為一對一聯(lián)系、一對多(或多對多)的聯(lián)系與多對多聯(lián)系。如果一個學(xué)校有許多教師,而一個教師只歸屬于一個學(xué)校,則實(shí)體集學(xué)校與實(shí)體集教師之間的聯(lián)系屬于______的聯(lián)系。

33.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

34.下面程序的運(yùn)行結(jié)果是【】。

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

35.若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>

p=【】malloc(sizeof(double));

36.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

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

#defineMAX3

inta[MAX];

main()

{fun1();fun2(a);printf("\n");}

fun1()

{intk,t=0;

for(k=0;k<MAX;k++,t++)a[k]=t+t;

}

fun2(intb[])

{intk;

for(k=0;k<MAX;k++)printf("%d",*(b+k));

}

38.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu)、存取方式等)改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

39.若有如下程序:

sub(int*y)

{while(--(*y));

printf("%d",(*y)--);}

main()

{intx=10;

sub(&x);

}

則程序運(yùn)行后的輸出結(jié)果是【】。

40.若有如下結(jié)構(gòu)體說明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請?zhí)羁眨酝瓿蓪數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。

【】t[20]

三、1.選擇題(20題)41.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

42.有以下程序:#include<string.h>voidf(charp[][10],intn)/*字符串從小到大排序*/{chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdog","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序運(yùn)行后的輸出結(jié)果是()。

A.2B.4C.6D.3

43.以下敘述中不正確的是

A.C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)

B.C語言中對二進(jìn)制文件的訪問速度比文本文件快

C.C語言中,隨機(jī)讀寫方式不適用于文本文件

D.C語言中,順序讀寫方式不適用于二進(jìn)制文件

44.表達(dá)式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8

45.若程序執(zhí)行時的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=,'\n'){switch(cs='2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

46.以下程序的輸出結(jié)果是()。{intx;int*y;}*p;intdt[4]={1,2,3,4};structstaa[4]={2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],};{p=aa;pfintf("%d\n",++(p->x));}

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

47.對存儲器按字節(jié)進(jìn)行編址,若某存儲器芯片共有10根地址線的引腳,則該存儲器芯片的存儲容量為()

A.512BB.1KBC.2KBD.4KB

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

A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);

49.以下對C語言函數(shù)的有關(guān)描述中,正確的是

A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳給形參,形參的值不能傳送給實(shí)參

B.C函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C.函數(shù)必須有返回值,否則不能使用函數(shù)

D.函數(shù)必須有返回值,返回值類型不定

50.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循環(huán),不能確定次數(shù)

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

A.C語言編譯時不檢查語法B.C語言的子程序有過程和函數(shù)兩種C.C語言的函數(shù)可以嵌套定義D.C語言的函數(shù)可以嵌套調(diào)用

52.在調(diào)用函數(shù)時,如果實(shí)參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實(shí)參傳遞給形參,再由形參傳遞給實(shí)參D.傳遞方式由用戶指定

53.以下對結(jié)構(gòu)體類型變量的定義中,不正確的是()

A.typedefstructaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm,}tdl;

54.以下選項(xiàng)中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

55.下列不合法的用戶標(biāo)識符是()。

A.j2_KEYB.DoubleC.4dD._8_

56.下列程序的輸出結(jié)果是______。main(){inti;for(i=l;i<6;i++){if(i%2){printf("#");continue;}printf("*");}printf("\n");}

A.#*#*#B.#####C.****D.*#*#*

57.有以下程序main(){char*p[10]={"abc",aabdfg","dedbe","abbd","cd"};printf("%d\n",stxlen(p[4]));}執(zhí)行后輸出結(jié)果是

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

58.下面程序段的運(yùn)行結(jié)果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

59.有以下程序:mare(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。

A.45B.20C.25D.36

60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}

A.a=0,b=0,c=0B.a=1,b=1,c=1C.a=1,b=0,c=1D.a=0,b=1,c=1

四、選擇題(20題)61.下列敘述中錯誤的是()。

A.列表框和組合框都有List屬性

B.列表框有Selected屬性,而組合框沒有

C.列表框和組合框都有Style屬性

D.組合框有Text屬性,而列表框沒有

62.下列SQL語句中,用于修改表結(jié)構(gòu)的命令式是A.A.Alter

B.Create

C.Update

D.Insert

63.

有以下程序:

intfun(intx)

{intp;

if(x==0||x==1)return(3);

p=x-fun(x-2);

returnp;

}

main

{printf("%d\n",fun(7));}

執(zhí)行后的結(jié)果是()。

A.7B.3C.2D.0

64.有以下程序(注:字符a的ASCIl碼值為97)

#include<stdio.h>

main()

{char*s={"abc")

do

{printf("%d",*S%10");++S;}

while(*s);

}

隉序運(yùn)行后的輸出結(jié)果是()。

A.abcB.789C.7890D.979899

65.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.X…Y5;B.X=n%2.5;C.X+n=i;D.x=5=4+1:

66.下列敘述中正確的是()。A.在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化

B.在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化

C.在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化

D.在棧中,棧中元素不會隨棧底指針與棧頂指針的變化而動態(tài)變化

67.

68.有以下程序程序運(yùn)行后的輸出結(jié)果是()。

A.1,3B.2,3C.1,4D.1.2

69.

70.下列程序執(zhí)行后的輸出結(jié)果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

71.

72.

73.若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

74.面向?qū)ο蠓椒ㄖ校^承是指()。

A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制

75.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.852B.963C.741D.875421

76.下列關(guān)于棧的敘述中,正確的是()。

A.棧底元素一定是最后入棧的元素B.棧操作遵循先進(jìn)后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對

77.在C語言中,運(yùn)算對象必須是整型數(shù)的運(yùn)算符是()。

A.%B.\C.%和\D.**

78.

79.

有以下程序:

voidf(intx,inty)

{intt;

if(x<y){t=x;x=Y;y=t;)

}

main

{inta=4,b=3,c=5;

f(a,b);f(a,c);f(b,c);

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

}

執(zhí)行后輸出結(jié)果是()。

A.3,4,5B.5,3,4C.5,4,3D.4,3,5

80.以下語句中存在語法錯誤的是()。

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。

例如,若n=12,則應(yīng)輸出0.618026。

請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫—個函數(shù),用來刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.C

2.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

3.A

4.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。

5.BA選項(xiàng)中的變量b沒有定義,不能直接給變量a賦值。C選項(xiàng)中,*b、*c表示的是一個實(shí)型變量的地址,不能將指針型變量b的地址賦值給指針型變量c。D選項(xiàng)中,“a=0.0”后面應(yīng)該為逗號,不能是分號。故本題答案為B選項(xiàng)。

6.B在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項(xiàng)A)錯誤;C程序從main函數(shù)開始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時,整個程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)

溫馨提示

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

評論

0/150

提交評論