2021年山西省呂梁市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021年山西省呂梁市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021年山西省呂梁市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021年山西省呂梁市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021年山西省呂梁市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021年山西省呂梁市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.折半查找的時間復雜性為()

A.O(n2)B.O(n)C.O(nlogn)D.O(logn)

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

A.C程序總是從第一個函數開始執(zhí)行

B.在C程序中,被調用的函數必須在main函數中定義

C.C程序總是從main函數開始執(zhí)行

D.C程序中的main函數必須放在程序的開始部分

3.某完全二叉樹有256個節(jié)點,則該二叉樹的深度為()。

A.7B.8C.9D.10

4.有以下程序main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序運行后的輸出結果是______。A.3B.5C.-1D.-2

5.有以下程序(說明:字母A的ASCIl碼值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序運行后的輸出結果是()。A.BYB.BTC.YTD.YE

6.若輸入“abcdef”“abdef”,下述程序的輸出結果為()。#include<stdio.h>#include<string.h>main{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.-1B.0C."abcdef"D."abdef"

7.設”inta=12;”,則執(zhí)行完語句”a+=a*a;”后,a的值是()。

A.12B.144C.156D.288

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

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

9.以下是一個對數組A(含有n個數值元素)進行排序的算法偽代碼,請問它的平均時間復雜度是多少()

A.O(n)B.O(n^2)C.O(1)D.O(log(n))

10.下列程序執(zhí)行后的輸出結果是()。main{charx=0xFFFF;printf("%d\n",x--);}A.-32767B.FFFEC.1D.32768

11.

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

A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數據丟失

B.打開一個已存在的文件并進行寫操作后,原有文件中的全部數據必定被覆蓋

C.在一個程序中對文件進行寫操作后,必須先關閉該文件然后再打開才能讀到第1個數據

D.C語言中的文件是流式文件,因此只能順序存取數據

13.下列程序的輸出結果是()

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

A.6,1B.2,1C.6,0D.2,0

14.若有定義“inta=1234,b=-5678;”,用語句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結果是()。

A.+1234-5678(中間有一個空格,最后有一個空格)

B.+1234-5678(最前面有一個空格,中間有一個空格)

C.+-1234+-5678(最前面和最后均無空格)

D.1234-5678(中間有兩個空格,最后有一個空格)

15.設有以下函數:voidfun(intn,char*s){…}則下面對函數指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

16.在1,2,3,......1000中,有()個數各位乘積為0。

A.100B.101C.172D.181E.190F.191

17.設有定義“char*c;”,以下選項中能夠使c正確指向一個字符串的是()。

A.charstr[]=“string”;c=str;

B.scanf(“%s”,c);

C.c=getchar();

D.*c=“string”;

18.有1000個無序的整數,希望使用最快的方式找出前50個最大的,最佳的選擇是()

A.冒泡排序B.基數排序C.堆排序D.快速排序

19.設有說明:charw;intx;f1oaty;doublez;則表達式w*x+z-y值的數據類型為()。

A.floatB.charC.intD.double

20.下列不屬于過程設計工具中圖形工具的是()。

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

二、2.填空題(20題)21.設有以下定義

stnctss

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

且已建立如下圖所示鏈表結構:

請寫出刪除結點y的賦值語句______。

22.計算機網絡按通信距離來劃分可以分為【】。

23.下列程序的運行結果是______。

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

24.以下函數sstrcat的功能是實現字符串的連接,即將t所指字符串復制到s所指字符串的尾部。例如:,所指字符串為abed,t所指字符串為efgh,調用函數sstrcat后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#inehde<stdio.h>

#include<string.h>

voidsstuat(char*9,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

25.在樹形結構中,樹根結點沒有______。

26.在面向對象的程序設計中,類描述的是具有相似性質的一組【】。

27.語句printf("%f\n",13.0*(1/5));的輸出結果為【】。

28.在數據庫的概念結構設計中,常用的描述工具是【】。

29.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

30.算法的復雜度主要包括【】復雜度和空間復雜度。

31.診斷和改正程序中錯誤的工作通常稱為【】。

32.下面的程序用來統(tǒng)計文件中字符的個數。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fP;

longnum=0;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("Can'topenfile!\n");sxit(0);}

while【】

{fgetc(fp);num++;}

printr("num=%d\n",num);

fclose(fp);

}

33.表示“整數x的絕對值大于5”時值為“假”的C語言表達式是______。

34.數據獨立性分為邏輯獨立性與物理獨立性。當數據的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,稱為【】。

35.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,i,x;

for(j=4;j______;j--)

{for(i=1;i<4;i++)

{x=(j-1)*4+______;

printf("%4d",x);

}

printf("\n");

}

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

intm=13;

intfun(intx,inty)

{intm+3;

return(x*y-m);

}

main()

{inta=7,b,5;

prntf("%d\n",fun(a,B)/m);

}

37.十進制數53轉換為十六進制數為【】。

38.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為______。

39.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結果是______。

#definePI3.14159;printf("PI=%f",PI);

40.在數據庫理論中,數據物理結構的改變,如存儲設備的更換、物理存儲的更換、存取方式等都不影響數據庫的邏輯結構,從而不引起應用程序的變化,稱為【】。

