2021-2022年遼寧省營口市全國計算機等級考試C語言程序設計_第1頁
2021-2022年遼寧省營口市全國計算機等級考試C語言程序設計_第2頁
2021-2022年遼寧省營口市全國計算機等級考試C語言程序設計_第3頁
2021-2022年遼寧省營口市全國計算機等級考試C語言程序設計_第4頁
2021-2022年遼寧省營口市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩110頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年遼寧省營口市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

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

A.順序存儲結構的存儲一定是連續(xù)的,鏈式存儲結構的存儲空間不一定是連續(xù)的

B.順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構

C.順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表

D.鏈式存儲結構比順序存儲結構節(jié)省存儲空間

3.設有以下說明,則不正確的敘述是()。

A.A.arr所占的內存長度等于成員c的長度

B.arr的地址和它的各成員的地址都是同一地址

C.arr可以作為函數(shù)參數(shù)

D.不能在定義arr時對它初始化

4.在位運算中,操作數(shù)每左移兩位,其結果相當于()。

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4

5.程序運行后的輸出結果是()。A.10B.30C.0D.64

6.廣義表((a))的表尾是()。

A.aB.(a)C.((a))D.()

7.有以下程序:

A.CDEFB.ABEFC.ABCDD.CDAB

8.

9.有以下程序:#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序的運行結果是()。

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

10.C程序的基本模塊為()。

A.表達式B.標識符C.語句D.函數(shù)

11.有以下程序段:charc1,c2;for(c=‘0’,c2=‘9’;c1<c2;c1++,c2--)printf(“%c%c”,c1,c2);程序段的執(zhí)行結果是()。

A.0123456789B.0918273645C.0123498765D.9876543210

12.棧通常采用的兩種存儲結構是()。

A.順序存儲結構和鏈式存儲結構B.散列方式和索引方式C.鏈表存儲結構和數(shù)組D.線性存儲結構和非線性存儲結構

13.

14.若有定義:typedefint*(*T[10])[10];Tb;則以下選項中所定義的a與上述定義中的b,其類型完全相同的是()。

A.int*(*a[10][10]);

B.int**a[10][10];

C.int*(a[10])[10];

D.int*(*a[10])[10];

15.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運行后的輸出結果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World

16.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

該程序的輸出結果是()。

A.不確定的值B.2C.1D.0

17.

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

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

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

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

19.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內說明語句后的復合語句中定義了一個變量,則該變量().

A.為全局變量,在本程序文件范圍內有效

B.為局部變量,只在該函數(shù)內有效

C.為局部變量,只在該復合語句中有效

D.定義無效,為非法變量

20.下列選項中不合法的十六進制數(shù)是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

二、2.填空題(20題)21.下面程序的運行結果是______。

voidswap(int*a,int*B)

{

int*t;

t=a;a=b;b=t;

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

22.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產生的結果。

23.以下程序用來輸出結構體變量student所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>

structst

{charname[20];doublescore;

};

main()

{structststudent;

printf("studentsize:%d\n",sizeof(【】));

}

24.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,這稱為______。

25.下面程序的功能是:對字符串從小到大進行排序并輸出,請?zhí)羁铡?/p>

#include"string.h"

#include"stdio.h"

sort(char*a[],intn)

{inti,j;

char*p;

for(j=1;j<=n-1;j++)

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

if(())>0)

{p=a[i];

a[i]=a[i+1];

a[i+1]=p;}

}

main()

{inti;

char*book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};

sort(());

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

printf("%s\n",book[i]);

}

26.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

27.數(shù)據(jù)庫技術的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控。

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

29.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

31.fseek函數(shù)的正確調用形式是【】。

32.下列程序的輸出結果是【】。

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

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

t(a,b,c,d);

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

}

33.下面程序的運行結果是【】。

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{intx==3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

34.下面程序的功能是將一個字符串str的內容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

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

35.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

for(i=1;i<=5;i++)

{t=i+______;s=s+t;}

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

}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

37.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。以下函數(shù)求出鏈表中所有鏈結點數(shù)據(jù)域的和值,作為函數(shù)值返回。請在橫線處填入正確內容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

38.下列程序的輸出結果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

39.寫出下列程序的輸出結果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

40.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指內存空間中,形成一個新字符串s。

請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

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

main()

