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

下載本文檔

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

文檔簡介

2022年湖北省咸寧市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序段

#include<stdio.h>

voidfun(char*fname,char*st)

{FILE*myf;

inti;

myf=fopen(fname,"w");

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{fun("test.t","newworld");

fun("test.t","hello,");}

程序執(zhí)行后,文件test.t中的內(nèi)容是A.A.hello,

B.newworldhello,

C.newworld

D.hello,rld

2.如果某圖的鄰接矩陣是對角線元素均為零的上三角矩陣,則此圖是_______

A.有向完全圖B.連通圖C.強連通圖D.有向無環(huán)圖

3.有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序運行后的輸出結(jié)果是()。A.2.3.3B.2.3.2C.2.3.1D.2.2.1

4.在關系數(shù)據(jù)模型中,通常可以把()稱為屬性,其值稱為屬性值。

A.記錄B.基本表C.模式D.字段

5.下列程序段輸出的字符串長度為()。printf("\\aaa\'ccc\bddd\'");

A.11B.12C.13D.17

6.設一組初始記錄關鍵字序列為(Q,H,C,Y,P,A,M,S,R,D,F,X),則按字母升序的第一趟冒泡排序結(jié)束后的結(jié)果是()

A.F,H,C,D,P,A,M,Q,R,S,Y,X

B.P,A,C,S,Q,D,F,X,R,H,M,Y

C.A,D,C,R,F,Q,M,S,Y,P,H,X

D.H,C,Q,P,A,M,S,R,D,F,X,Y

7.下列描述中正確的是______。A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術問題

8.

9.

10.在位運算中,操作數(shù)左移一位,其結(jié)果相當于A.A.操作數(shù)乘以2

B.操作數(shù)除以2

C.操作數(shù)除以4

D.操作數(shù)乘以4

11.

12.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數(shù)組a的每個元素的初值都是0

B.數(shù)組a的第一維大小為1

C.數(shù)組a的行數(shù)為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

13.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構不允許將多條語句寫在一行里

B.程序順序結(jié)構對于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個分號改成逗號,后面一個不變,則不能實現(xiàn)a和b值的交換

14.

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

#include<stdio.h>

main

{inta=0,i;

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

{switch(i)

{case0:

case3:a+=1;

case1;

case2:a+=2;

default:a+=3;

}

}

printf("%d",a);

}

A.19B.1C.6D.8

15.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7

16.下面程序的運行結(jié)果是

#include<stdio.h>

voiddelch(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!=′\n′;i++)

if(a[i]>=′0′&&a[i]<=′9′)

{s[j]=a[i];j++;}

s[j]=′\0′;}

main()

{char*item="a34bc";

delch(item);

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

A.abcB.34C.a34D.a34bc

17.設S為一個長度為n的字符串,其中的字符各不相同,則S中的互異的非平凡子串(非空且不同于S本身)的個數(shù)為()。

A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1

18.若d為double型變量,則表達式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

19.以下數(shù)據(jù)結(jié)構中,()是線性結(jié)構。

A.有向圖B.棧C.線索二叉樹D.B樹

20.有三個關系R、S和T如下:由關系R和S得到關系T的操作是()。A.自然連接B.交C.除D.并

二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

22.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。

23.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

24.下列程序執(zhí)行輸出的結(jié)果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

25.問題處理方案的正確而完整的描述稱為______。

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

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

27.下列程序的運行結(jié)果為【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

28.在關系運算中,查找滿足一定條件的元組的運算稱之為【】。

29.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

30.以下程序段用以統(tǒng)計鏈表中元素的個數(shù)。其中first指向鏈表第一個結(jié)點,count用來統(tǒng)計結(jié)點個數(shù)。請?zhí)羁铡?/p>

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

31.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

32.設順序輸入數(shù)列為:24,30,8,5,1,27,24,26,10,21,9,28,7,13,15。假定每個結(jié)點的查找概率相同,若用順序存儲方式組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】;若按二叉排序樹結(jié)構組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】。

33.若有如下結(jié)構體說明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

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

【】t[20]

34.函數(shù)pi的功能是根據(jù)以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

35.下面pi函數(shù)的功能是根據(jù)以下公式返回滿足精度要求的π的值。請根據(jù)以下算法要求補足所缺語句。

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(【】;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*【】);

}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

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

37.數(shù)據(jù)流圖的類型有【】和事務型。

38.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應該是:

2345678910。

