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

下載本文檔

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

文檔簡介

2021年四川省內(nèi)江市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于順序存儲的線性表,訪問結(jié)點(diǎn)和增加、刪除結(jié)點(diǎn)的時間復(fù)雜度為()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

2.定義int*swap()指的是______。

A.一個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函數(shù)swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

3.以下程序的輸出結(jié)果是()。main{inta[3][3]=“l(fā),2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21

4.

5.有以下程序:

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

A.0B.一1C.1D.7

6.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

7.有以下程序:#include<stdio.h>main(){charc;for(;(c=getchar())!=‘#’;){if(c>=‘a(chǎn)’&&c<=‘z’)c=c-‘a(chǎn)’+‘A’;putchar(++c);}}執(zhí)行時輸入aBcDefG##并按<Enter>鍵,則輸出結(jié)果是()。

A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bcdefgh

8.設(shè)有一個棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

9.在一個順序隊列中,隊首指針指向隊首元素的____位置。

A.前一個B.后一個C.當(dāng)前D.最后一個

10.軟件詳細(xì)設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

11.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。

A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}

B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}

C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}

D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}

12.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

13.有以下程序:#include<stdio.h>main(){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);}程序的運(yùn)行結(jié)果是()。

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

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

A.C語言程序必須由一個或一個以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為一個獨(dú)立的語句存在

C.若函數(shù)有返回值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應(yīng)的實(shí)參

15.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄

B.數(shù)據(jù)行

C.數(shù)據(jù)塊

D.字符(字節(jié))序列

16.下列關(guān)于C語言文件的敘述中正確的是()。

A.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件

B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

D.文件由字符序列組成,其類型只能是文本文件

17.下列排序算法中,時間復(fù)雜度不受數(shù)據(jù)初始化狀態(tài)影響,恒為0(log2n)的是()。A.堆排序B.冒泡排序C.直接選擇排序D.快速排序

18.若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

19.

有以下程序

#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]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

20.棧通常采用的兩種存儲結(jié)構(gòu)是A.A.線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)

B.散列方式和索引方式

C.鏈表存儲結(jié)構(gòu)和數(shù)組

D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

二、2.填空題(20題)21.下面的程序?qū)崿F(xiàn)的是指針p所指向的地址的n個數(shù)中,求出最大的和最小的數(shù)據(jù),請?zhí)羁铡?/p>

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

22.下列程序段的運(yùn)行結(jié)果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

23.以下函數(shù)的功能是求x的y次方,請?zhí)羁?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

}

24.設(shè)有以下定義

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下圖所示鏈表結(jié)構(gòu):

請寫出刪除結(jié)點(diǎn)y的賦值語句______。

25.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdatc

{intday;

intmouth;

intyear:

union{intshare1;

floatshare2:

}share;

}a;

26.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。

27.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為【】。

28.下列程序的運(yùn)行結(jié)果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

29.當(dāng)線性表的操作無插入和刪除時,采用【】結(jié)構(gòu)為好。

30.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算。這種情況稱為【】。

31.以下程序調(diào)用函數(shù)swap_p將指針s和t所指單元(a和b)中的內(nèi)容交換,請?zhí)羁铡?/p>

main()

{inta=10,b=20,*s,*t;

s=&a;t=&b;

swap_p(【】);

printf("%d%d,a,b");}

swap_p(int**ss,int**tt)

{intterm;

term=**ss;

**ss=**tt;

**tt=term;}

32.在運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是【】。

33.已定義charch="$";inti=1,j;執(zhí)行j=!ch&&i++以后,i的值為()。

34.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

35.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。

36.某二叉樹中度為2的結(jié)點(diǎn)有n個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

37.在一個容量為25的循環(huán)隊列中,若頭指針front=16,尾指針rear=9,則該循環(huán)隊列中共有【】個元素。

38.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

39.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

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

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

#include<stdio.h>

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.以下程序的輸出結(jié)果是______。fun(int*s,int*p){staticintt=3;*p=s[t];t--;}main(){intstr[]={1,2,3,4},i,m=0;for(i=0;i<4;i++){fun(str,&m);printf("%d",m);}printf("\n");}

A.0B.444412C.1234D.4321

42.設(shè)變量x和y均已正確定義并賦值。下列if語句中,在編譯時將產(chǎn)生錯誤信息的是()。

A.if(x++);

B.if(x>y&&y!=0);

C.if(x>0)x--

D.if(y<0){;}elsey++;elsex++;

43.以下程序運(yùn)行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fur(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

44.對下列二叉樹進(jìn)行前序遍歷的結(jié)果為()

A.ABCDEFGHB.ABDGEHCFC.GDBEHACFD.GDHEBFCA

45.有以下程序:main(){union{unsignedintn;unsignedcharc;}u1;u1.c='A';printf("%c\n",u1.n);}執(zhí)行后輸出結(jié)果是()。

A.產(chǎn)生語法錯誤B.隨機(jī)值C.AD.65

46.下列程序的輸出結(jié)果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}