{charstrl[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

printf("%s\n",strl);

}

三、1.選擇題(20題)41.設有下列二叉樹:

對此二叉樹先序遍歷的結果為

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

42.設有如下程序:fun(float*p1,intn,float*p2,intm,float*s){inti;*s=0.0;for(i=0;i<n;i++)*s+=*p1++;for(i=0;i<m;i++)*s+=*p2++;}main(){floata[]={1.1,2.2},b[]={1.0,2.0,3.0),*s=a;fun(a,2,b,3,s);printf("%f\n",*s);}上面程序的輸出結果是______。

A.8.2B.9.3C.3.3D.1.1

43.下列隊列的描述中,正確的是()

A.隊列屬于非線性表B.隊列在隊尾刪除數(shù)據(jù)C.隊列按“先進后出”進行數(shù)據(jù)操作D.隊列按“先進先出”進行數(shù)據(jù)操作

44.在軟件開發(fā)中,下面任務不屬于設計階段的是______。

A.數(shù)據(jù)結構設計B.給出系統(tǒng)模塊結構C.定義模塊算法D.定義需求并建立系統(tǒng)模型

45.若有以下定義和語句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結果()

A.2,MB.3,EC.2,ED.輸出項與對應的格式控制不一致,輸出結果不確定

46.以下程序的輸出結果是______。main(){chsrst[20]="bello\0\t\\";print("%d%f\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

47.若有下列定義(設int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%%d,j=%%d\n”,i,j);輸出的結果是()。

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

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

49.表達式'8'-'2'的值是()。

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

50.函數(shù)的值通過rerurn語句返回,下面關于return語句的形式描述錯誤的是

A.return表達式;

B.return(表達式);

C.一個return語句可以返回多個函數(shù)值

D.一個return語句只能返回一個函數(shù)值

51.下列敘述中正確的是A.線性表是線性結構B.棧與隊列是非線性結構C.線性鏈表是非線性結構D.二叉樹是線性結構

52.下面程序段的運行結果是charstr[]="ABC",*p=str;printf("%d\n",*(p+3));

A.67B.0C.字符'C'的地址D.字符'C'

53.辦公自動化(OA)是計算機的一項應用,按計算機應用的分類,它屬于()

A.數(shù)據(jù)處理B.科學計算C.實時控制D.輔助設計

54.以下關于C語言數(shù)據(jù)類型的敘述中正確的是()。

A.C基本數(shù)據(jù)類型包括:分為整型、實型、浮點型、字符型四種

B.實型常量的表達方式包括十進制形式、十六進制形式、二進制形式、八進制形式、指數(shù)形式

C.若要處理如“人員信息”等含有不同類型的相關數(shù)據(jù),應自定義結構體類型

D.若只處理“真”和“假”兩種邏輯值,應使用邏輯類型

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

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

56.設有如下的變量定義;inti=8,k,a,b;unsingedlongw=5;doublex=1.42,y=5.2則以下符合C語言語法的表達式是()

A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=float(i)

57.已知inta=1,b=3則a^b的值為

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

58.一個存儲結點存放一個______。

A.數(shù)據(jù)項B.數(shù)據(jù)元素C.數(shù)據(jù)結構D.數(shù)據(jù)類型

59.下列程序的輸出結果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}

A.12B.13C.14D.15

60.下列程序的輸出結果是()。#include<stdio.h>voidmain(){intb[6]={2,4,6,8,10,12};int*p--b,**q=&p;printf("%d",*(p++));printf("%d",**q);}

A.*p=&a;scanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

四、選擇題(20題)61.有以下程序:執(zhí)行時輸入:0<;回車>;后,則輸出結果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

62.(53)已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是()

A.cedba

B.acbed

C.decab

D.deabc

63.

64.有以下程序:

#include<stdio.h>

main()

{inta;

scanf("%d",&a);

if(a++<9)printf("%d\n",a);

clscprintf("%d\n",a--);

}

程序運行時從鍵盤輸入9<回車>,則輸出結果是()。

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

65.在黑盒測試方法中,設計測試用例的主要根據(jù)是()。

A.程序外部功能B.程序內部邏輯C.程序數(shù)據(jù)結構D.程序流程圖

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

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

67.

68.

69.

70.

71.若a是數(shù)直類型,則邏輯表達式的值是()。A.1B.0C.2D.不知道a的值,不能確定

72.

73.有以下程序:

程序執(zhí)行后的輸出結果是()。

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

74.

75.

76.在數(shù)據(jù)管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是()。

A.數(shù)據(jù)庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.數(shù)據(jù)項管理

77.有下列程序:

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

}

程序執(zhí)行后的輸出結果是()。A.A.45B.20C.25D.36

78.

有以下程序:

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

}

main

{char*s1="abe",*s2="123":

swap(s1,s2);

printf("%s,%s\n",s1,s2);

}

程序執(zhí)行后的輸出結果是()。