請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++)

printf("%d%d",X--,y);

}

40.表達式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

三、1.選擇題(20題)41.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

42.下列敘述中正確的是A.break語句只能用于switch語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.在switch語句中,不一定使用break語句

43.下列程序的輸出結(jié)果是______。main(){union}inta[2];longk;charc[4];}un,*sp=&un;sp->a[0]=0x39;sp->a[1]=0x38;printf("%1x\n",sp->k);}

A.3938B.3839C.390038D.380039

44.設有以下定義或語句,則輸出的結(jié)果是(用small模式編譯,指針變量占2個字節(jié))()structdate{long*cat;structdate*next;doubledog;}too;printf("%d",sixeof(too));

A.20B.16C.14D.12

45.有下列函數(shù)定義:fun(floath){printf("%f,%f\n",h,h*h);}該函數(shù)的類型是()。

A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯

46.變量a已被定義為整型,下列表達式有錯的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

47.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()

A.每個元素都有一個直接前件和直接后件

B.線性表中至少要有一個元素

C.表中諸元素的排列順序必須是由小到大或由大到小

D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件

48.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

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

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.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

52.已定義以下函數(shù)

fun(int*p)

{return*p;}

該函數(shù)的返回值是()

A.不確定的值

B.形參p中存放的值

C.形參p所指存儲單元中的值

D.形參p的地址值

53.下列關于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

54.閱讀下列程序,則執(zhí)行后的結(jié)果為#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

A.3e,6B.62,5C.56,5D.3E,6

55.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。

A.n-1B.nC.n+1D.2n

56.C語言中最簡單的數(shù)據(jù)類型包括()。

A.整型、實型、邏輯型B.整型、實型、字符型C.整型、字符型、邏輯型D.整型、實型、邏輯型、字符型

57.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d\n",a);}

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