A.非法B.a[4]的地址C.5D.3

47.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);}

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

A.2030B.2050C.3050D.3020

48.線性表的順序存儲結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)分別是______。

A.順序存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)

B.隨機(jī)存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)

C.隨機(jī)存取的存儲結(jié)構(gòu)、隨機(jī)存取的存儲結(jié)構(gòu)

D.任意存取的存儲結(jié)構(gòu)、任意存取的存儲結(jié)構(gòu)

49.結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是()。

A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設(shè)計方法C.結(jié)構(gòu)化設(shè)計理論D.結(jié)構(gòu)化編程方法

50.有以下程序:main(){inti,s=1;for(i=1;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf("%d\n",s);}程序的輸出結(jié)果是

A.409B.277C.1D.91

51.沒有程序段:intk=10;while(k=0)k=k-1;則下面描述中正確的是()。

A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

52.某二叉樹中有n個度為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)為()

A.n+1B.n-1C.2nD.n/2

53.下面程序的輸出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

54.以下程序的輸出結(jié)果是______。main(){chara[10]={'1','2','3','4','5','6','7','8','9'},*p;inti;i=8;p=a+i;printf("%s\n",p-2);}

A.6B.789C.'6'D.6789

55.設(shè)有輸入語句scanf("a=%d,b=%d,c=%d",&a,&b,&C),為使變量a的值為2,b的值為4,c的值為8,則從鍵盤輸入數(shù)據(jù)的正確形式是()。

A.1,3,2<回車>B.a=1b=3c=2<同車>C.132<回車>D.a=2,b=4,c=8<回車>

56.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達(dá)式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

57.下列關(guān)于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進(jìn)先出的線性表D.隊列是先進(jìn)后出的線性表

58.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++){ror(j=1;j<=4-i;j++)printf("");for(j=1;j<=______;j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是

A.iB.2*i-1C.2*i+1D.i+2

59.表達(dá)式“~9&9<<1|4”的值為()。

A.0B.4C.5D.22

60.有以下程序:#include<stdio.h>voidfun(char*c,intD){*c=*c+1;d+=1;printf("%c,%c",*c,D;}main(){chara='F',b='f';fun(&b,A);printf("%c,%c\n",a,B);}程序的輸出結(jié)果為()。

A.g,GF,gB.g,FF,gC.G,fF,GD.f,gf,g

四、選擇題(20題)61.某二叉樹共有7個結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有l(wèi)個,則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。

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

62.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序執(zhí)行后的輸出結(jié)果是()。A.45B.50C.60D.55

63.HTTP協(xié)議的內(nèi)容協(xié)商消息頭包括()。

i.內(nèi)容協(xié)商消息頭ii.緩存控制消息頭

iii.條件控制消息頭iv.服務(wù)器狀態(tài)消息頭

A.i和iiB.i、ii和iiiC.ii和iiiD.iii和iv

64.

若希望下列的程序運(yùn)行后輸出25,程序空白處的正確選項是()。

main

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=l;i<4;++i

B.i=1;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

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

A.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的

B.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)

C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)

D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間與順序存儲結(jié)構(gòu)沒有任何關(guān)系

66.有以下程序當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第l列開始,<CR>代表回車,注意;回車也是--+qz符)12<CR>34<CR>則輸出結(jié)果是()。

A.123B.12C.1234D.1234

67.下列工具中為需求分析常用工具的是()。

A.PADB.BFDC.N-SD.DFD

68.有以下程序

main()

{

intx[]={1,3,5,7,2,4,6,0},i,j,k;

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

for(j=2;j>=i;j--)

if(x[j+1]>x[j])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

for(j=4;j<7-i;j++)

if(x[j]>x[j+1])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

printf("%d",x[i]);

printf("\n");

}

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

A.75310246B.01234567

C.76310462D.13570246

69.

70.有以下程序:

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

A.321678B.876543C.1098765D.345678

71.

若有下列定義(設(shè)int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

printf("i=%%d,j=%%d\n",i,j);

輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

72.

73.

74.

75.若程序有宏定義:#defineNl00,則以下敘述中正確的是()。

A.宏定義中定義了標(biāo)識符N的值為整數(shù)100

B.在編譯程序?qū)源程序進(jìn)行預(yù)處理時用l00替換標(biāo)識符N

C.對C源程序進(jìn)行編譯時用100替換標(biāo)識符N

D.在運(yùn)行時用100替換標(biāo)識符N

76.若變量已正確定義為int型,要通過語句給a賦值l、+給b賦值2、給c賦值

3,以下輸入形式中錯誤的是()(注:口代表一個空格符)。

77.

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

A.C函數(shù)可以遞歸調(diào)用也可以嵌套調(diào)用