三、1.選擇題(20題)41.若有以下定義:chars[20]="programming",*ps=s;則不能代表字符o的表達式是_______。

A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps

42.微型計算機中運算器主要的功能是進行()

A.算術運算B.邏輯運算C.算術和邏輯運算D.初等函數運算

43.若有以下說明和語句:structst{intn;char*ch;};structsta[3]{5,"abc",7,"def",9,"ghk"},*p=a則值為6的表達式是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

44.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}該程序的輸出結果是

A.69825B.63825C.6385D.693825

45.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}程序運行后輸出結果是______。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

46.若有以下定義和語句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;則以下選項中錯誤的語句是

A.*q=0;B.w=p;C.*p=a;D.*p=*w;

47.在計算機中,算法是指()

A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法

48.以下能正確定義一維數組的選項是______。

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

49.以下程序#include<stdio.h>#include<string.h>main(){char*pl="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}的輸出是________。

A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC

50.下列語句中,在字符串s1和s2相等時顯示“theyareEqual”的是()。

A.if(*s1==*s2)puts("theyareEqual");

B.if(!strcmp(s1,s2))puts("theyareEqual");

C.if(s1==s2)Puts("theyareEqual");

D.if(strcmp(s1,s2))puts("theyareEqual");

51.下列程序執(zhí)行后的輸出結果是______。main(){intm[][3]={1,4.7,6,5,8,3,6,9};inti,k=2for(i=0,i<3;i++){printf("%d",m[k][i];}}

A.456B.258C.369D.789

52.以下敘述中正確的是

A.用C程序實現的算法必須要有輸入和輸出操作

B.用C程序實現的算法可以沒有輸出但必須要有輸入

C.用C程序實現的算法可以沒有輸入但必須要有輸出

D.用C程序實現的算法可以既沒有輸入也沒有輸出

53.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結果是()。

A.1267B.1256C.1278D.1245

54.以下程序運行后的輸出結果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

55.以下程序運行后,a的值是()main(){inta,k=4,m=6,*pl=&k,*p2=&m;a=p1=&m;printf("%d\n",a);}

A.4B.1C.0D.運行時出錯,a無定值

56.按照“先進后出”原則組織數據的數據結構是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

57.設有語句“chara='72';”則變量a()。

A.包含一個字符B.包含二個字符C.包含三個字符D.說明不合法

58.若要打開A盤上user子目錄下名為abc.txt的文本文件進行讀、寫操作,下面符合此要求的函數調用是

A.fopen(“A:\user\abc.txt”,“r”)

B.fopen(“A:\\user\\abc.txt”,“r+”)

C.fopen(“A:\user\abc.txt”,“rb”)

D.fopen(“A:\user\\abc.txt”,“w”)

59.若定義函數int*func(),則函數func的返回值為()。

A.一個實數B.一個指向整型變量的指針C.一個指向整型函數的指針D.一個整型函數的入口地址

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

A.用E—R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系

B.用E—R圖只能表示實體集之間一對一的聯(lián)系

C.用E—R圖只能表示實體集之間一對多的聯(lián)系

D.用E—R圖表示的概念數據模型只能轉換為關系數據模型

四、選擇題(20題)61.若有定義語句:“intx=10;”,則表達式x-=x+x的值為()。

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

62.

63.

64.

65.下列語句組中,正確的是()。

A.char*s;s=”O(jiān)lympic”;

B.chars[7];s=”O(jiān)lympic”;

C.char*s;s={¨Olympic”};

D.chars[7];s={"Olympic”};

66.下面的函數調用語句中func函數的實參個數是()。func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))

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

67.設有定義語句

則以下敘述正確的是().

A.f是指向函數的指針變量,該函數具有_個int類型的形參

B.f是基類型為int的指針變量

C.f是指向int類型一維數組的指針變量

D.f是函數名,該函數的返回值是基類型為int類型的地址

68.

69.

70.對于循環(huán)隊列,下列敘述中正確的是()。

A.隊頭指針是固定不變的

B.隊頭指針一定大于隊尾指針

C.隊頭指針一定小于隊尾指針

D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針

71.

72.設x=015,則x=x^017的值是()。A.00001111B.11111101C.00000010D.11000000

73.下面的程序段運行后,輸出結果是()。

A.9B.0C.不確定值D.18

74.下列數據結構中,屬于非線性結構的是A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

75.有以下程序程序運行后的輸出結果是()。

A.28B.24C.32D.36

76.若程序中定義了以下函數doublemyadd(doublea,doubleb){return(a+b);}并將其放在調用語句之后,則在調用之前應該對該函數進行說明,以下選項中錯誤的說明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

77.

78.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是()。A.

B.

C.

D.

79.有如下程序

#include"stdio.h"

fun(inta,intb)

