2021年吉林省遼源市全國計算機等級考試C語言程序設(shè)計_第1頁
2021年吉林省遼源市全國計算機等級考試C語言程序設(shè)計_第2頁
2021年吉林省遼源市全國計算機等級考試C語言程序設(shè)計_第3頁
2021年吉林省遼源市全國計算機等級考試C語言程序設(shè)計_第4頁
2021年吉林省遼源市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年吉林省遼源市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.算法分析的目的是()。

A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.研究算法中的輸入和輸出的關(guān)系C.分析算法的效率以求改進D.分析算法的易讀性和文檔性

2.一個無向連連通圖的生成樹是含有該連通圖的全部項點的_______。

A.極小連通子圖B.極小子圖C.極大連通子圖D.極大子圖

3.下列不正確的轉(zhuǎn)義字符是()。

A.'\\'B.'\t'C.'\n'D.'088'

4.程序中已構(gòu)成如下不帶頭節(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表節(jié)點,指針變量s總是作為指針指向鏈表的第1個節(jié)點。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;該程序段實現(xiàn)的功能是()。

A.刪除尾節(jié)點B.使尾節(jié)點成為首節(jié)點C.刪除首節(jié)點D.使首節(jié)點成為尾節(jié)點

5.面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系

B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念

C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題

D.不強調(diào)模擬現(xiàn)實世界中的算法而強調(diào)概念

6.在C語言中,函數(shù)隱含的類型是()

A.autoB.staticC.intD.void

7.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

8.字符組a[20]和b[20],下面正確的輸出語句是()。A.put(a,b)

B.prinf(“%s,%s”,a[],b[])

C.putchar(a,b)

D.puts(a);puts(b)

9.帶有頭節(jié)點的單向鏈表head,其3個數(shù)據(jù)節(jié)點A、B、C的連接關(guān)系如下圖所示:節(jié)點類型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點,在不改變P指向的前提下,以下選項中不能訪問C節(jié)點數(shù)據(jù)成員dt的表達式是()。A.*(*p).next->next->dt

B.p->next->next->dt

C.(*(*(*p).next).next).dt

D.(*(p->next->next)).dt

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

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

11.

12.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

13.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

14.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A.10B.8C.6D.4

15.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

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

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

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

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

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

17.函數(shù)調(diào)用:strcat(strcpy(str1,str2),str3)的功能是______。

A.將串str1復(fù)制到串str2中后再連接到串str3之后

B.將串str1連接到串str2之后再復(fù)制到串str3之后

C.將串str2復(fù)制到串str1中后再將串sir3連接到串str1之后

D.將串str2連接到串str1之后再將串str1復(fù)制到串str3中

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

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

19.有以下程序voidss(char*s,chart){while{*s)if(*s==t)*s-t-'a'+'A';S++;main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

20.

二、2.填空題(20題)21.以下和程序中,主函數(shù)調(diào)用了lineMax函數(shù),實現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值,請?zhí)羁铡?/p>

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

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

if(x[i][p]<x[i][j]【】;

printf("Themaxvalueinlineis%d\n",【】);

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

22.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。

23.以下程序段的輸出結(jié)果是【】。

inta=1234;

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

24.以下程序運行后的輸出結(jié)果是【】。

main()

{chara[]="Language",b[]="Pragrame";

char*p1,*p2;intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k));

}

25.性結(jié)構(gòu)中,第一個結(jié)點沒有前驅(qū)結(jié)點,其余每個結(jié)點有且只有【】個前驅(qū)結(jié)點;最后一個結(jié)點沒有后繼結(jié)點,其余每個結(jié)點有且只有【】個后繼結(jié)點。

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

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

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是: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");

}

27.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

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

28.已有文本文件test.txt,其中的內(nèi)容為:Hello,everyone!。以下程序中,文件test.txt已正確為“讀”而打開,由此文件指針fr指向該文件,則程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{FILE*fr;charstr[40];

fgets(str,5,fr);

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

felose(fr);

}

29.若fp已正確定義為—‘個文件指針,d1.dd為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:fp=fopen(______);。

30.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。

31.設(shè)有如下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序運行后,如果從鍵盤上輸入1298,貝愉出結(jié)果為【】。

32.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

33.結(jié)構(gòu)化分析方法是面向______進行分析的方法。

34.在ER圖中,矩形表示【】。

35.棧中允許進行插入和刪除的一端叫做______。

36.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(int(*fl)(),int(*f2)(),intx}

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運行后,輸出結(jié)果是【】。

37.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。

38.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

39.在程序設(shè)計階段應(yīng)該采取______和逐步求精的方法,把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,繼而用某種程序設(shè)計語言寫成程序。

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

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