B.在C中,調(diào)用函數(shù)時,只能把實(shí)參值傳給形參,形參值不能返回給實(shí)參

C.沒有返回值的函數(shù)不能被使用.

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中

79.以下程序愛中,與語句:

80.(10)下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()

A.內(nèi)模式

B.外模式

C.概念模式

D.邏輯模式

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:計算整數(shù)n的階乘。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:求出一個4×N整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.B解析:一個函數(shù)可以帶回—個整型值、字符值、實(shí)型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是一個返回整型指針的函數(shù)。

3.A循環(huán)的作用是求行下標(biāo)從1到2列下標(biāo)從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。

4.D

5.Ba一一的含義是先用后減l,所以當(dāng)a的值為0時,跳出循環(huán),但是仍要執(zhí)行a一一,g的值變?yōu)橐?。

6.D解析:在C語言的標(biāo)準(zhǔn)中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。

7.C題干中,循環(huán)的作用是將輸入的字符串轉(zhuǎn)化為大寫,getchar函數(shù)讀入一個字符,putchar函數(shù)輸出一個字符,當(dāng)遇到‘#’字符結(jié)束?!皃utcha(++C);”,表示將字符變量c加1后輸出。當(dāng)輸入“aBcDefG##”時,得到的結(jié)果是BCDEFGH。故本題答案為C選項。

8.C

9.A

10.CN—s圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計的圖形表示工具,所以8不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進(jìn)行軟件詳細(xì)設(shè)計時使用的程序流程圖。

11.AB選項中“switch((int)x);”語句中不應(yīng)該有最后的分號。switch(expr1)中的expr1不能用浮點(diǎn)類型或long類型,也不能為一個字符串,所以C選項錯誤。case后面必須為常量表達(dá)式,所以D選項錯誤。故本題答案為A選項。

12.D解析:本題考查語句的基本構(gòu)成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數(shù)定義格式,一個完整的函數(shù)定義格式還包括一對花括號:選項D)正確,是一個空語句。

13.B程序的功能為統(tǒng)計1~9這9個數(shù)中的奇數(shù)和。C語言中規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第1個元素的地址,因此“*(t+i)”代表數(shù)組的第i+1個元素。程序的運(yùn)行結(jié)果是1+3+5+7+9=25。故本題答案為B選項。

14.D形參是定義函數(shù)時由用戶定義的。實(shí)參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實(shí)參向形參傳送數(shù)據(jù)的方式是“值傳遞'是單向傳遞。故本題答案為D選項。

15.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。

16.C文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件。故本題答案為C選項。

17.D

18.B解析:語句typedefstructS{intg;charh;}T的作用是用T作為struetS{intg;charh;)的簡寫,所以選B。

19.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進(jìn)行賦值后,然后返回變量a。

20.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈?zhǔn)綏?。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設(shè)指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈?zhǔn)綏5牟僮鞲子趯?shí)現(xiàn)。注意:這3種運(yùn)算方法在各種存儲結(jié)構(gòu)中的應(yīng)用。

21.q<p+nq<p+n解析:通過地址傳遞可以在被調(diào)函數(shù)中對調(diào)用函數(shù)中的變量進(jìn)行引用。

22.8208,20解析:本題考查while循環(huán)和++運(yùn)算符的運(yùn)用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8-20,此時y=8。

23.xx解析:函數(shù)的定義形式為:

函數(shù)類型函數(shù)名(形參表)

{

類型說明語句;

執(zhí)行語句;

}

本題中函數(shù)的功能是:累積變量以求捐變量的Y次方。

24.x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;解析:本題考核的知識點(diǎn)是鏈表中結(jié)點(diǎn)的刪除。要刪除結(jié)點(diǎn)y,只需要讓結(jié)點(diǎn)x的指針域指向y結(jié)點(diǎn)的指針域所指向的后續(xù)結(jié)點(diǎn)就可,因此只需把結(jié)點(diǎn)2的地址賦給x的指針域就可以了即讓結(jié)點(diǎn)x的指針域指向結(jié)點(diǎn)2。而結(jié)點(diǎn)z得地址保存在節(jié)點(diǎn)y的指針域中,因此只需把節(jié)點(diǎn)y的指針城賦值給節(jié)點(diǎn)x的指針域即可。

25.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(A)的值是2+2+2+4=10。

26.n/2n/2解析:刪除—個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動元素個數(shù)為n/2。

27.nn解析:在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為n。

28.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。

29.順序順序解析:當(dāng)線性表的操作無插入和刪除時,在對線性表進(jìn)行操作時,不能改變元素的位置,采用順序結(jié)構(gòu)的效率高于鏈?zhǔn)浇Y(jié)構(gòu)。因?yàn)椴捎庙樞蚪Y(jié)構(gòu),對元素的查找可通過計算得到。

30.上溢上溢解析:入隊運(yùn)算是指在循環(huán)隊列的隊尾加入一個新元素。這個運(yùn)算有兩個基本操作:首先將隊尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當(dāng)循環(huán)隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算,這種情況稱為“上溢”。