A.123,abeB.abc.123C.1bc,a23D.321,cba

79.以下選項中,不能作為合法常量的是()。

A.1.234e05B.1.234e+5C.1.234e0.5D.1.234e0

80.下列程序的運行結果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

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

參考答案

1.A解析:對線性表進行二分法檢索,要求線性表是按順序方式存儲的,并按關鍵碼值的大小排好序,而不是按關鍵碼的檢索頻率排序。

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

3.C本題主要考查聯(lián)合體的內存使用:聯(lián)合體所占用的內存空間為最長的成員所占用的空間,int占2個字節(jié),char占1個字節(jié),float占4個字節(jié),所以arr所占的內存長度等于成員c的長度:arr的地址和它的各成員的地址都是同一地址;不能直接對arr賦值,即不能在定義arr時對它初始化:arr也不可以作為函數(shù)參數(shù)。

4.D解析:本題主要考查左移、右移對數(shù)據(jù)值的影響,左移n位相當于乘以2的n次冪,右移n位相當于除以2的n次冪。

5.D[解析]本題目中靜態(tài)局部變量x,在靜態(tài)存儲區(qū)內分配存儲單元。在程序整個運行期間都不釋放。所以第一次循環(huán)s的值為2.第二次循環(huán)中,返回的x的值為4.所以s的值為8.第三次循環(huán),返回的x的值為8.所以s的值為64.

6.D

7.A在函數(shù)funl()之前定義了全局字符變量a和b。這兩個變量的作用域是從其定義處開始到整個程序末結束。在函數(shù)funl()之內定義了兩個變量a和b,并且分別初始化為字符ˊCˊ和ˊDˊ。

8.D

9.D在main函數(shù)中,調用f(a,b)函數(shù)返回3,調用f(a,c)函數(shù)返回6,所以外層調用f(f(a,b),f(a,c)),即調用f(3,6)函數(shù)返回9。故本題答案為D選項。

10.D

11.B程序定義兩個字符變量c1和c2。for循環(huán)中,首先為c1賦值‘0’,為c2賦值‘9’,接著判斷c1和C2的大小。由于字符變量可以作為整型數(shù)處理,數(shù)字字符的ASCII值按字面數(shù)值的大小順序連續(xù)遞增,因此c1小于c2成立,執(zhí)行循環(huán)體輸出“09”,再將c1自增1,c2自減1后,執(zhí)行下一輪循環(huán),直到c1=‘5’,c2=‘4’時,c1<c2不成立,循環(huán)終止。最終程序段輸出:0918273645。故本題答案為B選項。

12.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧的順序存儲結構是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易于實現(xiàn)。注意:這3種運算方法在各種存儲結構中的應用。

13.D

14.D“typedefint*(*T[10])[10];”使用typedef定義一種新類型名T,T的類型是二維數(shù)組指針,指向10個元素的數(shù)組。其中數(shù)組元素類型為int*[10],即數(shù)組的每個元素又是包含10個元素的數(shù)組,數(shù)組的元素是整型指針類型。故本題答案為D選項。

15.C本題輸出兩個結果,第一個是求字符串的長度。第二個是輸出的字符串,數(shù)組的下標是從0開始的,所以當str取1的時候,應為“One*Dream!”。

16.D

\n本題for循環(huán)中,當i=0時,判斷條件i&printf('%d\n',n[k]),此時i的值是0,輸出n[k]的值也為0,0&0結果還是0,條件不成立,退出循環(huán)。所以最后輸出結果為0。

\n

17.D

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

19.C

20.C十六進制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。

21.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向7實參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數(shù)調用返回后x和y依舊是原來的值。

22.驅動模塊驅動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調用或驅動,同時被測試模塊還要去調用其他模塊,前者稱為驅動模塊,后者稱為承接模塊。其中驅動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產生的結果;承接模塊的作用是代替被測模塊,調用其他模塊。

23.structst或studentstructst或student

24.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結構(包括存儲結構、存取方式)改變時,不需要修改應用程序。而邏輯獨立性是指當邏輯結構改變時,不需要修改應用程序。

25.strcmp(a[i]a[i+1])book6strcmp(a[i],a[i+1])book,6解析:此程序段的功能是使字符串從大到小進行排列。顯然,第一空白處,是利用strcmp函數(shù)比較字符串a[i]和a[i+1]的大小,若不符合題意,就進行調換;main函數(shù)中,sort函數(shù)是對數(shù)組book中的字符串按從小到大進行排序,所以第二空白處填入“book,6”(6是指book所指向的字符串的個數(shù))。

26.實例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應類的一個實例。