{ints;

s=a*(b/4);

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

main()

{inta=16,b=10;

fun(a,b);

}

該程序的輸出結果是

A.16B.32

C.40D.80

80.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其輸出為______。

A.不確定B.編譯錯誤C.gD.輸出null字符

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:對M名學生的學習成績,按從低到高的順序找出前m(m≤10)名學生來,并將這些學生數據存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數值返回。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數proc,它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。 例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g****。 注意:部分源程序給出如下。 請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。 試題程序: #include<stdio.h=:{> #include<conio.h> woidproc(char*str) { } voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

參考答案

1.D

2.C解析:C程序是由main函數開始運行,通過main函數調用其他函數,所以,選項A)錯誤;在C程序中,函數不能嵌套定義,即不能在一個函數中定義另一個函數,選項B)錯;C程序總是從main函數開始執(zhí)行,但main函數不必放在最前面,故選項D)錯。

3.C

4.D本題考核的知識點是運算符的優(yōu)先級。主函數中首先定義了整型變量m、n和x,并給m和n賦初值為3和4,接著執(zhí)行兩條賦值語句,第一條x=-m++等價于x=-(m++),其值即為-3,第二條x=x+8/++n等價于X=X+8/(++n),即為x=-3+8/5=-2,因此最后輸出x的值為-2。所以,4個選項中選項D符合題意。

5.Dfun函數的意思是當*s%2==0的時候就輸出并且s自加l次,然后判斷。所以可知只有第2和第4個位置上的才符合要求,所以答案為D。

6.D本題考查字符串比較函數strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。字符串依次比較的是它們字符的ASCIl碼值。

7.C

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

9.B

10.C因為x=0xFFFF=11111111,因此當以整型形式輸出時對應的數為一1。

11.B

12.AB選項中,打開一個已存在的文件并進行寫操作后,原有文件中的全部數據不一定被覆蓋,也可以對源文件進行追加操作等。C選項中,在一個程序中對文件進行寫操作后,不是先關閉該文件然后再打開才能讀到第1個數據,用fseek函數進行重新定位即可。D選項中,C語言中的文件可以進行隨機讀寫。故本題答案為A選項。

13.B解析:算術運行符“/”、“%”的優(yōu)先級處于同一級,并且兩者的結合性都是從左到右。所以算術表達式運算過程為:a=25/10%9=2%9=2:當邏輯運算符“&&”兩邊的值都是非零時,邏輯表達式的值才為真(即為1)。所以b=2&&(-1)=1。

14.Aprintf函數參數包括格式控制字符串和輸出參數,其中格式控制字符串中除了格式控制字符外,其他字符原樣輸出。本題中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之間,“+”號表示輸出的數字帶正負號號表示輸出數據向左對齊,“6”表示輸出寬度,如果輸出數據的寬度不夠6,那么左對齊,右邊補空格。所以本題輸出+1234-5678(中間有一個空格,最后有一個空格)。本題答案為A選項。

15.A函數指針的定義格式為函數類型(*指針變量名)(形參列表);函數名和數組名一樣代表了函數代碼的首地址,因此在賦值時,直接將函數指針指向函數名就行了。所以選項A正確。

16.D

17.A選項A為正確用法,先將字符串存于字符數組中,然后將數組名賦給字符指針(數組名代表數組首地址,定義數組時為其分配確定的地址)。C選項錯誤,getchar函數輸入一個字符給字符型變量,而不是字符指針。B選項和D選項有類似的錯誤,兩個選項并無語法錯誤,但運行時可能會出現問題。因為在B選項和D選項中,字符指針沒有被賦值,是一個不確定的值,指向一個不確定的內存區(qū)域,這個區(qū)域可能存放有用的指令或數據。在這個不確定的區(qū)域重新存放字符串,可能會發(fā)生無法預知的錯誤。故本題答案為A選項。

18.D

19.D

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

\n

21.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;解析:本題考核的知識點是鏈表中結點的刪除。要刪除結點y,只需要讓結點x的指針域指向y結點的指針域所指向的后續(xù)結點就可,因此只需把結點2的地址賦給x的指針域就可以了即讓結點x的指針域指向結點2。而結點z得地址保存在節(jié)點y的指針域中,因此只需把節(jié)點y的指針城賦值給節(jié)點x的指針域即可。

22.局域網和廣域網局域網和廣域網

23.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。

24.*t*t解析:程序中,(a+n)代表字符串s最后一個字符后的,'\\0',根據題意,'\\0'所在位置應該賦值為字符串t的第一個字符,字符中t的其他字符根據循環(huán),依次賦值到,所指字符串的尾部,所以[14]應填:*t。

25.前件前件

26.對象對象解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。

27.00解析:/表示整除,1/5為0,0乘以任何數都得零,但是與浮點型相乘,要轉化為浮點型,所以結果為0.000000。注意:在一個運算符的兩邊如果一個是字符型,一個是整型,則把字符型轉換為整型之后再進行運算。

28.E-R圖E-R圖解析:E-R圖是設計概念模型的有力工具。

29.S[j++]=s[i]S[j++]=s[i]解析:循環(huán)開始后如果數組s中儲存值與字符c相同,則i++直接跳過當前值;如果不相同,則將當前值賦予數組指定位置,并通過j++將下標加1,指向下一元素要存儲的位置。