31.&s&t&s,&t解析:指針做函數(shù)參數(shù)時,形參和實(shí)參指向同一個數(shù)據(jù),所以函數(shù)中對形參所指向的數(shù)據(jù)的改變也能影響到實(shí)參。本題中函數(shù)swap_p的形參為指向指針的指針,即雙重指針,原理跟普通的指針是一樣的。注意:通過指針來引用一個存儲單元。

32.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運(yùn)算過程中,采用鏈接方式即循環(huán)鏈表的結(jié)構(gòu)把空表與非空表的運(yùn)算統(tǒng)一起來。循環(huán)鏈表具有兩個特點(diǎn):①在循環(huán)鏈表中增加了一個表頭結(jié)點(diǎn),其數(shù)據(jù)域?yàn)槿我饣蚋鶕?jù)需要來設(shè)置,指針域指向線性表的第一個元素的結(jié)點(diǎn)。循環(huán)鏈表的頭指針指向表頭結(jié)點(diǎn)。②循環(huán)鏈表中最后一個結(jié)點(diǎn)的指針不是空,而是指向表頭結(jié)點(diǎn)。

33.11解析:用“&&”連接兩個表達(dá)式時,若第1個表達(dá)式的值為“假”,則運(yùn)算結(jié)果與第2個表達(dá)式無關(guān),此時第2個表達(dá)式將不再進(jìn)行計算。本題中第1個表達(dá)式“j=!ch”值為0,所以第2個表達(dá)式i++將不再進(jìn)行計算,i的值為1。

34.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

35.前件前件

36.n+1n+1解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為0的結(jié)點(diǎn)多一個。

37.1818解析:設(shè)循環(huán)隊列的容量為n。若rear>front,則循環(huán)隊列中的元素個數(shù)為rear-front;若rear<front,則循環(huán)隊列中的元素個數(shù)為n+(rear-front)。題中,front=16,rear=9,即rear<front,所以,循環(huán)隊列中的元素個數(shù)為m+(rear-front)=25+(9-16)=18。

38.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個;維表代表一種關(guān)系。

39.66解析:本題定義了二維數(shù)組a和指針變量p,p指向數(shù)組的首地址,for循環(huán)語句的功能是給數(shù)組元素賦值,結(jié)果為a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函數(shù)的輸出結(jié)果為6。

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

41.D解析:程序的功能是將字符數(shù)組str中的內(nèi)容以反序輸出。函數(shù)fun中t為靜態(tài)變量,每一次調(diào)用函數(shù)fun時,t的值為上一次調(diào)用函數(shù)結(jié)束時的值。

42.C解析:選項A)和選項B)在條件判斷語句的后面是空語句,什么都不做;在選項D)if后面是一個復(fù)合空語句;而在選項C)中,在x--后面少了一個分號,所以程序段在編譯時,會出現(xiàn)語法錯誤。

43.C

44.B遍歷就是不重復(fù)地訪問二叉樹的所有結(jié)點(diǎn)。二叉樹遍歷的方法有3種:前序遍歷、中序遍歷和后序遍歷。記住3種遍歷的順序:①前序,訪問根一按前序遍歷左子樹一按前序遍歷右子樹。②中序,按中序遍歷左子樹一訪問根一按中序遍歷右子樹。③后序,按后序遍歷左子樹一按后序遍歷右子樹一訪問根。所以對該二叉樹的中序遍歷結(jié)果為ABDGEHCF。

45.C解析:本題在定義共用體的同時,定義了一個共用體型變量u1,共占兩個字節(jié),有兩個成員n和c,兩個成員的首地址是相同的。因此給u1.c賦一個A,其實(shí)就是給無符號整型成員u1.n的低字節(jié)賦一個A,輸出u1.n的時候是以字符型的形式輸出,只輸出它的低地址的一個字節(jié),因此為A。所以,C選項為所選。

46.C解析:本題中char*p=a+5;即相當(dāng)于p=&a[5],而--p,是先要減1,則printf語句要輸出的值就是a[4]。

47.A解析:本題中,最主要的是掌握幾個有關(guān)文件函數(shù)的應(yīng)用。

函數(shù)名:fopen

功能:打開一個文件

調(diào)用方式FILE*fp;

fp=fopen(文件名,使用文件方式);

函數(shù)名:fprintf

功能:傳送格式化輸出到一個文件中

調(diào)用方式:fprintf(文件指針,格式字符串,輸出表列);

函數(shù)名:fclose

功能:關(guān)閉一個文件

調(diào)用方式:fclose(文件指針);

函數(shù)名:fscanf

功能:從磁盤文件執(zhí)行格式化輸入

調(diào)用方式:fscanf(文件指針,格式字符串,輸入列表)。