27.共享性共享性解析:數(shù)據(jù)庫技術的主要特點有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨立性,數(shù)據(jù)統(tǒng)一管理與控制。

28.282,8解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復執(zhí)行循環(huán)體語句,否則退出循環(huán)。這里程序初始時a=1,b=10,經過操作b-=a;a++后b=9,a=2,判斷條件b--<O不成立,退出循環(huán),但b的值被減1,因此結果為:a=2,b=8。

29.doublemax或externdoublemaxdoublemax或externdoublemax解析:本題中main()函數(shù)需要調用max()函數(shù),在main()之前就需要聲明函數(shù)max(),并且可以用extern說明符使變量的作用域擴充到需要用到它的函數(shù),所以,填寫doublemax(或externdoublemax)。

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

31.fseek(文件指針位移量起始點)fseek(文件指針,位移量,起始點)解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調用形式為:

fseek(文件指針,位移量,起始點)

“起始點”用0,1或2代替,其中,0代表“文件開始”;1為“當前位置”;2為“文件末尾”?!拔灰屏俊敝敢浴捌鹗键c”為基點,向前移動的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當文件的長度大于64k時不致出現(xiàn)問題。ANSIC標準規(guī)定在數(shù)字的末尾加一個字母L,就表示long型。

32.5656解析:本題中a,b,c,d足實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。在調用函數(shù)時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調用結束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結果是56。

33.3535解析:主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調用swap(p,q),把p和q中的地址值傳給了形參指針變量a和b,此時a和b分別指向了主函數(shù)中的變量x和y。在函數(shù)swap()中交換了指針變量a和b的值,但并沒有改變a和b所指向的內容,所以函數(shù)調用返回后x和y依舊是原來的值。故運行結果為35。

34.顛倒一個字符串中的字符,就是首尾對應的元素兩兩交換。簡單地可用兩個游標變量i和j,i是前端元素的下標,j是后端元素的下標,交換以這兩個變量值為下標的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]位于str[j]的前面,即i<j字符串末元素的下標是它的長度減1,所以在第二個空框處應填入-1。程序為了交換str[i]和str[j],使用了變量k,該變量應在程序的變量定義部分中—起定義,所以在第—個空\r\n\r\n

35.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結果來看,s保存的是最終結果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內容”應是t*10。

36.22132,2,1,3解析:本題考查++,--運算符和條件運算符的使用。

“表達式1?表達式2:表達式3”的功能是:表達式1的值若非0,則計算表達式2的值,且表達式2的值為最終結果;若表達式1的值為0,則計算表達式3的值,且為最終結果。

本題中,x=1,y=2時,x<y成立,輸出y的值2;y=2,z=3時,z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個輸出x的值不變?yōu)?,y的值為增加后的3。

37.structlink*headstructlink*head解析:考查用指針引用結構體變量成員數(shù)據(jù)的方法。因為本題中是用結構體變量構成了鏈表,所以要從鏈表頭節(jié)點,逐個節(jié)點的引用結構體的數(shù)據(jù)域,需要有指向結構體變量的指針,依次指向各個節(jié)點,即p=p->next,而用指針引用結構體成員數(shù)據(jù)的方法為:p->data。

解析:本題,已知結果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進行類型轉換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

39.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做:n++是先取n的當前值和1做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當前值3,然后再將n加l,即程序結束后得到n=4,但輸出的是3。

40.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組strl和str2,并且給str2賦初值“abc&fgh”,接著調用函數(shù)sstrcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應該填*t++或*(t++)。

41.C解析:二叉樹的遍歷分為先序,中序、后序三種不同方式.本題要求先序遍歷,其遍歷順序應該為:訪問根結點->,先序遍歷左子樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDECF,故答案為C。

42.A解析:實參指針變量s指向數(shù)組a的第一個元素,在函數(shù)fun中首先將s所指數(shù)組a的第一個元素賦值為0.0,然后將數(shù)組a和b中的元素值依次累加到數(shù)組a的第一個元素中。

43.DD)【解析】隊列是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭,允許插入的一端叫做隊尾。隊列的操作數(shù)是依據(jù)先進先出的原則進行的。因此隊列亦稱作先進先出的線性表,或后進后出的線性表。

44.D【解析】數(shù)據(jù)結構設計、給出系統(tǒng)模塊結構以及定義模塊算法都屬于設計階段,而定義需求并建立系統(tǒng)模型屬于分析階段。

45.B