58.有以下程序:intfun(intx[],intn){staticihtsum=O,i;for(i=O;i

A.45B.50C.60D.55

59.以下不正確的定義語句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

60.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A.可行性分析報告B.軟件需求規(guī)格說明書C.概要設計說明書D.集成測試計劃

四、選擇題(20題)61.第

34

若有如下語句

intx=3;

do{printf("%d\n",x-=2);}

while(!(--x));

則上面程序段

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

62.

63.

64.

有以下計算公式

若程序前面已在命令中包含math.h文件,不能夠正確

計算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

65.以下關于return語句的敘述中正確的是()。A.一個自定義函數(shù)中可以根據(jù)不同情況設置多條return語句

B.一個自定義函數(shù)中必須有一條return語句

C.定義成void類型的函數(shù)中可以有帶返回值的retum語句

D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處

66.下面程序的運行結(jié)果是()。

main

{

inty=5,x=14;y=((x=3*y,x+6),x-1);

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

}

A.x=27,y=27

B.x=12,y=13

C.x=15,y=14

D.x=y=27

67.下列程序的運行結(jié)果是()。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

68.有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf(“c,%d\n”,c1,c2);}已知字母A的ASCⅡ碼為65,程序運行后的輸出結(jié)果是()。A.E,68B.B,69C.E,DD.輸出無定值

69.

70.有以下程序:

#include<stdi0.h>

main()

{inta=1,b=2;

for(;a<8;a++){b+=a;a+=2;)

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

}

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

A.9,18

B.8,11

C.7,11

D.10,14

71.有以下程序程序運行后的輸出結(jié)果是()

A.一20B.一l2C.0D.10

72.

73.

有以下程序

#include<stdi0.h>

main

{FILE*fp;inta[0]一{1,2,3,0,0},i;

fp=fopen("d2.dat,"wb");

fwrite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a.sizeof(int),10,fp);

fclose(fp);

for(i=0;i<10;i++)printft("%d",a[i]);

}

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

A.1,2,3,0,0,o,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

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

A.函數(shù)的返回值類型不能是結(jié)構體類型,只能是簡單類型

B.函數(shù)可以返回指向結(jié)構體變量的指針

C.可以通過指向結(jié)構體變量的指針訪問所指結(jié)構體變量的任何成員

D.只要類型相同,結(jié)構體變量之間可以整體賦值

75.下列選項中,不屬于模塊間耦合的是()。A.數(shù)據(jù)耦合B.標記耦合C.異構耦合D.公共耦合

76.設有關系R和S,關系代數(shù)表達式為R一(R—S)表示的是()。

A.R∩SB.R—SC.RUSD.R÷S

77.有以下程序段以下關于程序段執(zhí)行情況的敘述,正確的是()。

A.當產(chǎn)生的隨機數(shù)n為0時,結(jié)束程序運行

B.當產(chǎn)生的隨機數(shù)n為4時,結(jié)束循環(huán)操作

C.當產(chǎn)生的隨機數(shù)n為l和2時,不做任何操作

D.細循環(huán)語句固定執(zhí)行8次

78.在結(jié)構化方法中,軟件功能分別屬于下列軟件開發(fā)中的(

)階段。A.詳細設計B.需求分析C.總體設計D.編程調(diào)試

79.要求通過while循環(huán)不斷讀人字符,當讀入字母N時結(jié)束循環(huán)。若變量已正確定義,以下正確的程序段是

()。

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算str所指字符串中含有t所指字符串的數(shù)目,并作為函數(shù)值返回。

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

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

試題程序:

六、程序設計題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:實現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。

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

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

試題程序:

參考答案

1.D本題主要考查文件的操作。在本題的程序中,首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個指針類型的形參,其中第一個形參指向需要被操作文件的文件名,而第二個形參指向被操作的字符串。在函數(shù)體中,首先定義一個文件指針,然后以只寫的方式打開第一個形參所指向的文件,接著執(zhí)行for循環(huán),循環(huán)結(jié)束的條件是循環(huán)變量小于被操作字符串的長度,循環(huán)體中的程序fputc(st[i],myf);的功能是將字符串中的當前字符輸入到文件中。由這些分析我們可以知道,函數(shù)fun的作用是將字符串的內(nèi)容寫入到文件中。

在主函數(shù)中,兩次調(diào)用函數(shù)fun,當?shù)谝淮握{(diào)用時,寫入文件的內(nèi)容為newworld,然后第二次調(diào)用函數(shù),此時打開文件,文件的指針重新回到開始,然后往文件中寫內(nèi)容“hello,”,由于此時文件中已經(jīng)有內(nèi)容“newworld”,則需要覆蓋前面一部分的內(nèi)容,因此,程序的最終輸出結(jié)果是hello,rld,本題的正確答案選D。

2.D

3.C整型變量x、y的初值都為1,“x++,y++,++y”是一個逗號表達式,程序執(zhí)行“z=x++,y++,++y”之后,x的值為2,y的值為3,z取逗號表達式中的第二個表達式的值,為1。因此本題的答案為選項C。

4.D解析:數(shù)據(jù)庫表中字段轉(zhuǎn)化為屬性,把記錄的類型轉(zhuǎn)化為關系模式。

5.C解析:轉(zhuǎn)義字符有1個\\\\、2個\\'、1個\\b,普通字符有3個a、3個c、3個d,共13個字符。

6.D

7.C\r\n軟件工程是試圖用工程、科學和數(shù)學的原理與方法研制、維護計算機軟件的有關技術及管理方法。軟件工程的主要思想是強調(diào)在軟件開發(fā)工程中需要應用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進度無法控制、軟件質(zhì)量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應用需求的增長。軟件項目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術都是軟件工程需要解決的部分問題。因此選項C正確。

8.A

9.B

10.A左移運算符“<<”是雙目運算符,其功能是把“<<”左邊的運算數(shù)的各二進位全部左移若干位,由“<<”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0。例如,a<<4是把a的各二進位向左移動4位。如a=00000011(十進制3),左移4位后為00110000(十進制48)。

11.B

12.D解析:本題考查給二維數(shù)組元素賦值。給二維數(shù)組元素賦值時應注意下列兩點:①在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數(shù)組第一維的大小由下列規(guī)則確定;當初值的個數(shù)能被第二維的常量表達式的值除盡時,所得商數(shù)就是第一維的大??;當初值的個數(shù)不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數(shù)加1。

13.BC語言允許將多條語句寫在一行,選項A錯誤;題干中的語句是從左至右依次執(zhí)行的,選項B正確,選項C錯誤。題干中的程序前兩個分號改成逗號,就構成了逗號表達式。逗號表達式會依次從左到右計算各個表達式,整個表達式的值是最后一個表達式的值,所以此例也可以實現(xiàn)a和b值的交換,選項D錯誤。故本題答案為B選項。

14.A

\n本題考查switch語句。當i一1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運行,“a=a+2=2,a=a+3=5”;當i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次往下執(zhí)行,“a=a+2=7,a=a+3=10”;當i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a—a+2—13,a—a+3一l6:當i=4時,執(zhí)行default,a=a+3=19,結(jié)束循環(huán)。

15.B解析:本題考查的是程序結(jié)構設計中if語句的應用,當if判斷條件成立時就執(zhí)行其后的相關語句,否則不執(zhí)行,本題中第一個if條件不成立,故不執(zhí)行“a=b”,接著執(zhí)行“c=a”,此時第二個if條件也不成立,故不執(zhí)行其后語句,最終c的值為3。

16.B解析:考查用指針引用字符串元素的方法。指針a通過數(shù)組元素下標來從頭逐個地引用字符串item中的字符,判斷不是0~9之間的數(shù)字時,就去掉這個字符,所以程序結(jié)束后,字符串item中就只剩下和兩個字符了。

17.D

18.D

19.B

20.C由圖所知,其中,C中只有一個屬性,是除操作。

21.7979解析:因為在調(diào)用子函數(shù)時進行的是數(shù)值傳遞,調(diào)用于函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。

22.概念(或概念級)概念(或概念級)

23.調(diào)試調(diào)試

24.88解析:第1次for循環(huán),i=0,調(diào)用函數(shù)f(2),然后將a的值加1,在f()函數(shù)中,變量c為static類型,所以c=8:第2次for循環(huán),i=1,調(diào)用函數(shù)f(3),然后將a的值加1,調(diào)用函數(shù)f(3)時,a=c++=8,所以k=8。

25.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

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

27.7467

28.選擇選擇解析:在關系數(shù)據(jù)庫中,選擇運算也是一個元運算,關系R通過選擇運算(并由該運算給出所選擇的邏輯條件)后仍為一個關系。這個關系是由R中的那些滿足邏輯條件的元組所組成。

29.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實際上是要求s2字符串的長度,即是4。

30.p!=NULLcount++(*p).next

31.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)