30.時間時間解析:算法的復雜度主要指時間復雜度和空間復雜度。所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量;算法的空間復雜度,一般是指執(zhí)行這個算法所需要的內存空間。

31.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發(fā)現軟件中的錯誤。先要發(fā)現軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發(fā)階段。

32.(!feof(fp))或feof(fp):=0(!feof(fp))或feof(fp):=0

33.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達,“整數x的絕對值大于5”時值為“假”,即整數x的絕對值小于等于5,也就是整數x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語言表達式為:(x>-5)&&(x<5)。

34.物理獨立性物理獨立性解析:數據獨立性分為邏輯獨立性與物理獨立性。當數據的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,稱為物理獨立性。

35.ii解析:本題使用了一個兩重for循環(huán)輸出如題所示的方陣。從外層for循環(huán)的最后一條語句prinff('\\n');可以看出,外層for循環(huán)每次輸出方陣的一行,由于方陣是4行所以外層循環(huán)會循環(huán)4次,又從j=4和卜可以看出這4次循環(huán),循環(huán)變量i的值分別為4、3、2、1.故前一空應該填j>=1或者j>0,以保證j等于0時循環(huán)結束。內層循環(huán)控制每行輸出的4個數,其循環(huán)變量i從1遞增到4,由于每行的4個結果也是差1遞增的,所以將每次結果減去循環(huán)變量i的值為一個常數,每行分別是12、8、4、0,而這些值正好與4次外循環(huán)中表達式(j-1)*4的值相吻合,故后一空應該填i。

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

37.35

38.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現在的順序與目標順序正好相反),冒泡排序需要經過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數為N(N-1)/2。

39.PI=3.14159PI=3.14159解析:本題先定義了一個宏名PI,以后在程序中出現PI都用3.14159替代,但是C語言規(guī)定:雙引號中的宏名是不進行替換的。

40.物理獨立性物理獨立性解析:數據的物理結構改變,不影響數據庫的邏輯結構,從而不引起應用程序的變化,這種性質叫做物理獨立性。

41.A解析:ps+2就是s[2]的地址,即存放字符o的地址,所以A是錯誤的。

42.C

43.D解析:根據結構變量的存儲特點,p+1意味著增加地址值為結構體數組a的一個元素所占的字節(jié)數,即p++使p由a[0]指向a[1]起始地址。本題++p->n得到p指向的結構體變量中成員n的值使之加1。因為p指向數組a起始地址,p->n的值為5,再執(zhí)行自加1運行,結果為6。

44.C解析:該題稍微難一點。主要要搞清楚以下幾點:①定義了一個指針數組char.p[2]后,程序中第一個循環(huán)for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指針數組的p[0]元素(它本身是一個指針)指向了二維數組ch的第一行字符串,并使指針數組的p11)元素指向了二維數組ch的第二行字符串,這樣,就使指針數組p和二維數組ch建立起了一種對應關系,以后對二維數組ch的某個元素的引用就有兩種等價的形式:ch[i][j]或p[i][j]。②對二維數組ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的內容為字符串'8254'。③程序中第二個循環(huán)中的循環(huán)體s=e*10+p[i][j]-‘0’;的功能是這樣的,每執(zhí)行一次,將s中的值乘以10(也即,將s中的數值整體向左移動一位,并在空出來的個位上添一個0),再將當前p[i][j]中的字符量轉換為相應的數字,然后把這個數字加到s的個位上。④注意到內層循環(huán)的循環(huán)條件p[i][j]>,0,是指p[i][j]中的字符只要不是字符串結束標志,\\0,就繼續(xù)循環(huán),語句j+=2;是使下標j每次增加2,也即一個隔一個地從p[i]所指向的字符串中取出字符。經過上述解析后,不難看出,該程序首先從p[0]所指向的字符串'6937'中一個隔一個地取出字符,分別是‘6’和‘3’,然后從p[1]所指向的字符串'8254'中一個隔一個地取出字符,分別是‘8’和‘5’,同時經過轉換和相加運算后,結果s中的值應該是6385,所以,正確答案是C)。

45.B解析:f函數的功能是返回地址為x,y的兩個數中值鉸的數的地址,本題輸出結果是7,8,7。

46.A解析:本題中定義了3個指向整型的指針變量p、q、w,并讓P指向a,讓q指向b,通過將q的值賦給w,使w也指向b,最后將NULL賦值給q。由整型變量指針的定義可知,可以給整型指針指向的變量賦一個常數值(表達式);可以給指針變量賦一個同種類型的指針變量(或地址值);選項A因為q不指向任何變量,給一個空指針指向的單元賦值是錯誤的。

47.B在計算機中,算法被定義為對一個問題求解步驟的一種描述,是求解問題的方法,它是指令的有限序列,其中每條指令表示一個或者多個操作。算法具有有窮性、確定性、可行性、輸入和輸出五大特點。

在本題中,選項A、C、D的說法明顯偏離了算法的定義,因此正確答案選B。