46.B解析:C語言中字符串是以'\\0'字符結束的,且strlen()函數(shù)計算的是\\0字符前的所有字符的個數(shù)。本題中strlen(st)應為5。數(shù)組定義以后系統(tǒng)就為其分配相應大小的內存空間,而不論其中有沒有內容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內存空間的大小。所以本題的sizeof(st)為20。

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

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

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

50.C解析:return語句中的表達式的值就是所求的函數(shù)值,此表達式值的類型必須與函數(shù)首部所說明的類型一致。如果類型不一致,則以函數(shù)值的類型為準,由系統(tǒng)自動進行轉換。一個return語句只能返回一個值。

51.A根據(jù)數(shù)據(jù)結構中各數(shù)據(jù)元素之間前后件關系的復雜程度,一般將數(shù)據(jù)結構分為兩大類型:線性結構與非線性結構。如果一個非空的數(shù)據(jù)結構滿足下列兩個條件:1,有且只有一根節(jié)結點,2,每一個結點最多有一個前件,也最多有一個后件,則稱該數(shù)據(jù)結構為線性結構,又稱線性表。所以線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。

52.B解析:考查指向字符串的指針變量。在該題中,指針變量p指向的應該是該字符串中的首地址,p+3指向的是字符串結束標志'\\0'的地址,因而。(p+3)的值為0。

53.A

54.C解析:C基本數(shù)據(jù)類型包括:分為整型、實型、枚舉型、字符型四種,實型就是浮點型,實型數(shù)據(jù)只有十進制,沒有2,8,16進制表達,在C語言中沒有定義邏輯類型,而是一般用0代表假,用非零代表真。

55.D

56.A

57.C解析:^是按位異或運算,如果對應位不同則結果為1,相同則為0。

58.B

59.D

60.D解析:double*p,a;語句表示定義了一個指向雙精度型的指針變量p和雙精度型變量a,而語句p=&a表示將變量a的地址賦給指針變量p;scanf('%1f',p)表示用鍵盤輸入的數(shù)賦給指針變量p所指向的地址單元中。scanf()函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f(或%1e)。否則,數(shù)據(jù)不能正確輸入。所以選項D)為正確答案。

61.C”anf(”%c”,&c),輸入的字符,題目中輸入了0,字符0,對應于ASCIl碼為48,因此for循環(huán)中,i的范圍從0~5,均小于48,if條件不成立,直接執(zhí)行下一條語句,執(zhí)行語句prinff,因此得到的結果是0,1,2,3,4。故答案為C選項。

62.A注:前提要掌握三種遍歷的方法

63.A

64.A\n本題考查簡單的運算符操作.當輸入9時,(a++<9)為假,所以執(zhí)行else語句中的printf('%d\n',a--),在執(zhí)行時此時a經過a++操作a=10,所以答案為A。

\n

65.A【答案】:A

【知識點】:黑盒測試

【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅動測試,它完全不考慮程序內部的邏輯結構和內部特征,只著眼于程序的外部結構,主要用來檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選A。

66.D第一次調用的是最內層的f(n),即f(1)返回值是2。第二次調用中間的f(f(n)),即f(2)返回值是4。最后調用最外層的f(f(f(n))),即r(4)返回值是8。最后打印輸出。

67.D

68.B

69.D

70.B

71.A無論a的值為多少,(a==1)和(a!=1)總會有一個成立,兩者或運算,則值為真。為1。

72.C

73.A因為fun(intx)是一個遞歸函數(shù),所以主函數(shù)中fun(7)經過3次遞歸調用,其過程可以描述為“fun(7)=7一fun(5)=7一(5一fun(3))=7一(5一(3一fun(1)))=7一(5一(3—3))=7—5=2”,所以最后輸出結果為2。因此.A選項正確。

74.C

75.B

76.A在數(shù)據(jù)管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)這一階段。數(shù)據(jù)庫系統(tǒng)階段用數(shù)據(jù)模型來表示復雜的數(shù)據(jù),有較高的數(shù)據(jù)獨立性。數(shù)據(jù)庫系統(tǒng)為用戶提供了方便的用戶接口,用戶既可使用查詢語言或終端命令操作數(shù)據(jù)庫,也可以用程序方式來操作。數(shù)據(jù)庫管理系統(tǒng)提供了數(shù)據(jù)控制功能。

77.C在for循環(huán)語句中自變量i從0開始,每次自加2,執(zhí)行s+=*(t+i)語句,因為C語言規(guī)定數(shù)組名做表達式相當于數(shù)組的首地址,也就是第一個元素的地址。因此,*(t+i)代表數(shù)組的第i+1個元素。所以程序運行的結果是1+3+5+7+9=25,即變量S的值等于25。

78.C