32.857/15

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

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

struct結(jié)構體類型名

{

成員項表;

};

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

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

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

34.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表達式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)

n

即:∑1÷(i×i)

i=1

對應的C語言的表達式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。

35.n=1s

36.77解析:本題考查的是函數(shù)的遞歸調(diào)用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結(jié)果。

37.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務。

38.!=returnj!=,returnj解析:本題程序的流程是:讓i,j都從1開始,其中j用于控制刪除后剩下的數(shù)中的下標,i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標,所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,所以a[i]要留到新數(shù)組中。注本題中i、j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。

39.101091101091解析:for(表達式1;表達式2;表達式3)語句的功能是:首先計算表達式1的值,然后檢測表達式2的值,若其值為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢后,再計算表達式3的值。然后再檢測表達式2的值是否為真,若為真,繼續(xù)執(zhí)行循環(huán)體語句,若為假,則退出循環(huán);第1次循環(huán)x>8成立,輸出x=10,y=10后,x的值減1,i=1,執(zhí)行y=++i操作,y的值變?yōu)?;判斷條件還成立,輸出x=9,y=1,然后x的值減1,循環(huán)條件不成立,則退出循環(huán)。

40.整型整型解析:上面的表達式中,通過強制類型轉(zhuǎn)換把最后參與運算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類型。

41.C本題考查的是順序查找。在進行順序查找過程中,如果線性表中的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次。故本題答案為C。

42.D解析:break語句除了能用于switch語句外,還可以用于循環(huán)語句中,因此選項A不正確。在switch語句中,可以使用default來執(zhí)行所有case均失配時的分支,也可以不使用default,此時若所有case均失配則跳出switch,因此選項B不正確。在switch語句中,每個case的作用就是標出一個執(zhí)行的起點,當符合某個case時,程序就從該case所標出的起點處開始執(zhí)行,若沒有break語句中斷執(zhí)行的話,程序會一直執(zhí)行到switch的最后一條語句,而不是碰到下一個case就跳出switch。雖然break與case的配對使用會讓所有case分支互不重疊條理明確,但不配對使用在C語言中也是允許的。因此選項C不正確,應該選擇D。

43.D解析:結(jié)構體變量un的存儲情況如圖18-3所示,第一列表示地址,第二列為每個字節(jié)的值,可用兩位的十六進制數(shù)表示,當把這4個字節(jié)的內(nèi)容作為long型數(shù)據(jù)時,高地址字節(jié)的值表示高位,低地址字節(jié)的值表示低位。