三、1.選擇題(20題)41.下列敘述中正確的是A.線性表是線性結(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.線性鏈表是非線性結(jié)構(gòu)D.二叉樹是線性結(jié)構(gòu)

42.軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成()

A.定義、開發(fā)、運行維護

B.設(shè)計階段、編程階段、測試階段

C.總體設(shè)計、詳細(xì)設(shè)計、編程調(diào)試

D.需求分析、功能定義、系統(tǒng)設(shè)計

43.若輸入"Iamaboy!",下列程序的運行結(jié)果為______。charconnect(string1,string2,string)charstring1[],string2[],string[];{inti,j;for(i=0;stringl[i]!='\0';i++)string[i]=stringl[i];for(j=0;string2[j]!='\0';j++)string[i+j]=string2[j];string[i+j]='\0';}main(){chars1[100],s2[100],s[100];printf("\n輸入string1:\n");scanf("%s",s1);printf("\n輸入string2:\n");scanf("%s",s2);connect(s1,s2,s);printf("%s\n",s);}

A.Iamaboy!B.輸入string2:C.IamD.Iamaboy!

44.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出比中的值為大寫字母的表達式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

45.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是

A.data的每個成員起始地址都相同

B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實參

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

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

47.以下程序調(diào)用findmax函數(shù)求數(shù)組中值最大的元素在數(shù)組中的下標(biāo),請選擇填空:#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])________;}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("%d,%d\n",k,a[k]);}

A.k=pB.*k=p-sC.k=p-sD.*k=p

48.有以下程序段typedefstructNODE{intnum;structNODE*next;}OLD;以下敘述中正確的是

A.以上的說朗形式非法B.NODE是一個結(jié)構(gòu)體類型C.OLD是一個結(jié)構(gòu)體類型D.OLD是一個結(jié)構(gòu)體變量

49.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。下列不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是()。

A.c=(c-'A')%26+'a'

B.c=c+32

C.c=C-'A'+'a'

D.c=('A'+C)%26-'a'

50.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。

A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯

51.下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);

D.intmax(intx,inty){return(x>y?x:y);}

52.設(shè)intx=7,則~x的值是()。

A.-8B.-7C.-1D.1

53.下列程序的運行結(jié)果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}

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

54.下列不屬于軟件調(diào)試技術(shù)的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法

55.在位運算中,操作數(shù)每右移兩位,其結(jié)果相當(dāng)于()。

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

56.C語言的基本單位是()。

A.函數(shù)B.過程C.子程序D.子函數(shù)

57.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

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

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

58.若有以下說明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;則數(shù)值為4的表達式是()

A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]

59.若有下列說明和語句,已知int型數(shù)據(jù)占2個字節(jié),則下列語句的輸出結(jié)果是()。

stmctst

{chara[15];

intb;

doublec;

};

printf("%d",sizeof(structst));

A.15B.8C.25D.2

60.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個元組就是一個字段

D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

四、選擇題(20題)61.有以下程序函數(shù)fun只對下標(biāo)為偶數(shù)的元素進行操作.:

程序運行后的輸出結(jié)果是()。A.A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

62.

63.

64.軟件生命周期中的活動不包括()

A.軟件維護B.市場調(diào)研C.軟件測試D.需求分析

65.

66.

67.

68.有以下程序:

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

A.ABEFB.CDEFC.ABCDD.CDAB

69.函數(shù)fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當(dāng)前位置D.以上都不對

70.有以下程序:

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

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

71.非空的循環(huán)單鏈表head的尾結(jié)點(由p所指向)應(yīng)該滿足

A.p->next==NULLB.p==NULLC.p->next=headD.p=head

72.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

73.閱讀以下程序:

該程序在編譯時產(chǎn)生錯誤,原因是()。

A.定義語句出錯,Case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符

B.定義語句出錯,printF不能用作用戶自定義標(biāo)識符

C.定義語句無錯,sCanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出Case的值

74.以下說法錯誤的是A.A.高級語言都是用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達形式

B.計算機只能處理由0和1的代碼構(gòu)成的二進制指令或數(shù)據(jù)

C.C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.EXE的二進制文件

D.每一種高級語言都有它對應(yīng)的編譯程序

75.

76.

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

#defineM(x,y,z)x*y+z

main()

{inta=l,b=2,c=3;

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

}

A.19B.17C.15D.12

77.

78.設(shè)j為Int型變量,則下面for循環(huán)語句的執(zhí)行結(jié)果是()。

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.63B.74C.62D.73

79.