48.B解析:C語言一維數組的定義有兩種方式:一是指定數組長度,如選項A“inta[5]={0,1,2,3,4,5};”,但此定義的賦初值個數為6,多于數組長度,是錯誤的。因為給數組賦初值,初值個數只能小于或等于數組長度。二是不指定數組長度,由賦初值的初值個數決定數組的長度,如選項B的“chara[]={0,1,2,3,4,5};”,初值個數為6,因此數組長度為6。所以能正確定義一維數組。選項C的定義中a是一個字符變量,不能正確定義一維數組。選項D“inta[5]=“0123”;”給int型數組賦字符串初值,顯然是錯誤的。

49.D解析:strcat(p1,P2)將字符串abcABC放到了*pl所指向的存儲單元中;strcpy在本題將abcABC復制到str+2所指向的存儲單元中,即覆蓋原str數組中的字符z及其后的所有字符,故str的值為“xyabcABC”。

50.B解析:字符串比較不能用兩個等于號(==)來進行比較,應使用函數strcmp(s1,s2)來比較。函數strcmp(s1,s2)的功能是:當字符串s1和s2相等時,返回值為0。因此,當表達式!strcmp(s1,s2)=1時,條件成立,執(zhí)行后面的語句,輸出theyareEqual。

51.C解析:根據二維數組的定義得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本題的輸出是第3行的值m[2][0],m[2][1],m[2][2],即369。

52.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序實現的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

53.D解析:當用scanf函數從鍵盤輸入數據時,每行數據的末尾按下回車鍵(Enter鍵)之前,可以任意修改。但按下回車鍵putchar(c1)(Enter鍵)之后,scanf函數即接受了這一行數據,不能再回去修改。所以本題中,當輸入123<CR>時,變量c1、c2、c3的值分別為1、2、3,當輸入45678<CR>時,變量c5、c6的值4和5。所以用輸出函數putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。所以選項D)為正確答案。

54.C解析:靜態(tài)局部變量在編譯時賦初值,即只賦初值一次,在程序運行時它已有初值。以后每次調用時不再重新賦初值而只是保留上次函數調用結束時的值,而對自動變量賦初值,不是在編譯時進行的,而在函數調用時進行,每調用一次函數重新給一次初值,相當于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調函數fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調用函數fun時,d初值為5,p由主函數傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數調用結束后,它仍保留d=6。再次調用fun函數,d的初值為6,而由主函數傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數。

55.C

56.BB.【解析】棧是一種特殊的線性表,其插入和刪除運算都只在線性表的一端進行,而另一端是封閉的。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元索是最后被插入的元素,也是最后被刪除的元素。棧是按先進后出的原則組織數據的。

【知識拓展】“?!钡男问饺缡謽尩膹椣?,最后壓入的子彈總是最先被彈出,而最先壓人的子彈最后才被彈出,也就是“先進后出”。

57.D解析:字符變量的值為單個字符,并用單引號包含,而本題中的單引號中是兩個字符,不是合法說明。

58.B解析:本題考核的知識點是文件名的表示法以及文件的讀寫模式。由于“\\”是轉義字符,所以在文件名中的“\\”用“\\\\”來表示。要打開文本文件進行讀寫,應使用讀寫模式“r+”。

59.B解析:本題考考查的是指針函數。指針函數定義的基本格式為:類型說明符*函數名()。其中,“類型說明符”表示返回的指針。值所指向的數據類型。

60.A\n兩個實體之間的聯(lián)系實際上是實體集問的函數關系,這種函數關系可以有下面幾種,即一對一的聯(lián)系、一對多(或多對一)的聯(lián)系和多對多的聯(lián)系;概念模型便于向各種模型轉換。由于概念模型不依賴于具體的數據庫管理系統(tǒng),因此,容易向關系模型、網狀模型和層次模型等各種模型轉換。

\n

61.B表達式x-=x+X可以寫成x=x-(x+x),所以X的值為-l0。

62.B

63.B

64.B

65.A字符型指針變量可以用選項A的賦值方法:char$s;s=”O(jiān)lympic”,選項C的寫法:char$s。s={¨Olympic”};是錯誤的。字符數組可以在定義的時候初始化:chars[]={¨Olympic”};?或者chars[]=”O(jiān)lympic”,都是正確的。但是不可以在定義字符數組后,對數組名賦值。(數組名是常量,代表數組首地址)所以選項8和選項D都是錯誤的。對于本例,選項B、D中字符數組s的大小至少為8,才能存放下字符串。(字符串的末尾都有結束標識‘、0’)。

66.A解析:本調用語句func中包含了3個實參,一個是對f2函數調用“f2(v1,v2)”的返回值;另一個是逗號表達式“(v3,v4,v5)”的值v5(逗號表達式的一般形式為:表達式1,表達式2,表達式3......表達式n,它的值為表達式n的值);還有—個實參也是逗號表達式“v6,max(v7,v8)”的值,即對max函數調用的返回值。

67.A

68.C

69.B

70.D循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結構,所以隊頭指針有時可能大于隊尾指針,有時也可能小于隊尾指針。

71.C

72.C

\n本題考查按位異或運算,異或就是相同為0,不同為1(化為二進制00001101),017的二進制為000001111,兩者異或結果為00000010。

\n