44.D

45.A解析:本題考查默認函數(shù)的函數(shù)值的類型。在函數(shù)定義時,由于函數(shù)沒有說明其類型,系統(tǒng)默認一律自動按整型處理,因此,函數(shù)的類型為int類型。

46.C

47.D解析:線性表可以為空表,排除選項B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項C也有誤,只有D項是正確的。

48.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

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

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

51.D解析:“&”是求址運算符,“*”是指變量說明符。選項A)、B)應改為scanf('%d',p);選項C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險,建議不使用。

52.C解析:本題考核的知識點是函數(shù)的返回值.函數(shù)的返回值應該為return后面的表達式的值,在本題中的表達式為*p,*p指的是形參p所指存儲單元中的值,所以,4個選項中選項C符合題意。

53.C解析:根據(jù)數(shù)據(jù)結(jié)構對棧的定義及其特點可知:棧是限定只在表尾進行插入或刪除操作的線性表,因此棧是先進后出的線性表,對棧的插入與刪除操作,不需要改變棧底元素。棧是限定只在表尾進行插入或刪除操作的線性表。

54.A解析:數(shù)組a[5][5],0<=i<5,0<=j<5,則可以用5種表達式來引用,a[i][j],*a(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+5*i+j)。數(shù)組的下限為0,%后面為小寫的x,所以輸出的結(jié)果為小寫字母表示的十六進制。

55.C解析:在n個結(jié)點的單向鏈表(無表頭結(jié)點)中,每個結(jié)點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。

56.B

57.B

58.C解析:本題中fun()函數(shù)通過一個for循環(huán)來累計形參數(shù)組x的前n個元素之和。在主函數(shù)中,第1次調(diào)用fun(a,5)時,返回的值應該是數(shù)組a的前5個元素的和,而第2次調(diào)用fun(b,4)時,返回的值除了本次累計的數(shù)組b前4個元素的和外,還要加上上次累計的值。所以,最后輸?shù)膕的值為數(shù)組a所有元素之和的兩倍加上數(shù)組b所有元素之和,結(jié)果是60。故應該選擇C。

59.B解析:在一維數(shù)組中要注意的是作為下標表達式的常量表達式的值必須是大于等于0,選項B)中定義有5個元素,但賦值時有6個元素,所以是錯誤的。

60.BA項錯誤,可行性分析階段產(chǎn)生可行性分析報告。C項錯誤,概要設計說明書是總體設計階段產(chǎn)生的文檔。D項錯誤,集成測試計劃是在概要設計階段編寫的文檔。B項正確,需求規(guī)格說明書是后續(xù)工作如設計、編碼等需要的重要參考文檔。

61.Bdo-while語句的一般格式為:do循環(huán)體語句while(表達式);先執(zhí)行循環(huán)體語句一次,再判斷表達式的值,若為真,則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。本題中,先執(zhí)行printf('%d\n',x=-2)后,值為x=x-2,即為1。判斷表達式的值,!(--x)為真,x=0,繼續(xù)循環(huán)。再次執(zhí)行循環(huán)體語句后,x=-2,此時表達式?。?-x)的值為0,結(jié)束循環(huán)。

62.C

63.B

64.B

\n選項A、C、D分別用一個ifelse語句、兩個if語句和條件表達式表達了計算公式的含義。

\n

65.A一個函數(shù)可以有多個return語句,所以選擇A)。

66.C本題考查的是逗號表達式。逗號表達式的求解步驟是先求解表達式1,然后依次求解表達式2,直到表達式N的值。整個逗號表達式的值就是最后一個表達式N的值。表達式(x=3*y,x+6)中,x=15。表達式y(tǒng)=x—1=14。

67.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)。結(jié)果為D。

68.A本題目中字符變量cl是字符‘A’的ASCIl碼加上4,即69所對應的字符‘E’。字符變量c2是字符‘A’的ASCIl碼加上3,即68所對應的字符‘D’。但是打印輸出時,cl以%C的格式輸出,所以是E,c2以%d的格式輸出,所以是68。

69.D

70.D\n第一次執(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)。

\n

71.AsuB(a+b)*c展開后,(2+3)一(2+3)*5值為一20,所以答案選擇A)。

72.D

73.D