48.B【命題目的】考查有關(guān)線性表存儲結(jié)構(gòu)的基本知識。

【解題要點(diǎn)】順序存儲結(jié)構(gòu)中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)=LOC(a1)+(I-1)L計算得到,從而實(shí)現(xiàn)了隨機(jī)存取。對于鏈?zhǔn)酱鎯Y(jié)構(gòu),要對某結(jié)點(diǎn)進(jìn)行存取,都得從鏈的頭指針指向的結(jié)點(diǎn)開始,這是一種順序存取的存儲結(jié)構(gòu)。

【考點(diǎn)鏈接】順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)的定義和性質(zhì),兩種存儲結(jié)構(gòu)的操作方法。

49.CC?!窘馕觥拷Y(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是結(jié)構(gòu)化設(shè)計理論,其中包括:結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化編程方法。

50.D解析:本題是計算50之內(nèi)的自然數(shù)相加之和,題中if語句括號中的條件表達(dá)式!(i%5)&&!(i%3)表明只有能同時被5和3整除的數(shù)才符合相加的條件,1~49之間滿足這個條件的只有3個數(shù),15,30,45,因?yàn)閟的初始值為1,所以s=1+15+30+45=91。故正確答案為D)。

51.C解析:本題的while語句是將0賦給k,表達(dá)式的值為0,沒有執(zhí)行循環(huán)體語句。

52.A解析:本題考查數(shù)據(jù)結(jié)構(gòu)中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))數(shù)為n0,而其度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+1。根據(jù)這條性質(zhì)可知,若二叉樹中有n個度為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)為n+1。因此,本題的正確答案是選項A。

53.C解析:當(dāng)switch后面括弧內(nèi)的表達(dá)式的值與某一個case后面的常量的表達(dá)式的值相等時,就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default后面的語句。

54.B解析:p-2=a+8-2=a+5,則p指向a[6],則p指向7,所以輸出如B所示結(jié)果。

55.D解析:本題考查scanf函數(shù)的基本格式。若在scanf函數(shù)的格式控制字符串中插入了其他的字符,則在輸入時要求按一一對應(yīng)的位置原樣輸入這些字符,我們必須把“a=”、“b=”、“c=”也輸入。

56.A解析:條件表達(dá)式的形式如下:表達(dá)式1?表達(dá)式2:表達(dá)式3,所以本題條件表達(dá)式a<b?a:c<d?c:d應(yīng)該理解為a<b?a:(c<d?c:d),首先求出條件表達(dá)式c<d?c:d的值等于2,再求條件表達(dá)式a<b?a:2的值,由于a-1<b-4成立,所以上述條件表達(dá)式的值等于1。

57.C隊列是指允許在一端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表,選項A和選項B錯誤。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除。所以,隊列又稱為“先進(jìn)先出”或“后進(jìn)后出”的線性表,它體現(xiàn)了“先來先服務(wù)”的原則,選項C正確,選項D錯誤。

58.B解析:通過觀察可知圖形共4行,主函數(shù)中通過一個for循環(huán)四次,輸出4行。第一行輸出3個空格和1個“*”,第2行輸出2個空格和3個“*”,第3行輸出3個空格和5個“*”,第四行輸出7個“*”,主函數(shù)中通過第二個循環(huán)控制每行的輸出空格數(shù),第三個for循環(huán)控制輸出的“*”的個數(shù),總結(jié)規(guī)律:每行輸出的“*”的個數(shù),總比前一行的多2個,且第一行的個數(shù)為1,可以斷定每行輸出的“*”的個數(shù)組成了一個公差為2的等差數(shù)列,所以每行輸出“*”的個數(shù)即該等差數(shù)列的通項,故該空格處應(yīng)該填寫2*i-1。

59.D解析:優(yōu)先級由高到低的順序?yàn)椤ⅲ迹肌?、|。9的二進(jìn)制形式為00001001,4的二進(jìn)制形式為00000100?!?即11110110。9<<1為00010010,11110110&00010010=00010010,00010010|00000100=10110即22。

60.A

61.D根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點(diǎn)總比度為2的結(jié)點(diǎn)多一個,因此本題中度為2的結(jié)點(diǎn)為l一1=0個,據(jù)此可以知道本題目中的二叉樹的每一個結(jié)點(diǎn)都有一個分支,所以共7個結(jié)點(diǎn)共7層,即深度為7,選擇D)。

62.C在函數(shù)intfun(intx[],intn)的定義中,變量sum為一個靜態(tài)局部變量。由于在整個程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲中占據(jù)著永久的存儲單元。函數(shù)intfun(intx[],intn)的功能是求出數(shù)組x[]各個元素的和,所以在主函數(shù)中,調(diào)用函數(shù)fun(a,5)后,變量sum=1+2+3+4+5=15,當(dāng)再次調(diào)用fun(b,4)后,變量sum=15+6+7+8+9=45,所以s=15+45=60。

63.B