80.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.三個階段相同

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從m個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如輸入8名學(xué)生的成績:987867563489.578.576.5則低于平均分的學(xué)生人數(shù)為3(平均分為72.187500)。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和+號。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和尾部的母號外,將其他的*號全部刪除。形參h已指向字符串中第一個字母,形參P指向字符串中最后一個字母。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。

參考答案

1.C

2.A

3.D解析:'\\\\'是反斜線轉(zhuǎn)義字符:'\\t'是水平跳格轉(zhuǎn)義字符:'\\n'是換行轉(zhuǎn)義字符;C語言中沒有規(guī)定'088'為轉(zhuǎn)義字符。

4.D程序中,指針s指向了它的下一個節(jié)點。題目中說明了s總是指向鏈表的第1個節(jié)點。然后while循環(huán)找到鏈表的最后一個元素,最后一個元素指向了之前鏈表的頭節(jié)點,之前頭節(jié)點指向了空節(jié)點。所以本題實現(xiàn)的是使首節(jié)點成為尾節(jié)點。故本題答案為D選項。

5.C\n面向?qū)ο蟮脑O(shè)計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應(yīng)用領(lǐng)域的概念角度去思考。

\n

6.C

7.A通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。

8.D難易程度:中

9.Alink結(jié)構(gòu)體中的next是鏈表中下一個節(jié)點的地址。由于p當(dāng)前指向節(jié)點A,因此p->next是B的地址。p->next->next是C的地址,訪問C的節(jié)點數(shù)據(jù)成員dt可以使用C的地址訪問,即p->next->next->dt,選項B正確。或者使用解引用“*”運算符:(*p)表示節(jié)點A,(*p).next表示B的地址,*((*p).next)表示節(jié)點B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示節(jié)點C,所以C的數(shù)據(jù)成員dt可以表示為(*((*(*p).next).next)).dt,因為“.”運算符優(yōu)先級高于“*”運算符,所以也可以寫為(*(*(*p).next).next).dt,選項C正確。同理,也可以既使用指針運算符,又使用解引用運算符來訪問C的節(jié)點數(shù)據(jù)成員dt,即(*(p->next->next)).dt,選項D正確。選項A中,*p表示A節(jié)點,(*p).next表示節(jié)點B的地址,由于“->”運算符的優(yōu)先級高于“*”運算符,因此先執(zhí)行“->”,即表達式(*p).next->next->dt引用了C節(jié)點的數(shù)據(jù)成員dt,然后再執(zhí)行解引用運算“*”,這是錯誤的。故本題答案為A選項。

10.D

11.A

12.D解析:文件狀態(tài)檢測函數(shù)feof(fp)的功能是:測試所指的文件的位置指針是否已達到文件尾,如果已到達文件尾,則函數(shù)返回非。值;否則返回0,表示文件尚未結(jié)束。

13.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管Y的類型是float.x的類型是double,但是因為函數(shù)定義時沒有指定類型說明,系統(tǒng)默認(rèn)函數(shù)值的類型為int型,所以計算后Y的類型是int型。

14.C根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。

15.C本題考查的是指向函數(shù)的指針。函數(shù)指針定義的基本格式為:類型標(biāo)識符(*指針變量名)()。“類型標(biāo)識符”為函數(shù)返回值的類型。

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

17.C解析:題目中所給函數(shù)的功能是;先用函數(shù)strcpy把參數(shù)串str2復(fù)制到參數(shù)串str1中去,然后用函數(shù)strcat把參數(shù)串str3連接到經(jīng)過修改后的參數(shù)串str1后,因此選項C正確。

18.B解析:指針變量p指向數(shù)組a的第5個元素,p[3]在原指向基礎(chǔ)上移3個單位,指針變量p將指向第8個元素(下標(biāo)為7的元素),值為7。

19.B解析:本題中的函數(shù)ss()有兩個參數(shù),一個是字符型指針變量s,另一個是字符型變量t在函數(shù)中通過一個while循環(huán),在循環(huán)中一次取出s指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“s=t-'a'+'A':”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(strl,c),很顯然是把str1數(shù)組中所有字符“d”變成大寫字母,其他字符不變。所以4個選項中B正確。

20.A

21.p=jx[i][p]lineMax(x)

22.軟件工具軟件工具

23.12341234解析:在%與格式符之間插入一個整型數(shù)來指定輸出寬度,當(dāng)指定寬度小于輸出數(shù)的實際寬度時,則按實際寬度輸出。

24.gaegae解析:主函數(shù)中定義了字符數(shù)組a和b,其初值分別為Language和Programe,然后定義了兩個指針變量p1和p2,并讓它們指向a和b。通過分析可知下面的for循環(huán)中,每循環(huán)一次就將p1+k和p2+k所指向的字符進行比較,如果相等,輸出該字符,循環(huán)共執(zhí)行8次,顯然Language和Programe中只有字符gae相等,所以最后轄出為gae。