\n本題程序首先用函數(shù)fopen以“wb”的方式開打文件“d2.dat”,然后調(diào)用兩次fwrite函數(shù)將數(shù)組a的5個元素,依次輸出到文件fp中,共10個字節(jié),關閉文件。再次打開文件,使用文件指針指向文件的開頭,調(diào)用head函數(shù)從文件印中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中。型數(shù)組bb中,因此,【2】處填“str[i]-0”;由函數(shù)proc可知,變量n中存放整型數(shù)組bb中的元素個數(shù),最后要返回到主函數(shù)當中,因此,【3】處填“n”。\n

74.A函數(shù)返回值類型可以是簡單類型和結(jié)構體類型。

75.C解析:模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數(shù)據(jù)耦合、同構耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。注意:評價模塊獨立性的主要標準,以及對它們的定義和分類。

76.AR—s表示屬于R但不屬于s,R—(R—S)表示屬于R但不屬于(R—s),即相當于Rns。

77.Acase常量表達式只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達式,找到與之匹配的case語句,就從該case子句執(zhí)行下去,不再進行判斷,直到碰到bleak或函數(shù)結(jié)束為止。簡單地說,break是結(jié)束整個循環(huán)體,而continue是結(jié)束單次循環(huán)。B)選項中當產(chǎn)生的隨機數(shù)n為4時要執(zhí)行打印操作。C)選項中當產(chǎn)生的隨機數(shù)為1和2時分別執(zhí)行case3與case4后面語句的內(nèi)容。由于存在break語句,因此for循環(huán)不是固定執(zhí)行8次,執(zhí)行次數(shù)與產(chǎn)生的隨機數(shù)n有關系。故本題答案為A)。

78.C總體設計過程通常由兩個主要階段組成:系統(tǒng)設計,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構設計,確定軟件結(jié)構。為確定軟件結(jié)構,首先需要從實現(xiàn)角度把復雜的功能進~步分解。分析員結(jié)合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復雜,必須把它的功能適當?shù)胤纸獬梢幌盗斜容^簡單的功能。

79.A本題考查的知識點是:9etCharl函數(shù)和邏輯表達式的判定。題目要求“當讀人字母N時結(jié)束循環(huán)”,所WE)、D)選項不對;選項B)中,作為條件的表達式的值恒成立,不符合題目要求,故本題選A)。

80.B

81.(1)錯誤:r=P;

正確:r=t;

(2)錯誤:if(*r==0)

正確:if(*r==ˊ\0ˊ)

【解析】由于后面的語句控制變量r是指向字符串t的指針,而不是指向字符串str的指針,因此,“r=p;”應改為“r=t;”。while循環(huán)結(jié)束后,如果r指向字符串t的結(jié)束符,證

明字符串str中包含一個t字符串,因此,“if(*r=0)”應改為“if(*r==ˊ\0ˊ)”。

82.

【解析】矩陣與其逆置矩陣的關系為:逆置矩陣中某一位置上的元素值為原矩陣中,行下標與列下標互換后的位置上的元素。根據(jù)這個特點求出各個位置上逆置矩陣中對應的值,進行相加并放在該位置上。

2022年湖北省咸寧市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序段

#include<stdio.h>

voidfun(char*fname,char*st)

{FILE*myf;

inti;

myf=fopen(fname,"w");

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{fun("test.t","newworld");

fun("test.t","hello,");}

程序執(zhí)行后,文件test.t中的內(nèi)容是A.A.hello,

B.newworldhello,

C.newworld

D.hello,rld

2.如果某圖的鄰接矩陣是對角線元素均為零的上三角矩陣,則此圖是_______

A.有向完全圖B.連通圖C.強連通圖D.有向無環(huán)圖

3.有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序運行后的輸出結(jié)果是()。A.2.3.3B.2.3.2C.2.3.1D.2.2.1

4.在關系數(shù)據(jù)模型中,通??梢园?)稱為屬性,其值稱為屬性值。

A.記錄B.基本表C.模式D.字段

5.下列程序段輸出的字符串長度為()。printf("\\aaa\'ccc\bddd\'");

A.11B.12C.13D.17

6.設一組初始記錄關鍵字序列為(Q,H,C,Y,P,A,M,S,R,D,F,X),則按字母升序的第一趟冒泡排序結(jié)束后的結(jié)果是()

A.F,H,C,D,P,A,M,Q,R,S,Y,X

B.P,A,C,S,Q,D,F,X,R,H,M,Y

C.A,D,C,R,F,Q,M,S,Y,P,H,X

D.H,C,Q,P,A,M,S,R,D,F,X,Y