64.D

\n要想使程序輸出是25,則在printf中,j-40=25,j=65,而j初值是50,“j+=a[i];”也可寫成i=j+a[i];,j=50+a[i]=65,當(dāng)a[i]=15,條件滿足,數(shù)組下標(biāo)由0開始,當(dāng)i=2時,指向元素10,i=3時,10+5=15,退出循環(huán)體,所以選項D正確。

\n

65.B線性鏈?zhǔn)酱鎯Y(jié)構(gòu)中每個結(jié)點(diǎn)都由數(shù)據(jù)域與指針域兩部分組成,增加了存僻:空間,因此一般要多于順序存儲結(jié)構(gòu),選項B)正確。

66.A按照從鍵盤輸入的數(shù)據(jù)可以判斷字符1賦給了變量a,字符2賦給了變量b,字符<cR>即回車賦給了變量e,字符3賦給了變量d。因此打印輸出的結(jié)果為選項A)。

67.D需求分析常用的工具有4種:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判斷樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N—S(盒式圖)都是詳細(xì)設(shè)計的常用工具,不是需求分析的工具。

68.Afor(i=0;i<3;i++)

for(j=2;j>=i;j--)

if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}

此段程序的作用是將數(shù)組x[0]~x[3]中的數(shù)由大到小進(jìn)行排列,運(yùn)行此段程序后,x[]中的值變?yōu)閤[]={7,5,3,1,2,4,6,0}

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

for(j=4;j<7-i;j++)

if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}

此段程序的作用是將數(shù)組x[4]~x[7]中的數(shù)由小到大進(jìn)行排列,運(yùn)行此段程序后,x[]中的值變?yōu)閤[]={7,5,3,1,0,2,4,6},最后通過一個循環(huán)將X[]中的數(shù)依次輸出。

69.B

70.A本題中的函數(shù)fun()的功能是將數(shù)組k中前5個元素倒序,所以返回后數(shù)組k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印輸出k[2]到k[7]元素的值,即321678,所以選擇A。

71.B解析:本題考查printf函數(shù)的格式。在printf函數(shù)中,如果格式說明符中有兩個%說明,則將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)的變量值。

72.B

73.D

74.C

75.B#defineN100定義了標(biāo)識符N的替換文本為100,而非N的值為100。即在該命令行后的程序中,所有出現(xiàn)標(biāo)識符N的地方都將替換為l00,而且這一替換過程是在程序預(yù)編譯時遜行的。

76.A本題考查的是格式化輸入函數(shù)scanf()基本用法。使用該語句時,要求除格式控制符以外的字符都要原樣輸入,

“,”為非格式符,要原樣輸入。選項A)中沒有輸入非格式符“,”,所.以是不正確的。

77.A

78.A選項B),形參值的改變不會影響實(shí)參,但形參值可以作為返回值返回給實(shí)參。選項c),函數(shù)可以沒有返回值,即返回值類型為void。選項D),函數(shù)可以定義在不同的文件中,只要調(diào)用前包含被調(diào)用函數(shù)所在的文件即可。

79.Ak=a>b?(b>C?1:o):o;a>b并且b>C,k為1,其他情況k為o,答案為A)。

80.A能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是內(nèi)模式。外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。沒有邏輯模式這一說法。正確答案為A。

81.

82.

【解析】要求出二維數(shù)組中最大元素的值,需要比較二維數(shù)組中每一個元素的值。首先,定義變量max用來存放最大元素的值,將其初始化為二維數(shù)組中第一個元素的值。然后將其與后面的每一個元素進(jìn)行比較,將二維數(shù)組中最大元素的值放到變量max當(dāng)中,并將其返回給主函數(shù)。

2021年四川省內(nèi)江市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.對于順序存儲的線性表,訪問結(jié)點(diǎn)和增加、刪除結(jié)點(diǎn)的時間復(fù)雜度為()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

2.定義int*swap()指的是______。

A.一個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函數(shù)swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

3.以下程序的輸出結(jié)果是()。main{inta[3][3]=“l(fā),2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21

4.

5.有以下程序:

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

A.0B.一1C.1D.7

6.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

7.有以下程序:#include<stdio.h>main(){charc;for(;(c=getchar())!=‘#’;){if(c>=‘a(chǎn)’&&c<=‘z’)c=c-‘a(chǎn)’+‘A’;putchar(++c);}}執(zhí)行時輸入aBcDefG##并按<Enter>鍵,則輸出結(jié)果是()。

A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bcdefgh

8.設(shè)有一個棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

9.在一個順序隊列中,隊首指針指向隊首元素的____位置。

A.前一個B.后一個C.當(dāng)前D.最后一個

10.軟件詳細(xì)設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

11.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。

A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}

B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}

C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}

D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}

12.下列寫法正確的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

13.有以下程序:#include<stdio.h>main(){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);}程序的運(yùn)行結(jié)果是()。

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

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