25.11

26.!=returnj!=returnj解析:函數(shù)fun中,變量j用于控制刪除后剩下的數(shù)中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標(biāo),所以訂語句中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,a[i]要添加到新數(shù)組中。該算法只能用于數(shù)組已排序的題目中。

27.k<=nk++k<=n,k++解析:本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句'k++;'\ue009。

28.HellHell解析:文件的字符串讀寫函數(shù)fgets()有3個參數(shù),第三個參數(shù)是文件指針指向要讀取數(shù)據(jù)的文件,第二個參數(shù)是一個整數(shù)(假設(shè)為n),表示從文件中讀取n-1個字符并在其后加一個'0',第一個參數(shù)為存放讀取的字符串的內(nèi)存區(qū)的起始地址,讀取得數(shù)據(jù)保存在其中。可見本題的輸出結(jié)果為:Hell。

29.d1.dat""rb"或"d1.dat""r+b”或"d1.dat""rb+"d1.dat','rb'或'd1.dat','r+b”或'd1.dat','rb+'解析:本題考查的知識點是二進制文件的打開方式。打開文件的函數(shù)為fopen('文件名''mode'),其中'mode'表示文件的打開方式.如果打開的是二進制文件,其mode字符串可以是:'rb''wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已有在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件.'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進行追加.當(dāng)文件不存在,將創(chuàng)建新文件。'r='打開一個已有在文件用于更新(可讀可寫)。'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當(dāng)文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據(jù)題意,應(yīng)該填'd1.dat','rb'或其他等價的表達法。

30.方法方法解析:在面向?qū)ο蠓椒ㄖ?,方法是指允許作用于某個對象上的各種操作。

31.89218921解析:本題的程序的功能是將輸入的整數(shù)反向輸出。

32.封裝性封裝性解析:對象具有下列5個基本特點:①標(biāo)識惟一性;②分類性:③多態(tài)性;④封裝性;⑤模塊獨立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實行和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。

33.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

34.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。

35.棧頂棧頂解析:棧是限定在表的一端進行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

36.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的齜23-22=4。

37.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。

38.structnode*structnode*解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應(yīng)填:structnode*。即定義一個指向自身的結(jié)構(gòu)體指針。

39.自頂向下自頂向下解析:在程序設(shè)計時,應(yīng)先考慮總體,后考慮細(xì)節(jié),逐步使問題具體化,對復(fù)雜的問題,應(yīng)該設(shè)計一些子目標(biāo)作為過渡,上述方法概括為:自頂向下,逐步細(xì)化。

40.246

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

42.A解析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。它可以分為軟件定義、軟件開發(fā)及軟件運行維護3個階段。

43.C

44.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在't',和'z'之間就可以了,選項A)和C)符合要求。函數(shù)isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。

45.D解析:選項A),共用體的每個成員的起始地址都相同;選項B),共用體變量所占的內(nèi)存長度等于最長的成員的長度;選項C)因為每個成員的起始地址相同,所以整型數(shù)5以浮點型輸出時為5.000000;選項D)C語言規(guī)定,不能把共用體變量作為函數(shù)的參數(shù)。

46.A解析:本題主要考查按位與運算,x=011050的二進制形式為0001001000101000,01252的二進制形式為0000001010101010,兩者相與得00000010001010000。

47.D解析:k是—個指針,它的值是—個地址,要通過它為主函數(shù)的變量改變數(shù)據(jù),必須使用*p,邊樣就可以把—個下標(biāo)數(shù)賦給p指針指向的那個內(nèi)存單元,所以橫線處應(yīng)填入*k=p。

48.C解析:將題目中的定義語句去掉前面的typedef和后面的OLD(分號保留),就是一條完整的結(jié)構(gòu)體定義語句,其中struct是說明符,NODE是結(jié)構(gòu)體名,大括號里面的是結(jié)構(gòu)體成員的定義.此時要聲明該結(jié)構(gòu)體變量時需要使用struct加結(jié)構(gòu)體名一起來聲明,structNODE一起構(gòu)成一個結(jié)構(gòu)體類型,就好像字符類型char。若只去掉前面的typedef,就是一條結(jié)構(gòu)體定義同時聲明一個結(jié)構(gòu)體變量OLD的語句,因為OLD的前面部分是structNODE的完整寫法,可以看作是structNODE。C語言允許用typcdcf說明一種新類型名,其語法格式為:

typedef類型名標(biāo)識符;