7.下列描述中正確的是______。A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術問題

8.

9.

10.在位運算中,操作數(shù)左移一位,其結(jié)果相當于A.A.操作數(shù)乘以2

B.操作數(shù)除以2

C.操作數(shù)除以4

D.操作數(shù)乘以4

11.

12.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數(shù)組a的每個元素的初值都是0

B.數(shù)組a的第一維大小為1

C.數(shù)組a的行數(shù)為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

13.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構不允許將多條語句寫在一行里

B.程序順序結(jié)構對于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個分號改成逗號,后面一個不變,則不能實現(xiàn)a和b值的交換

14.

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

#include<stdio.h>

main

{inta=0,i;

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

{switch(i)

{case0:

case3:a+=1;

case1;

case2:a+=2;

default:a+=3;

}

}

printf("%d",a);

}

A.19B.1C.6D.8

15.若變量已正確定義,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其輸出結(jié)果是()。A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7

16.下面程序的運行結(jié)果是

#include<stdio.h>

voiddelch(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!=′\n′;i++)

if(a[i]>=′0′&&a[i]<=′9′)

{s[j]=a[i];j++;}

s[j]=′\0′;}

main()

{char*item="a34bc";

delch(item);

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

A.abcB.34C.a34D.a34bc

17.設S為一個長度為n的字符串,其中的字符各不相同,則S中的互異的非平凡子串(非空且不同于S本身)的個數(shù)為()。

A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1

18.若d為double型變量,則表達式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

19.以下數(shù)據(jù)結(jié)構中,()是線性結(jié)構。

A.有向圖B.棧C.線索二叉樹D.B樹

20.有三個關系R、S和T如下:由關系R和S得到關系T的操作是()。A.自然連接B.交C.除D.并

二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

22.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。

23.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

24.下列程序執(zhí)行輸出的結(jié)果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

25.問題處理方案的正確而完整的描述稱為______。

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

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

27.下列程序的運行結(jié)果為【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

28.在關系運算中,查找滿足一定條件的元組的運算稱之為【】。

29.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

30.以下程序段用以統(tǒng)計鏈表中元素的個數(shù)。其中first指向鏈表第一個結(jié)點,count用來統(tǒng)計結(jié)點個數(shù)。請?zhí)羁铡?/p>

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

31.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

32.設順序輸入數(shù)列為:24,30,8,5,1,27,24,26,10,21,9,28,7,13,15。假定每個結(jié)點的查找概率相同,若用順序存儲方式組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】;若按二叉排序樹結(jié)構組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】。

33.若有如下結(jié)構體說明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

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

【】t[20]

34.函數(shù)pi的功能是根據(jù)以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

35.下面pi函數(shù)的功能是根據(jù)以下公式返回滿足精度要求的π的值。請根據(jù)以下算法要求補足所缺語句。

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(【】;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*【】);

}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

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

37.數(shù)據(jù)流圖的類型有【】和事務型。

38.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應該是:

2345678910。

請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++)

printf("%d%d",X--,y);

}

40.表達式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

三、1.選擇題(20題)41.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

42.下列敘述中正確的是A.break語句只能用于switch語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.在switch語句中,不一定使用break語句

43.下列程序的輸出結(jié)果是______。main(){union}inta[2];longk;charc[4];}un,*sp=&un;sp->a[0]=0x39;sp->a[1]=0x38;printf("%1x\n",sp->k);}

A.3938B.3839C.390038D.380039

44.設有以下定義或語句,則輸出的結(jié)果是(用small模式編譯,指針變量占2個字節(jié))()structdate{long*cat;structdate*next;doubledog;}too;printf("%d",sixeof(too));

A.20B.16C.14D.12

45.有下列函數(shù)定義:fun(floath){printf("%f,%f\n",h,h*h);}該函數(shù)的類型是()。

A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯

46.變量a已被定義為整型,下列表達式有錯的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

47.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()

A.每個元素都有一個直接前件和直接后件

B.線性表中至少要有一個元素

C.表中諸元素的排列順序必須是由小到大或由大到小

D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件

48.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

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

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.若有說明:int*p,m=5,n;以下正確的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

52.已定義以下函數(shù)

fun(int*p)

{return*p;}

該函數(shù)的返回值是()

A.不確定的值

B.形參p中存放的值

C.形參p所指存儲單元中的值

D.形參p的地址值

53.下列關于棧的描述正確的是()。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