73.B本題主要考查的是用二維數組首地址和下標來引用二維數組元素的方法。通過分析可知,程序中的雙重循環(huán)定義了一個如下的二維數組:

01200000

23400000

45600000

00000000

00000000

由于數組的下標是從0開始的,所以二維數組元素a[i][j]表示的是二維數組a的第i+1行、第j+1列對應位置的元素。從第二次的嵌套循環(huán)結束后j的值為3,所以

計算的是數組中所有第四列的元素的和,即0。

74.C根據數據結構中各數據元素之間的前后件關系的復雜程度,一般將數據結構分為兩大類:線性結構和非線性結構。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線性結構,而二叉樹是非線性結構。

75.As得到全局變量a的值為4,第一次循環(huán)返回l2,第二次循環(huán)返回l2,累加結果為28。

76.A解析:本題考核的知識點是函數聲明的應用。函數聲明是對所用到的函數的特征進行必要的聲明,編譯系統(tǒng)以函數聲明中給出的信息為依據,對調用表達式進行檢測,以保證調用表達式與函數之間的參數正確傳遞。函數聲明的一般格式為:

類型標識符函數名(類型標識符形參…);

這些信息就是函數定義中的第一行的內容。這里形參的名字是不重要的,重要的是類型標識符,函數聲明中也可以不寫形參名只寫該形參的聲明類型,但不能只寫形參名而不寫該形參的類型。本題中,選項A中doublemyadd(doublea,b),沒寫出形參b的類型,故選項A不正確。所以,4個選項中選項A符合題意。

77.C

78.A表達式k=a>b?(b>c?1:0):0表示:如果(a>b)條件為真,則k取值(b>c?1:0),否則k取值0;當a>b的情況下,如果b>c,則k值為1,否則為0。所以該表達式與選項A)功能相同。

79.B題目給出的程序分為兩個部分:主函數main和函數fun。main函數給出了整型變量a,b的初始值,并將整型變量a,b作為fun的實參。fun函數的功能是計算s的值并輸出。對于整型變量,運算符“/”的作用是求出兩個數除法所得商的整數部分。s=a*(b/4),a的初始值為16,b的初始值為10,b/4的結果為2,a*2得32。

80.A解析:由于s[2][6]表示字符串已超出了數組s的表示范圍,在C中不會劉數組越界進行檢查,當數組越界時,會得到一個不確定的值。

81.(1)錯誤:*t=calloe(m,sizeof(STU));

正確:(structss*)calloc(m,sizeof(STU));

(2)錯誤:for(i=j=0;i<M;j++)

正確:for(i=j=0;i<M;i++)

(3)錯誤:t[k].s=b[j].s;

正確:t[k]=b[j];

【解析】由函數proc()可知,變量t是指向動態(tài)存儲空間的變量,因此不能間接訪問運算符,而函數calloc的返回值類型為void*,要進行顯式類型轉換,因此“*t=calloc(m,si-zeof(STU));”應改為“(structss*)calloc(m,sizeof(STU));”。