以后就可以用該標(biāo)識符來代替被說明的類型名了。因此,當(dāng)前面存在typedef時,該語句就變成7給structNODE的完整寫法定義一個新的名稱OLD。所以,此時的OLD是一個結(jié)構(gòu)體類型,它相當(dāng)于structNODE,即可以和char一樣單獨用來聲明該結(jié)構(gòu)體變量,而NODE只是一個結(jié)構(gòu)體名,不能單獨用來聲明變量。所以,4個選項中C符合題意.

49.D解析:由題意可知,小寫字符a和大寫字符A的ASCII代碼相差為32,所以選項C)能將大寫字符c的ASCII代碼轉(zhuǎn)換為小寫字符c的ASCⅡ代碼;選項A)和C)左側(cè)的表達式都是大寫字符c與大寫字符A的差與'a'的ASCII代碼的和就是小寫字符c的ASCII代碼。而選項D)中應(yīng)該是加上'a',而不是減去'a'。

50.D解析:因為字符數(shù)組s1)中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當(dāng)前位置的基礎(chǔ)上再向后移動兩位,因而程序編譯時出錯。

51.B解析:本題考核的知識點是函數(shù)的定義方法。選項B中在說明形參時,省略了第二個參數(shù)的類型,故選項B編譯不能通過。所以,4個選項中選項B符合題意。

52.A解析:本題主要考查按位求反運算和C語言中正負(fù)數(shù)的表示,“0”代表正數(shù),“1”代表負(fù)數(shù);x=7的二進制為00111,第一個0代表正數(shù),~x為11000,第一個1代表負(fù)數(shù),值為8。

53.D解析:if...else語句的執(zhí)行過程如下,首先計算if后面一對圓括號內(nèi)表達式的值,若表達式的值為非0,執(zhí)行if子句,然后跳過else子句,去執(zhí)行if語句后的下一條語句;若表達式的值為0,跳過if子句,去執(zhí)行else子句,接著去執(zhí)行if語句后的下一條語句。C語言的語法規(guī)定,else子句總是與前面最近的不帶else的if匹配,與書寫格式無關(guān),本題目的后一個ifelse相當(dāng)于嵌套在第一個if子句里,相當(dāng)于x<y&&y<0時,z=0;當(dāng)x<y&&y>=0時,z=z+1。

54.B解析:我們嚴(yán)格區(qū)分調(diào)試與測試,調(diào)試是已知有錯誤而來找錯誤,是被動的;測試有很多種,比如未發(fā)現(xiàn)錯誤但不能保證程序沒錯而來找BUG,還比如我們運行測試程序是否符合用戶的要求,是主動的。所以答案是選項B。A、C、D都是具體的程序調(diào)試方法,而B是宏觀的程序測試方法。測試有單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試。比如我們在進行單元測試時,發(fā)現(xiàn)程序有錯誤,我們再可以根據(jù)A、C、D的方法來找錯誤。

55.C解析:在位運算中,操作數(shù)每右移兩位,相當(dāng)于在操作數(shù)的左側(cè)添0,最右面的兩位被移出,即操作數(shù)除以4。

56.AA。【解析】C語言是函數(shù)式的語言。它的基本組成單位是函數(shù),在C語言中任何程序都是由一個或者多個函數(shù)組成的。

57.B解析:在main函數(shù)中,對f(1)和f(2)的值進行了累加。

f(1)=1

f(2)=f(1)+1=2

最后,j的值為1+2=3

58.D

59.C解析:本題主要考查結(jié)構(gòu)體的內(nèi)存使用:對結(jié)構(gòu)體而言,結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立。題中intb占2個字節(jié),chara[15]占15個字節(jié),doublec占8個字節(jié),所以共25個字節(jié)。

60.D數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤。數(shù)據(jù)的物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變,不會影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項B敘述錯誤。關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故選項C敘述錯誤。所以本題選D。

61.A由函數(shù)fun(int*a,intn)中語句if(a[j]>a[k])k=j;可知當(dāng)前k是記錄數(shù)組中較大數(shù)據(jù)值所在位置的下標(biāo)變量,所以該函數(shù)的作用是對數(shù)組a中的下標(biāo)為偶數(shù)位置的數(shù)據(jù)進行從大到小的排序,即對a[0],a[2],a[4],a[6]中的數(shù)據(jù)1,3,5,7進行從大到小的排序,其他位置的數(shù)據(jù)不變,所以答案為A)。

62.C

63.A

64.B【答案】:B

【知識點】:軟件生命周期

【解析】:一個軟件產(chǎn)品或軟件系統(tǒng)要經(jīng)歷孕育、誕生、成長、成熟、衰亡等階段,一般稱為軟件生命周期。它把整個軟件生存周期劃分為若干階段,使得每個階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。通常,軟件生存周期包括可行性分析與開發(fā)項計劃、需求分析、設(shè)計(概要設(shè)計和詳細(xì)設(shè)計)、編碼、測試、維護等活動,可以將這些活動以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段去完成。故選B。