\n本題考查swap函數(shù),它的作用是把x、Y所指的內容互換,其他的不變,因此當執(zhí)行完調用函數(shù)后,僅僅a與1互換,其他的沒有變。

\n

79.CC語言的語法規(guī)定,字母e(E)之前必須有數(shù)字,且e(E)后面的指數(shù)必須是整數(shù),而選項c)中,e(E)后面的指數(shù)是小數(shù),所以不合法。

80.D本題考查"drhile循環(huán)。第一次循環(huán),y=y-1,y=2,循環(huán)條件成立,x=1,X++后值為1,x自加變成2,進入循環(huán),a=a+1=1,判斷if語句條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),x=2,y-1=1,循環(huán)條件成立,進入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<X成立,執(zhí)行break語句,退出循環(huán)。結果為D。

81.(1)錯誤:p=j

正確:p=j;

(2)錯誤:p=j;

正確:p=i;

【解析】根據(jù)C語言的語法規(guī)則.每一條語句都要以分號結束。因此,“p=j”后要加上分號“;”。每次比較后要把小的下標賦值給p,因此,“p=j;”應改為“p=i;”。

82.[答案][解析]題目要求刪除空格,也就是重新保存空格以外的其他字符。通過循環(huán)刪除字符串中的每一個空格,將非空格字符進行重新保存。2021-2022年遼寧省營口市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

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

A.順序存儲結構的存儲一定是連續(xù)的,鏈式存儲結構的存儲空間不一定是連續(xù)的

B.順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構

C.順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表

D.鏈式存儲結構比順序存儲結構節(jié)省存儲空間

3.設有以下說明,則不正確的敘述是()。

A.A.arr所占的內存長度等于成員c的長度

B.arr的地址和它的各成員的地址都是同一地址

C.arr可以作為函數(shù)參數(shù)

D.不能在定義arr時對它初始化

4.在位運算中,操作數(shù)每左移兩位,其結果相當于()。

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4

5.程序運行后的輸出結果是()。A.10B.30C.0D.64

6.廣義表((a))的表尾是()。

A.aB.(a)C.((a))D.()

7.有以下程序:

A.CDEFB.ABEFC.ABCDD.CDAB

8.

9.有以下程序:#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序的運行結果是()。

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

10.C程序的基本模塊為()。

A.表達式B.標識符C.語句D.函數(shù)

11.有以下程序段:charc1,c2;for(c=‘0’,c2=‘9’;c1<c2;c1++,c2--)printf(“%c%c”,c1,c2);程序段的執(zhí)行結果是()。

A.0123456789B.0918273645C.0123498765D.9876543210

12.棧通常采用的兩種存儲結構是()。

A.順序存儲結構和鏈式存儲結構B.散列方式和索引方式C.鏈表存儲結構和數(shù)組D.線性存儲結構和非線性存儲結構

13.

14.若有定義:typedefint*(*T[10])[10];Tb;則以下選項中所定義的a與上述定義中的b,其類型完全相同的是()。

A.int*(*a[10][10]);

B.int**a[10][10];

C.int*(a[10])[10];

D.int*(*a[10])[10];

15.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運行后的輸出結果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World

16.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

該程序的輸出結果是()。

A.不確定的值B.2C.1D.0

17.

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

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

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

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

19.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內說明語句后的復合語句中定義了一個變量,則該變量().

A.為全局變量,在本程序文件范圍內有效

B.為局部變量,只在該函數(shù)內有效

C.為局部變量,只在該復合語句中有效

D.定義無效,為非法變量

20.下列選項中不合法的十六進制數(shù)是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

二、2.填空題(20題)21.下面程序的運行結果是______。

voidswap(int*a,int*B)

{

int*t;

t=a;a=b;b=t;

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

22.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產生的結果。

23.以下程序用來輸出結構體變量student所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>

structst

{charname[20];doublescore;

};

main()

{structststudent;

printf("studentsize:%d\n",sizeof(【】));

}

24.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,這稱為______。

25.下面程序的功能是:對字符串從小到大進行排序并輸出,請?zhí)羁铡?/p>

#include"string.h"

#include"stdio.h"

sort(char*a[],intn)

{inti,j;

char*p;

for(j=1;j<=n-1;j++)

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

if(())>0)

{p=a[i];

a[i]=a[i+1];

a[i+1]=p;}

}

main()

{inti;

char*book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};

sort(());

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

printf("%s\n",book[i]);

}

26.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

27.數(shù)據(jù)庫技術的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控。

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

29.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

31.fseek函數(shù)的正確調用形式是【】。

32.下列程序的輸出結果是【】。

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

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

t(a,b,c,d);

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

}