A.C語言程序必須由一個或一個以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為一個獨(dú)立的語句存在

C.若函數(shù)有返回值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應(yīng)的實(shí)參

15.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄

B.數(shù)據(jù)行

C.數(shù)據(jù)塊

D.字符(字節(jié))序列

16.下列關(guān)于C語言文件的敘述中正確的是()。

A.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件

B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

D.文件由字符序列組成,其類型只能是文本文件

17.下列排序算法中,時間復(fù)雜度不受數(shù)據(jù)初始化狀態(tài)影響,恒為0(log2n)的是()。A.堆排序B.冒泡排序C.直接選擇排序D.快速排序

18.若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

19.

有以下程序

#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]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

20.棧通常采用的兩種存儲結(jié)構(gòu)是A.A.線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)

B.散列方式和索引方式

C.鏈表存儲結(jié)構(gòu)和數(shù)組

D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

二、2.填空題(20題)21.下面的程序?qū)崿F(xiàn)的是指針p所指向的地址的n個數(shù)中,求出最大的和最小的數(shù)據(jù),請?zhí)羁铡?/p>

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

22.下列程序段的運(yùn)行結(jié)果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

23.以下函數(shù)的功能是求x的y次方,請?zhí)羁?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

}

24.設(shè)有以下定義

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下圖所示鏈表結(jié)構(gòu):

請寫出刪除結(jié)點(diǎn)y的賦值語句______。

25.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdatc

{intday;

intmouth;

intyear:

union{intshare1;

floatshare2:

}share;

}a;

26.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。

27.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為【】。

28.下列程序的運(yùn)行結(jié)果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

29.當(dāng)線性表的操作無插入和刪除時,采用【】結(jié)構(gòu)為好。

30.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進(jìn)行入隊運(yùn)算。這種情況稱為【】。

31.以下程序調(diào)用函數(shù)swap_p將指針s和t所指單元(a和b)中的內(nèi)容交換,請?zhí)羁铡?/p>

main()

{inta=10,b=20,*s,*t;

s=&a;t=&b;

swap_p(【】);

printf("%d%d,a,b");}

swap_p(int**ss,int**tt)

{intterm;

term=**ss;

**ss=**tt;

**tt=term;}

32.在運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是【】。

33.已定義charch="$";inti=1,j;執(zhí)行j=!ch&&i++以后,i的值為()。

34.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

35.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。

36.某二叉樹中度為2的結(jié)點(diǎn)有n個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。

37.在一個容量為25的循環(huán)隊列中,若頭指針front=16,尾指針rear=9,則該循環(huán)隊列中共有【】個元素。

38.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

39.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

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

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

#include<stdio.h>

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.以下程序的輸出結(jié)果是______。fun(int*s,int*p){staticintt=3;*p=s[t];t--;}main(){intstr[]={1,2,3,4},i,m=0;for(i=0;i<4;i++){fun(str,&m);printf("%d",m);}printf("\n");}

A.0B.444412C.1234D.4321

42.設(shè)變量x和y均已正確定義并賦值。下列if語句中,在編譯時將產(chǎn)生錯誤信息的是()。

A.if(x++);

B.if(x>y&&y!=0);

C.if(x>0)x--

D.if(y<0){;}elsey++;elsex++;

43.以下程序運(yùn)行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fur(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

44.對下列二叉樹進(jìn)行前序遍歷的結(jié)果為()

A.ABCDEFGHB.ABDGEHCFC.GDBEHACFD.GDHEBFCA

45.有以下程序:main(){union{unsignedintn;unsignedcharc;}u1;u1.c='A';printf("%c\n",u1.n);}執(zhí)行后輸出結(jié)果是()。

A.產(chǎn)生語法錯誤B.隨機(jī)值C.AD.65

46.下列程序的輸出結(jié)果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}

A.非法B.a[4]的地址C.5D.3

47.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);}

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

A.2030B.2050C.3050D.3020

48.線性表的順序存儲結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)分別是______。

A.順序存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)

B.隨機(jī)存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)

C.隨機(jī)存取的存儲結(jié)構(gòu)、隨機(jī)存取的存儲結(jié)構(gòu)

D.任意存取的存儲結(jié)構(gòu)、任意存取的存儲結(jié)構(gòu)

49.結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是()。

A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設(shè)計方法C.結(jié)構(gòu)化設(shè)計理論D.結(jié)構(gòu)化編程方法

50.有以下程序:main(){inti,s=1;for(i=1;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf("%d\n",s);}程序的輸出結(jié)果是

A.409B.277C.1D.91

51.沒有程序段:intk=10;while(k=0)k=k-1;則下面描述中正確的是()。

A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

52.某二叉樹中有n個度為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)為()

A.n+1B.n-1C.2nD.n/2

53.下面程序的輸出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