65.A

66.C

67.A

68.B本題考察的是變量的作甩范圍。如果在同一個源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量被“屏蔽”,即不起作用:奉題中,在funl()和main()函數(shù)內(nèi)訪問的是全局變量a和b,在fun2()函數(shù)中訪問的是形參變量a和b。所以,main()函數(shù)中的prinff()函數(shù)輸出的是在funl()函數(shù)中被改變的全局變量a和b的值C、D,而fun2()函數(shù)中輸出的是傳遞給它的實參值E、F。因此B選項正確。

69.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的開始,SEEK_CUR代表的是文件當(dāng)前位置。

70.C內(nèi)部靜態(tài)變量是始終存在的,當(dāng)函數(shù)被調(diào)用退出后,內(nèi)部靜態(tài)變量會保存數(shù)據(jù),再次調(diào)用該函數(shù)時,以前調(diào)用時的數(shù)值仍然保留著。Fun(a,5)的值是l5,再次調(diào)用后slim=15,所以Fun(b,4)=45,s=45+15=60。

71.C循環(huán)鏈表是一種鏈?zhǔn)酱鎯Y(jié)構(gòu)。它的特點是表中最后一個結(jié)點的指針域指向頭結(jié)點,整個鏈表形成一個環(huán)。循環(huán)鏈表的操作和線性鏈表基本一致,差別僅在于算法中的循環(huán)條件不是p或p->next是否為空,而是它們是否等于頭指針。選項A是線性鏈表尾結(jié)點滿足的條件。

72.A本題重點考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCIl碼。例如A為65,a為97。即字母+1劂可得到下一個字母。-其次是函數(shù)形參和實參的問題,運行過程如下:在fun(&b,a)中,}c=.a(chǎn)-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);輸出b,B,因為指針c指向地址的值為b,此時b=}C=.b.;豳數(shù)返回執(zhí)行ptud(。%C,%c、n”,b,8);輸出b,A,因此A選項正確。

73.A標(biāo)識符不能與c編譯系統(tǒng)已經(jīng)預(yù)定義的、具有特殊用途的保留標(biāo)識符(即關(guān)鍵字)同名,否則程序在編譯時會出現(xiàn)錯誤。題目源程序中使用了已經(jīng)預(yù)定義的關(guān)鍵字case,所以將出現(xiàn)錯誤。

74.C本題主要考查我們對C語言一些基礎(chǔ)知識的掌握情況。下面分別分析本題的四個選項。

由于高級程序設(shè)計語言具有可讀寫、可理解性好等特點,這就要求高級程序設(shè)計語言用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達形式,選項A的說法正確。

在計算機中,機器可以接受和處理的只能是由0和1組成的二進制代碼,用高級語言編寫的程序都需要經(jīng)過編譯和連接,使其轉(zhuǎn)化為二進制代碼才能被機器執(zhí)行。因此,選項B的說法正確。

C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進制文件(稱為目標(biāo)文件);最后要由“連接程序”把此.OBJ文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。因此,選項C的說法不正確。

由于高級語言編寫的程序都需要經(jīng)過編譯和連接,才能被計算機執(zhí)行,因此,每一種高級語言都有它對應(yīng)的編譯程序,D選項的說法正確。

75.C

76.D

\nM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。

\n

77.D

78.B當(dāng)j=10時,for循環(huán)成立,j%3為1,if條件也為真,當(dāng)執(zhí)行完j--后,j為9,再執(zhí)行“--j;--J;”后,j的值為7,因此輸出7,繼續(xù)循環(huán)執(zhí)行j--后j為6,當(dāng)j=6時for循環(huán)成立,j%3為0,if條件為假,此時執(zhí)行“--j;--j;”后,j為4,輸出4,再繼續(xù)循環(huán)執(zhí)行j--后j為3,當(dāng)j=3時,for循環(huán)不成立,退出循環(huán),故選擇8選項。

79.C

80.C數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強物理性少,在各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導(dǎo)地位,所以選擇C)。

81.(1)錯誤:t=<[3];

正確:t+=s[k];

(2)錯誤:*aver=&ave;

正確:*aver=ave;

【解析】由函數(shù)proe()可知,變量t中存放所有學(xué)生成績之和。因此,“t=s[k];”應(yīng)改為“t+=s[k];”。題目中要求將學(xué)生的平均成績由形參aver返回主函數(shù)中,因此,“*aver=&ave;”應(yīng)改為“*aver=ave;”。