33.下面程序的運行結果是【】。

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{intx==3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

34.下面程序的功能是將一個字符串str的內容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

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

35.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

for(i=1;i<=5;i++)

{t=i+______;s=s+t;}

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

}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

37.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。以下函數(shù)求出鏈表中所有鏈結點數(shù)據(jù)域的和值,作為函數(shù)值返回。請在橫線處填入正確內容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

38.下列程序的輸出結果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

39.寫出下列程序的輸出結果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

40.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指內存空間中,形成一個新字符串s。

請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

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

main()

{charstrl[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

printf("%s\n",strl);

}

三、1.選擇題(20題)41.設有下列二叉樹:

對此二叉樹先序遍歷的結果為

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

42.設有如下程序:fun(float*p1,intn,float*p2,intm,float*s){inti;*s=0.0;for(i=0;i<n;i++)*s+=*p1++;for(i=0;i<m;i++)*s+=*p2++;}main(){floata[]={1.1,2.2},b[]={1.0,2.0,3.0),*s=a;fun(a,2,b,3,s);printf("%f\n",*s);}上面程序的輸出結果是______。

A.8.2B.9.3C.3.3D.1.1

43.下列隊列的描述中,正確的是()

A.隊列屬于非線性表B.隊列在隊尾刪除數(shù)據(jù)C.隊列按“先進后出”進行數(shù)據(jù)操作D.隊列按“先進先出”進行數(shù)據(jù)操作

44.在軟件開發(fā)中,下面任務不屬于設計階段的是______。

A.數(shù)據(jù)結構設計B.給出系統(tǒng)模塊結構C.定義模塊算法D.定義需求并建立系統(tǒng)模型

45.若有以下定義和語句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結果()

A.2,MB.3,EC.2,ED.輸出項與對應的格式控制不一致,輸出結果不確定

46.以下程序的輸出結果是______。main(){chsrst[20]="bello\0\t\\";print("%d%f\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

47.若有下列定義(設int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%%d,j=%%d\n”,i,j);輸出的結果是()。

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

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

49.表達式'8'-'2'的值是()。

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

50.函數(shù)的值通過rerurn語句返回,下面關于return語句的形式描述錯誤的是

A.return表達式;

B.return(表達式);

C.一個return語句可以返回多個函數(shù)值

D.一個return語句只能返回一個函數(shù)值

51.下列敘述中正確的是A.線性表是線性結構B.棧與隊列是非線性結構C.線性鏈表是非線性結構D.二叉樹是線性結構

52.下面程序段的運行結果是charstr[]="ABC",*p=str;printf("%d\n",*(p+3));

A.67B.0C.字符'C'的地址D.字符'C'

53.辦公自動化(OA)是計算機的一項應用,按計算機應用的分類,它屬于()

A.數(shù)據(jù)處理B.科學計算C.實時控制D.輔助設計

54.以下關于C語言數(shù)據(jù)類型的敘述中正確的是()。

A.C基本數(shù)據(jù)類型包括:分為整型、實型、浮點型、字符型四種

B.實型常量的表達方式包括十進制形式、十六進制形式、二進制形式、八進制形式、指數(shù)形式

C.若要處理如“人員信息”等含有不同類型的相關數(shù)據(jù),應自定義結構體類型

D.若只處理“真”和“假”兩種邏輯值,應使用邏輯類型

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

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

56.設有如下的變量定義;inti=8,k,a,b;unsingedlongw=5;doublex=1.42,y=5.2則以下符合C語言語法的表達式是()

A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=float(i)

57.已知inta=1,b=3則a^b的值為

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

58.一個存儲結點存放一個______。

A.數(shù)據(jù)項B.數(shù)據(jù)元素C.數(shù)據(jù)結構D.數(shù)據(jù)類型

59.下列程序的輸出結果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}

A.12B.13C.14D.15

60.下列程序的輸出結果是()。#include<stdio.h>voidmain(){intb[6]={2,4,6,8,10,12};int*p--b,**q=&p;printf("%d",*(p++));printf("%d",**q);}

A.*p=&a;scanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

四、選擇題(20題)61.有以下程序:執(zhí)行時輸入:0<;回車>;后,則輸出結果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

62.(53)已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是()

A.cedba

B.acbed

C.decab

D.deabc

63.

64.有以下程序:

#include<stdio.h>

main()

{inta;

scanf("%d",&a);

if(a++<9)printf("%d\n",a);

clscprintf("%d\n",a--);

}

程序運行時從鍵盤輸入9<回車>,則輸出結果是()。

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

65.在黑盒測試方法中,設計測試用例的主要根據(jù)是()。

A.程序外部功能B.程序內部邏輯C.程序數(shù)據(jù)結構D.程序流程圖

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

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

67.

68.

69.

70.

71.若a是數(shù)直類型,則邏輯表達式的值是()。A.1B.0C.2D.不知道a的值,不能確定

72.

73.有以下程序:

程序執(zhí)行后的輸出結果是()。

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

74.

75.

76.在數(shù)據(jù)管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是()。

A.數(shù)據(jù)庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.數(shù)據(jù)項管理

77.有下列程序:

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

}

程序執(zhí)行后的輸出結果是()。A.A.45B.20C.25D.36

78.

有以下程序:

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

}