由程序可知,變量i為控制學生個數的變量,因此“for(i=j=

82.voidproc(char*str){char*p=str:while(*p==*)p++;//通過P的移動來達到使P指向第一個不是*號的字符for(;*p!=\0;p++,str++)//把從第一個不是*號的字符放到a中*str=*P:*str=\0;//最后用\0作為字符串結束標志}【解析】題目中要求將字符串中的前導*號全部刪除首先將指針p移動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結束符。2021年山西省呂梁市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.折半查找的時間復雜性為()

A.O(n2)B.O(n)C.O(nlogn)D.O(logn)

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

A.C程序總是從第一個函數開始執(zhí)行

B.在C程序中,被調用的函數必須在main函數中定義

C.C程序總是從main函數開始執(zhí)行

D.C程序中的main函數必須放在程序的開始部分

3.某完全二叉樹有256個節(jié)點,則該二叉樹的深度為()。

A.7B.8C.9D.10

4.有以下程序main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序運行后的輸出結果是______。A.3B.5C.-1D.-2

5.有以下程序(說明:字母A的ASCIl碼值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序運行后的輸出結果是()。A.BYB.BTC.YTD.YE

6.若輸入“abcdef”“abdef”,下述程序的輸出結果為()。#include<stdio.h>#include<string.h>main{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.-1B.0C."abcdef"D."abdef"

7.設”inta=12;”,則執(zhí)行完語句”a+=a*a;”后,a的值是()。

A.12B.144C.156D.288

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

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

9.以下是一個對數組A(含有n個數值元素)進行排序的算法偽代碼,請問它的平均時間復雜度是多少()

A.O(n)B.O(n^2)C.O(1)D.O(log(n))

10.下列程序執(zhí)行后的輸出結果是()。main{charx=0xFFFF;printf("%d\n",x--);}A.-32767B.FFFEC.1D.32768

11.

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

A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數據丟失

B.打開一個已存在的文件并進行寫操作后,原有文件中的全部數據必定被覆蓋

C.在一個程序中對文件進行寫操作后,必須先關閉該文件然后再打開才能讀到第1個數據

D.C語言中的文件是流式文件,因此只能順序存取數據

13.下列程序的輸出結果是()

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

A.6,1B.2,1C.6,0D.2,0

14.若有定義“inta=1234,b=-5678;”,用語句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結果是()。

A.+1234-5678(中間有一個空格,最后有一個空格)

B.+1234-5678(最前面有一個空格,中間有一個空格)

C.+-1234+-5678(最前面和最后均無空格)

D.1234-5678(中間有兩個空格,最后有一個空格)

15.設有以下函數:voidfun(intn,char*s){…}則下面對函數指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

16.在1,2,3,......1000中,有()個數各位乘積為0。

A.100B.101C.172D.181E.190F.191

17.設有定義“char*c;”,以下選項中能夠使c正確指向一個字符串的是()。

A.charstr[]=“string”;c=str;

B.scanf(“%s”,c);

C.c=getchar();

D.*c=“string”;

18.有1000個無序的整數,希望使用最快的方式找出前50個最大的,最佳的選擇是()

A.冒泡排序B.基數排序C.堆排序D.快速排序

19.設有說明:charw;intx;f1oaty;doublez;則表達式w*x+z-y值的數據類型為()。

A.floatB.charC.intD.double

20.下列不屬于過程設計工具中圖形工具的是()。

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

二、2.填空題(20題)21.設有以下定義

stnctss

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

且已建立如下圖所示鏈表結構:

請寫出刪除結點y的賦值語句______。

22.計算機網絡按通信距離來劃分可以分為【】。

23.下列程序的運行結果是______。

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

24.以下函數sstrcat的功能是實現字符串的連接,即將t所指字符串復制到s所指字符串的尾部。例如:,所指字符串為abed,t所指字符串為efgh,調用函數sstrcat后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#inehde<stdio.h>

#include<string.h>

voidsstuat(char*9,char*t)

{intn;

n=strlen(s);

while(*(s+n)=【】){s++;t++;}

25.在樹形結構中,樹根結點沒有______。

26.在面向對象的程序設計中,類描述的是具有相似性質的一組【】。

27.語句printf("%f\n",13.0*(1/5));的輸出結果為【】。

28.在數據庫的概念結構設計中,常用的描述工具是【】。

29.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

30.算法的復雜度主要包括【】復雜度和空間復雜度。

31.診斷和改正程序中錯誤的工作通常稱為【】。

32.下面的程序用來統(tǒng)計文件中字符的個數。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fP;

longnum=0;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("Can'topenfile!\n");sxit(0);}

while【】

{fgetc(fp);num++;}

printr("num=%d\n",num);

fclose(fp);

}

33.表示“整數x的絕對值大于5”時值為“假”的C語言表達式是______。

34.數據獨立性分為邏輯獨立性與物理獨立性。當數據的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,稱為【】。

35.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,i,x;

for(j=4;j______;j--)

{for(i=1;i<4;i++)

{x=(j-1)*4+______;

printf("%4d",x);

}

printf("\n");

}

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

intm=13;

intfun(intx,inty)

{intm+3;

return(x*y-m);

}

main()

{inta=7,b,5;

prntf("%d\n",fun(a,B)/m);

}

37.十進制數53轉換為十六進制數為【】。

38.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為______。

39.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結果是______。

#definePI3.14159;printf("PI=%f",PI);

40.在數據庫理論中,數據物理結構的改變,如存儲設備的更換、物理存儲的更換、存取方式等都不影響數據庫的邏輯結構,從而不引起應用程序的變化,稱為【】。

三、1.選擇題(20題)41.若有以下定義:chars[20]="programming",*ps=s;則不能代表字符o的表達式是_______。

A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps

42.微型計算機中運算器主要的功能是進行()

A.算術運算B.邏輯運算C.算術和邏輯運算D.初等函數運算

43.若有以下說明和語句:structst{intn;char*ch;};structsta[3]{5,"abc",7,"def",9,"ghk"},*p=a則值為6的表達式是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

44.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}該程序的輸出結果是

A.69825B.63825C.6385D.693825

45.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}程序運行后輸出結果是______。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

46.若有以下定義和語句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;則以下選項中錯誤的語句是

A.*q=0;B.w=p;C.*p=a;D.*p=*w;

47.在計算機中,算法是指()

A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法

48.以下能正確定義一維數組的選項是______。

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

49.以下程序#include<stdio.h>#include<string.h>main(){char*pl="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}的輸出是________。

A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC

50.下列語句中,在字符串s1和s2相等時顯示“theyareEqual”的是()。

A.if(*s1==*s2)puts("theyareEqual");

B.if(!strcmp(s1,s2))puts("theyareEqual");

C.if(s1==s2)Puts("theyareEqual");

D.if(strcmp(s1,s2))puts("theyareEqual");