82.2021年吉林省遼源市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.算法分析的目的是()。

A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.研究算法中的輸入和輸出的關(guān)系C.分析算法的效率以求改進D.分析算法的易讀性和文檔性

2.一個無向連連通圖的生成樹是含有該連通圖的全部項點的_______。

A.極小連通子圖B.極小子圖C.極大連通子圖D.極大子圖

3.下列不正確的轉(zhuǎn)義字符是()。

A.'\\'B.'\t'C.'\n'D.'088'

4.程序中已構(gòu)成如下不帶頭節(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表節(jié)點,指針變量s總是作為指針指向鏈表的第1個節(jié)點。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;該程序段實現(xiàn)的功能是()。

A.刪除尾節(jié)點B.使尾節(jié)點成為首節(jié)點C.刪除首節(jié)點D.使首節(jié)點成為尾節(jié)點

5.面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系

B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念

C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題

D.不強調(diào)模擬現(xiàn)實世界中的算法而強調(diào)概念

6.在C語言中,函數(shù)隱含的類型是()

A.autoB.staticC.intD.void

7.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

8.字符組a[20]和b[20],下面正確的輸出語句是()。A.put(a,b)

B.prinf(“%s,%s”,a[],b[])

C.putchar(a,b)

D.puts(a);puts(b)

9.帶有頭節(jié)點的單向鏈表head,其3個數(shù)據(jù)節(jié)點A、B、C的連接關(guān)系如下圖所示:節(jié)點類型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點,在不改變P指向的前提下,以下選項中不能訪問C節(jié)點數(shù)據(jù)成員dt的表達式是()。A.*(*p).next->next->dt

B.p->next->next->dt

C.(*(*(*p).next).next).dt

D.(*(p->next->next)).dt

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

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

11.

12.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

13.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

14.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A.10B.8C.6D.4

15.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

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

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

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

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

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

17.函數(shù)調(diào)用:strcat(strcpy(str1,str2),str3)的功能是______。

A.將串str1復(fù)制到串str2中后再連接到串str3之后

B.將串str1連接到串str2之后再復(fù)制到串str3之后

C.將串str2復(fù)制到串str1中后再將串sir3連接到串str1之后

D.將串str2連接到串str1之后再將串str1復(fù)制到串str3中

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

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

19.有以下程序voidss(char*s,chart){while{*s)if(*s==t)*s-t-'a'+'A';S++;main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

20.

二、2.填空題(20題)21.以下和程序中,主函數(shù)調(diào)用了lineMax函數(shù),實現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值,請?zhí)羁铡?/p>

#defineN3

#defineM4

voidlineMax(intx[N][M])

{inti,j,p;

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

{p=0;

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

if(x[i][p]<x[i][j]【】;

printf("Themaxvalueinlineis%d\n",【】);

}

{

main()

{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};

【】;

}

22.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。

23.以下程序段的輸出結(jié)果是【】。

inta=1234;

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

24.以下程序運行后的輸出結(jié)果是【】。

main()

{chara[]="Language",b[]="Pragrame";

char*p1,*p2;intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k));

}

25.性結(jié)構(gòu)中,第一個結(jié)點沒有前驅(qū)結(jié)點,其余每個結(jié)點有且只有【】個前驅(qū)結(jié)點;最后一個結(jié)點沒有后繼結(jié)點,其余每個結(jié)點有且只有【】個后繼結(jié)點。

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

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

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是: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");

}

27.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

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

28.已有文本文件test.txt,其中的內(nèi)容為:Hello,everyone!。以下程序中,文件test.txt已正確為“讀”而打開,由此文件指針fr指向該文件,則程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{FILE*fr;charstr[40];

fgets(str,5,fr);

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

felose(fr);

}

29.若fp已正確定義為—‘個文件指針,d1.dd為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:fp=fopen(______);。

30.在面向?qū)ο蠓椒ㄖ?,允許作用于某個對象上的操作稱為【】。

31.設(shè)有如下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序運行后,如果從鍵盤上輸入1298,貝愉出結(jié)果為【】。

32.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

33.結(jié)構(gòu)化分析方法是面向______進行分析的方法。

34.在ER圖中,矩形表示【】。

35.棧中允許進行插入和刪除的一端叫做______。

36.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(int(*fl)(),int(*f2)(),intx}

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運行后,輸出結(jié)果是【】。

37.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。

38.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

39.在程序設(shè)計階段應(yīng)該采取______和逐步求精的方法,把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,繼而用某種程序設(shè)計語言寫成程序。

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

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