54.閱讀下列程序,則執(zhí)行后的結(jié)果為#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

A.3e,6B.62,5C.56,5D.3E,6

55.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。

A.n-1B.nC.n+1D.2n

56.C語言中最簡單的數(shù)據(jù)類型包括()。

A.整型、實型、邏輯型B.整型、實型、字符型C.整型、字符型、邏輯型D.整型、實型、邏輯型、字符型

57.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d\n",a);}

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

58.有以下程序:intfun(intx[],intn){staticihtsum=O,i;for(i=O;i

A.45B.50C.60D.55

59.以下不正確的定義語句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

60.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A.可行性分析報告B.軟件需求規(guī)格說明書C.概要設計說明書D.集成測試計劃

四、選擇題(20題)61.第

34

若有如下語句

intx=3;

do{printf("%d\n",x-=2);}

while(!(--x));

則上面程序段

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

62.

63.

64.

有以下計算公式

若程序前面已在命令中包含math.h文件,不能夠正確

計算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

65.以下關于return語句的敘述中正確的是()。A.一個自定義函數(shù)中可以根據(jù)不同情況設置多條return語句

B.一個自定義函數(shù)中必須有一條return語句

C.定義成void類型的函數(shù)中可以有帶返回值的retum語句

D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處

66.下面程序的運行結(jié)果是()。

main

{

inty=5,x=14;y=((x=3*y,x+6),x-1);

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

}

A.x=27,y=27

B.x=12,y=13

C.x=15,y=14

D.x=y=27

67.下列程序的運行結(jié)果是()。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

68.有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf(“c,%d\n”,c1,c2);}已知字母A的ASCⅡ碼為65,程序運行后的輸出結(jié)果是()。A.E,68B.B,69C.E,DD.輸出無定值

69.

70.有以下程序:

#include<stdi0.h>

main()

{inta=1,b=2;

for(;a<8;a++){b+=a;a+=2;)

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

}

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

A.9,18

B.8,11

C.7,11

D.10,14

71.有以下程序程序運行后的輸出結(jié)果是()

A.一20B.一l2C.0D.10

72.

73.

有以下程序

#include<stdi0.h>

main

{FILE*fp;inta[0]一{1,2,3,0,0},i;

fp=fopen("d2.dat,"wb");

fwrite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a.sizeof(int),10,fp);

fclose(fp);

for(i=0;i<10;i++)printft("%d",a[i]);

}

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

A.1,2,3,0,0,o,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

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

A.函數(shù)的返回值類型不能是結(jié)構體類型,只能是簡單類型

B.函數(shù)可以返回指向結(jié)構體變量的指針

C.可以通過指向結(jié)構體變量的指針訪問所指結(jié)構體變量的任何成員

D.只要類型相同,結(jié)構體變量之間可以整體賦值

75.下列選項中,不屬于模塊間耦合的是()。A.數(shù)據(jù)耦合B.標記耦合C.異構耦合D.公共耦合

76.設有關系R和S,關系代數(shù)表達式為R一(R—S)表示的是()。

A.R∩SB.R—SC.RUSD.R÷S

77.有以下程序段以下關于程序段執(zhí)行情況的敘述,正確的是()。

A.當產(chǎn)生的隨機數(shù)n為0時,結(jié)束程序運行

B.當產(chǎn)生的隨機數(shù)n為4時,結(jié)束循環(huán)操作

C.當產(chǎn)生的隨機數(shù)n為l和2時,不做任何操作

D.細循環(huán)語句固定執(zhí)行8次

78.在結(jié)構化方法中,軟件功能分別屬于下列軟件開發(fā)中的(

)階段。A.詳細設計B.需求分析C.總體設計D.編程調(diào)試

79.要求通過while循環(huán)不斷讀人字符,當讀入字母N時結(jié)束循環(huán)。若變量已正確定義,以下正確的程序段是

()。

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算str所指字符串中含有t所指字符串的數(shù)目,并作為函數(shù)值返回。

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

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

試題程序:

六、程序設計題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:實現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。

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

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

試題程序:

參考答案

1.D本題主要考查文件的操作。在本題的程序中,首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個指針類型的形參,其中第一個形參指向需要被操作文件的文件名,而第二個形參指向被操作的字符串。在函數(shù)體中,首先定義一個文件指針,然后以只寫的方式打開第一個形參所指向的

溫馨提示

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

最新文檔

評論

0/150

提交評論