main

{char*s1="abe",*s2="123":

swap(s1,s2);

printf("%s,%s\n",s1,s2);

}

程序執(zhí)行后的輸出結果是()。

A.123,abeB.abc.123C.1bc,a23D.321,cba

79.以下選項中,不能作為合法常量的是()。

A.1.234e05B.1.234e+5C.1.234e0.5D.1.234e0

80.下列程序的運行結果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

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

參考答案

1.A解析:對線性表進行二分法檢索,要求線性表是按順序方式存儲的,并按關鍵碼值的大小排好序,而不是按關鍵碼的檢索頻率排序。

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

3.C本題主要考查聯(lián)合體的內存使用:聯(lián)合體所占用的內存空間為最長的成員所占用的空間,int占2個字節(jié),char占1個字節(jié),float占4個字節(jié),所以arr所占的內存長度等于成員c的長度:arr的地址和它的各成員的地址都是同一地址;不能直接對arr賦值,即不能在定義arr時對它初始化:arr也不可以作為函數(shù)參數(shù)。

4.D解析:本題主要考查左移、右移對數(shù)據(jù)值的影響,左移n位相當于乘以2的n次冪,右移n位相當于除以2的n次冪。

5.D[解析]本題目中靜態(tài)局部變量x,在靜態(tài)存儲區(qū)內分配存儲單元。在程序整個運行期間都不釋放。所以第一次循環(huán)s的值為2.第二次循環(huán)中,返回的x的值為4.所以s的值為8.第三次循環(huán),返回的x的值為8.所以s的值為64.

6.D

7.A在函數(shù)funl()之前定義了全局字符變量a和b。這兩個變量的作用域是從其定義處開始到整個程序末結束。在函數(shù)funl()之內定義了兩個變量a和b,并且分別初始化為字符ˊCˊ和ˊDˊ。

8.D

9.D在main函數(shù)中,調用f(a,b)函數(shù)返回3,調用f(a,c)函數(shù)返回6,所以外層調用f(f(a,b),f(a,c)),即調用f(3,6)函數(shù)返回9。故本題答案為D選項。

10.D

11.B程序定義兩個字符變量c1和c2。for循環(huán)中,首先為c1賦值‘0’,為c2賦值‘9’,接著判斷c1和C2的大小。由于字符變量可以作為整型數(shù)處理,數(shù)字字符的ASCII值按字面數(shù)值的大小順序連續(xù)遞增,因此c1小于c2成立,執(zhí)行循環(huán)體輸出“09”,再將c1自增1,c2自減1后,執(zhí)行下一輪循環(huán),直到c1=‘5’,c2=‘4’時,c1<c2不成立,循環(huán)終止。最終程序段輸出:0918273645。故本題答案為B選項。

12.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧的順序存儲結構是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易于實現(xiàn)。注意:這3種運算方法在各種存儲結構中的應用。

13.D

14.D“typedefint*(*T[10])[10];”使用typedef定義一種新類型名T,T的類型是二維數(shù)組指針,指向10個元素的數(shù)組。其中數(shù)組元素類型為int*[10],即數(shù)組的每個元素又是包含10個元素的數(shù)組,數(shù)組的元素是整型指針類型。故本題答案為D選項。

15.C本題輸出兩個結果,第一個是求字符串的長度。第二個是輸出的字符串,數(shù)組的下標是從0開始的,所以當str取1的時候,應為“One*Dream!”。

16.D

\n本題for循環(huán)中,當i=0時,判斷條件i&printf('%d\n',n[k]),此時i的值是0,輸出n[k]的值也為0,0&0結果還是0,條件不成立,退出循環(huán)。所以最后輸出結果為0。

\n

17.D

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

19.C

20.C十六進制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。

21.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向7實參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數(shù)調用返回后x和y依舊是原來的值。

22.驅動模塊驅動模塊

溫馨提示

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

最新文檔

評論

0/150

提交評論