三、1.選擇題(20題)41.下列敘述中正確的是A.線性表是線性結(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.線性鏈表是非線性結(jié)構(gòu)D.二叉樹是線性結(jié)構(gòu)

42.軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成()

A.定義、開發(fā)、運行維護

B.設(shè)計階段、編程階段、測試階段

C.總體設(shè)計、詳細(xì)設(shè)計、編程調(diào)試

D.需求分析、功能定義、系統(tǒng)設(shè)計

43.若輸入"Iamaboy!",下列程序的運行結(jié)果為______。charconnect(string1,string2,string)charstring1[],string2[],string[];{inti,j;for(i=0;stringl[i]!='\0';i++)string[i]=stringl[i];for(j=0;string2[j]!='\0';j++)string[i+j]=string2[j];string[i+j]='\0';}main(){chars1[100],s2[100],s[100];printf("\n輸入string1:\n");scanf("%s",s1);printf("\n輸入string2:\n");scanf("%s",s2);connect(s1,s2,s);printf("%s\n",s);}

A.Iamaboy!B.輸入string2:C.IamD.Iamaboy!

44.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出比中的值為大寫字母的表達式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

45.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是

A.data的每個成員起始地址都相同

B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實參

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

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

47.以下程序調(diào)用findmax函數(shù)求數(shù)組中值最大的元素在數(shù)組中的下標(biāo),請選擇填空:#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])________;}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("%d,%d\n",k,a[k]);}

A.k=pB.*k=p-sC.k=p-sD.*k=p

48.有以下程序段typedefstructNODE{intnum;structNODE*next;}OLD;以下敘述中正確的是

A.以上的說朗形式非法B.NODE是一個結(jié)構(gòu)體類型C.OLD是一個結(jié)構(gòu)體類型D.OLD是一個結(jié)構(gòu)體變量

49.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。下列不能將變量c中的大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是()。

A.c=(c-'A')%26+'a'

B.c=c+32

C.c=C-'A'+'a'

D.c=('A'+C)%26-'a'

50.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。

A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯

51.下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);

D.intmax(intx,inty){return(x>y?x:y);}

52.設(shè)intx=7,則~x的值是()。

A.-8B.-7C.-1D.1

53.下列程序的運行結(jié)果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}

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

54.下列不屬于軟件調(diào)試技術(shù)的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法

55.在位運算中,操作數(shù)每右移兩位,其結(jié)果相當(dāng)于()。

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

56.C語言的基本單位是()。

A.函數(shù)B.過程C.子程序D.子函數(shù)

57.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

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

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

58.若有以下說明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;則數(shù)值為4的表達式是()

A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]

59.若有下列說明和語句,已知int型數(shù)據(jù)占2個字節(jié),則下列語句的輸出結(jié)果是()。

stmctst

{chara[15];

intb;

doublec;

};

printf("%d",sizeof(structst));

A.15B.8C.25D.2

60.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程

B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變

C.關(guān)系中的每一列稱為元組,一個元組就是一個字段

D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字

四、選擇題(20題)61.有以下程序函數(shù)fun只對下標(biāo)為偶數(shù)的元素進行操作.:

程序運行后的輸出結(jié)果是()。A.A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

62.

63.

64.軟件生命周期中的活動不包括()

A.軟件維護B.市場調(diào)研C.軟件測試D.需求分析

65.

66.

67.

68.有以下程序:

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

A.ABEFB.CDEFC.ABCDD.CDAB

69.函數(shù)fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當(dāng)前位置D.以上都不對

70.有以下程序:

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

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

71.非空的循環(huán)單鏈表head的尾結(jié)點(由p所指向)應(yīng)該滿足

A.p->next==NULLB.p==NULLC.p->next=headD.p=head

72.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

73.閱讀以下程序:

該程序在編譯時產(chǎn)生錯誤,原因是()。

A.定義語句出錯,Case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符

B.定義語句出錯,printF不能用作用戶自定義標(biāo)識符

C.定義語句無錯,sCanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出Case的值

74.以下說法錯誤的是A.A.高級語言都是用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達形式

B.計算機只能處理由0和1的代碼構(gòu)成的二進制指令或數(shù)據(jù)

C.C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.EXE的二進制文件

D.每一種高級語言都有它對應(yīng)的編譯程序

75.

76.

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

#defineM(x,y,z)x*y+z

main()

{inta=l,b=2,c=3;

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

}

A.19B.17C.15D.12

77.

78.設(shè)j為Int型變量,則下面for循環(huán)語句的執(zhí)行結(jié)果是()。

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.63B.74C.62D.73

79.

80.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。

A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.三個階段相同

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從m個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如輸入8名學(xué)生的成績:987867563489.578.576.5則低于平均分的學(xué)生人數(shù)為3(平均分為72.187500)。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論