54.以下程序的輸出結(jié)果是______。main(){chara[10]={'1','2','3','4','5','6','7','8','9'},*p;inti;i=8;p=a+i;printf("%s\n",p-2);}

A.6B.789C.'6'D.6789

55.設(shè)有輸入語句scanf("a=%d,b=%d,c=%d",&a,&b,&C),為使變量a的值為2,b的值為4,c的值為8,則從鍵盤輸入數(shù)據(jù)的正確形式是()。

A.1,3,2<回車>B.a=1b=3c=2<同車>C.132<回車>D.a=2,b=4,c=8<回車>

56.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達(dá)式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

57.下列關(guān)于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進(jìn)先出的線性表D.隊列是先進(jìn)后出的線性表

58.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++){ror(j=1;j<=4-i;j++)printf("");for(j=1;j<=______;j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是

A.iB.2*i-1C.2*i+1D.i+2

59.表達(dá)式“~9&9<<1|4”的值為()。

A.0B.4C.5D.22

60.有以下程序:#include<stdio.h>voidfun(char*c,intD){*c=*c+1;d+=1;printf("%c,%c",*c,D;}main(){chara='F',b='f';fun(&b,A);printf("%c,%c\n",a,B);}程序的輸出結(jié)果為()。

A.g,GF,gB.g,FF,gC.G,fF,GD.f,gf,g

四、選擇題(20題)61.某二叉樹共有7個結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有l(wèi)個,則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。

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

62.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序執(zhí)行后的輸出結(jié)果是()。A.45B.50C.60D.55

63.HTTP協(xié)議的內(nèi)容協(xié)商消息頭包括()。

i.內(nèi)容協(xié)商消息頭ii.緩存控制消息頭

iii.條件控制消息頭iv.服務(wù)器狀態(tài)消息頭

A.i和iiB.i、ii和iiiC.ii和iiiD.iii和iv

64.

若希望下列的程序運(yùn)行后輸出25,程序空白處的正確選項是()。

main

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=l;i<4;++i

B.i=1;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

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

A.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的

B.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)

C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)

D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間與順序存儲結(jié)構(gòu)沒有任何關(guān)系

66.有以下程序當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第l列開始,<CR>代表回車,注意;回車也是--+qz符)12<CR>34<CR>則輸出結(jié)果是()。

A.123B.12C.1234D.1234

67.下列工具中為需求分析常用工具的是()。

A.PADB.BFDC.N-SD.DFD

68.有以下程序

main()

{

intx[]={1,3,5,7,2,4,6,0},i,j,k;

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

for(j=2;j>=i;j--)

if(x[j+1]>x[j])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

for(j=4;j<7-i;j++)

if(x[j]>x[j+1])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

printf("%d",x[i]);

printf("\n");

}

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

A.75310246B.01234567

C.76310462D.13570246

69.

70.有以下程序:

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

A.321678B.876543C.1098765D.345678

71.

若有下列定義(設(shè)int類型變量占2個字節(jié)):

inti=8,j=9;

則下列語句:

printf("i=%%d,j=%%d\n",i,j);

輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

72.

73.

74.

75.若程序有宏定義:#defineNl00,則以下敘述中正確的是()。

A.宏定義中定義了標(biāo)識符N的值為整數(shù)100

B.在編譯程序?qū)源程序進(jìn)行預(yù)處理時用l00替換標(biāo)識符N

C.對C源程序進(jìn)行編譯時用100替換標(biāo)識符N

D.在運(yùn)行時用100替換標(biāo)識符N

76.若變量已正確定義為int型,要通過語句給a賦值l、+給b賦值2、給c賦值

3,以下輸入形式中錯誤的是()(注:口代表一個空格符)。

77.

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

A.C函數(shù)可以遞歸調(diào)用也可以嵌套調(diào)用

B.在C中,調(diào)用函數(shù)時,只能把實(shí)參值傳給形參,形參值不能返回給實(shí)參

C.沒有返回值的函數(shù)不能被使用.

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中

79.以下程序愛中,與語句:

80.(10)下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()

A.內(nèi)模式

B.外模式

C.概念模式

D.邏輯模式

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:計算整數(shù)n的階乘。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:求出一個4×N整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.B解析:一個函數(shù)可以帶回—個整型值、字符值、實(shí)型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是一個返回整型指針的函數(shù)。

3.A循環(huán)的作用是求行下標(biāo)從1到2列下標(biāo)從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。

4.D

5.Ba一一的含義是先用后減l,所以當(dāng)a的值為0時,跳出循環(huán),但是仍要執(zhí)行a一一,g的值變?yōu)橐?。

6.D解析:在C語言的標(biāo)準(zhǔn)中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。

7.C題干中,循環(huán)的作用是將輸入的字符串轉(zhuǎn)化為大寫,getchar函數(shù)讀入一個字符,putchar函數(shù)輸出一個字符,當(dāng)遇到‘#’

溫馨提示

  • 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

提交評論