51.下列程序執(zhí)行后的輸出結果是______。main(){intm[][3]={1,4.7,6,5,8,3,6,9};inti,k=2for(i=0,i<3;i++){printf("%d",m[k][i];}}

A.456B.258C.369D.789

52.以下敘述中正確的是

A.用C程序實現的算法必須要有輸入和輸出操作

B.用C程序實現的算法可以沒有輸出但必須要有輸入

C.用C程序實現的算法可以沒有輸入但必須要有輸出

D.用C程序實現的算法可以既沒有輸入也沒有輸出

53.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結果是()。

A.1267B.1256C.1278D.1245

54.以下程序運行后的輸出結果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

55.以下程序運行后,a的值是()main(){inta,k=4,m=6,*pl=&k,*p2=&m;a=p1=&m;printf("%d\n",a);}

A.4B.1C.0D.運行時出錯,a無定值

56.按照“先進后出”原則組織數據的數據結構是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

57.設有語句“chara='72';”則變量a()。

A.包含一個字符B.包含二個字符C.包含三個字符D.說明不合法

58.若要打開A盤上user子目錄下名為abc.txt的文本文件進行讀、寫操作,下面符合此要求的函數調用是

A.fopen(“A:\user\abc.txt”,“r”)

B.fopen(“A:\\user\\abc.txt”,“r+”)

C.fopen(“A:\user\abc.txt”,“rb”)

D.fopen(“A:\user\\abc.txt”,“w”)

59.若定義函數int*func(),則函數func的返回值為()。

A.一個實數B.一個指向整型變量的指針C.一個指向整型函數的指針D.一個整型函數的入口地址

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

A.用E—R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系

B.用E—R圖只能表示實體集之間一對一的聯(lián)系

C.用E—R圖只能表示實體集之間一對多的聯(lián)系

D.用E—R圖表示的概念數據模型只能轉換為關系數據模型

四、選擇題(20題)61.若有定義語句:“intx=10;”,則表達式x-=x+x的值為()。

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

62.

63.

64.

65.下列語句組中,正確的是()。

A.char*s;s=”O(jiān)lympic”;

B.chars[7];s=”O(jiān)lympic”;

C.char*s;s={¨Olympic”};

D.chars[7];s={"Olympic”};

66.下面的函數調用語句中func函數的實參個數是()。func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))

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

67.設有定義語句

則以下敘述正確的是().

A.f是指向函數的指針變量,該函數具有_個int類型的形參

B.f是基類型為int的指針變量

C.f是指向int類型一維數組的指針變量

D.f是函數名,該函數的返回值是基類型為int類型的地址

68.

69.

70.對于循環(huán)隊列,下列敘述中正確的是()。

A.隊頭指針是固定不變的

B.隊頭指針一定大于隊尾指針

C.隊頭指針一定小于隊尾指針

D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針

71.

72.設x=015,則x=x^017的值是()。A.00001111B.11111101C.00000010D.11000000

73.下面的程序段運行后,輸出結果是()。

A.9B.0C.不確定值D.18

74.下列數據結構中,屬于非線性結構的是A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

75.有以下程序程序運行后的輸出結果是()。

A.28B.24C.32D.36

76.若程序中定義了以下函數doublemyadd(doublea,doubleb){return(a+b);}并將其放在調用語句之后,則在調用之前應該對該函數進行說明,以下選項中錯誤的說明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

77.

78.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是()。A.

B.

C.

D.

79.有如下程序

#include"stdio.h"

fun(inta,intb)

{ints;

s=a*(b/4);

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

main()

{inta=16,b=10;

fun(a,b);

}

該程序的輸出結果是

A.16B.32

C.40D.80

80.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其輸出為______。

A.不確定B.編譯錯誤C.gD.輸出null字符

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:對M名學生的學習成績,按從低到高的順序找出前m(m≤10)名學生來,并將這些學生數據存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數值返回。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數proc,它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。 例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g****。 注意:部分源程序給出如下。 請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。 試題程序: #include<stdio.h=:{> #include<conio.h> woidproc(char*str) { } voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

參考答案

1.D

2.C解析:C程序是由main函數開始運行,通過main函數調用其他函數,所以,選項A)錯誤;在C程序中,函數不能嵌套定義,即不能在一個函數中定義另一個函數,選項B)錯;C程序總是從main函數開始執(zhí)行,但main函數不必放在最前面,故選項D)錯。

3.C

4.D本題考核的知識點是運算符的優(yōu)先級。主函數中首先定義了整型變量m、n和x,并給m和n賦初值為3和4,接著執(zhí)行兩條賦值語句,第一條x=-m++等價于x=-(m++),其值即為-3,第二條x=x+8/++n等價于X=X+8/(++n),即為x=-3+8/5=-2,因此最后輸出x的值為-2。所以,4個選項中選項D符合題意。

5.Dfun函數的意思是當*s%2==0的時候就輸出并且s自加l次,然后判斷。所以可知只有第2和第4個位置上的才符合要求,所以答案為D。

6.D本題考查字符串比較函數strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。字符串依次比較的是它們字符的ASCIl碼值。

7.C

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

9.B

10.C因為x=0xFFFF=11111111,因此當以整型形式輸出時對應的數為一1。

11.B

12.AB選項中,打開一個已存在的文件并進行寫操作后,原有文件中的全部數據不一定被覆蓋,也可以對源文件進行追加操作等。C選項中,在一個程序中對文件進行寫操作后,不是先關閉該文件然后再打開才能讀到第1個數據,用f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論