2022年廣東省肇慶市全國計算機等級考試C語言程序設(shè)計_第1頁
2022年廣東省肇慶市全國計算機等級考試C語言程序設(shè)計_第2頁
2022年廣東省肇慶市全國計算機等級考試C語言程序設(shè)計_第3頁
2022年廣東省肇慶市全國計算機等級考試C語言程序設(shè)計_第4頁
2022年廣東省肇慶市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩104頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年廣東省肇慶市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.十六進制數(shù)BB轉(zhuǎn)換成十進制數(shù)是()

A.192B.256C.187D.121

2.有以下程序程序執(zhí)行后的輸出結(jié)果是()。

A.y=-IB.y=oC.y=lD.while構(gòu)成無限循環(huán).

3.設(shè)有序順序表中有n個數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

4.

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

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

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

D.軟件的運行維護過程

6.設(shè)有定義inta=2,b=3,c=4;,則以下選項中值為0的表達式是______。A.(!a==1&&(!b==0)

B.(a<b)&&!c||1

C.a&&b

D.a||(b+b)&&(c-a)

7.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.9,2,7,4,5,6,3,8,1,10,

D.1,10,3,8,5,6,7,4,9,2,

8.命令“DIRA:*.*/W”的功能是()

A.寬行顯示A盤當前目錄的所有文件

B.寬行顯示A盤所有目錄的所有文件

C.寬行顯示A盤的所有目錄

D.顯示A盤中的文件名,每滿一屏后停頓一下

9.使用深度優(yōu)先算法遍歷下圖,遍歷的順序為()A.ABCDEFGB.ABDCFEGC.ABDECFGD.ABCDFEG

10.有下列程序:

intfunl(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=funl(x);b=funl(y);return(int)(a+b);

}

main()

{doublew;w=fun2(1.1,2.0),……}

程序執(zhí)行后變量w中的值是()。、

A.5.21B.5C.5.0D.0.0

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

12.假定a為一個整型數(shù)組名,則元素a[4]的字節(jié)地址為()。

A.a+4B.a+8C.a+16D.a+32

13.以下選項中不能作為C語言合法常量的是()

A.0.1e+6B.‘cd’C.“\a”D.‘\011’

14.

15.設(shè)有定義:floata=2,b=4,h=3;,以下C語言表達式與代數(shù)式計算結(jié)果不相符的是()。

A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)

16.在軟件測試設(shè)計中,軟件測試的主要目的是

A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.盡可能多地發(fā)現(xiàn)軟件中的錯誤

17.以下敘述中正確的是()。

A.循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

C.循環(huán)隊列中的隊尾指針一定大于隊頭指針

D.循環(huán)隊列中的隊尾指針一定小于隊頭指針

18.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

19.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如圖所示的節(jié)點。則下列選項中可將q所指節(jié)點從鏈表中刪除并釋放該節(jié)點的語句組是()。

A.p->next=q->next;free(q);

B.p=q->next;free(q);

C.p=q;free(q);

D.(*p).next=(*q).next;free(p);

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

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

二、2.填空題(20題)21.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

22.某二叉樹中度為2的節(jié)點有18個,則該二叉樹中有()個葉子節(jié)點。

23.下列程序段的運行結(jié)果是______。

charstr[]="ABCD",*p=str;

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

24.下面的程序可對指定字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

25.若a是血型變量,則表達式(a=2*3,a*2),a+6的值為______。

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

27.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

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

main()

{inti;

chara[]="Ilovechina!",b[20],*p1,*p2;

p1=a;

p2=b;

while(*p1)

{*p2=*p1;

p1++;

p2++;

}

*p2='\0';

printf("stringbis:%s\n",b);

}

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

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

31.以下程序的運行結(jié)果是()。#defineS(x)x*xmain(){intk=1;while(k<=4){printf("%d,",S(k));k++;}

32.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

33.數(shù)據(jù)的【】結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。

34.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。

35.需求分析的最終結(jié)果是產(chǎn)生【】。

36.下列程序的運行結(jié)果是______。

#include<stdio.h>

main()

{inta=10,b=3;

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

printf("%d,",(a-b,a+b));

printf("%d\n",a-b?a-b:a+b);

}

37.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的【】。

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

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

39.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

40.______是數(shù)據(jù)庫應(yīng)用的核心。

三、1.選擇題(20題)41.關(guān)于結(jié)構(gòu)化程序設(shè)計原則和方法的描述錯誤的是()。

A.選用的結(jié)構(gòu)只準許有一個入口和一個出口

B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)

C.不允許使用GOTO語句

D.語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬

42.下列關(guān)于棧的描述中錯誤的是()

A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

43.下列程序的運行結(jié)果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}

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

44.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是

A.一對一B.一對多C.多對一D.多對多

45.已定義下列函數(shù):intfun(int*p){return*p;)fun函數(shù)返回值是()。

A.不確定的值B.一個整數(shù)C.形參p中存放的值D.形參p的地址值

46.若有如下程序:sub(p,n)int(*p)[3],n;{inti;for(i=0;i<=n;i++)printf("%d",*(*(p+i)+n));}main(){ints[3][3]={1,2,3,4,5,6,7,8,9};sub(s,2);}則程序運行后的輸出結(jié)果是()

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

47.下面的程序在編澤時產(chǎn)生錯誤,其出錯原因是()。#include<stdio.h>main(){int1_case;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}

A.定義語句出錯,1_case不能作為變量名

B.定義語句出錯,printF不能用作用戶自定義標識符

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

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

48.在下列四條敘述中,正確的一條是()

A.在計算機中,漢字的區(qū)位碼就是機內(nèi)碼

B.在漢字國際碼GB2312-80的字符集中,共收集了6763個常用漢字

C.英文小寫字母e的ASCⅡ碼為101,英文小寫字母g的ASCⅡ碼為103

D.存放80個24×24點陣的漢字字模信息需要占用2560個字節(jié)

49.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

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

A.PADB.PFDC.N-SD.DFD

51.可以在C語言中用做用戶標識符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

52.程序設(shè)計語言的基本成分是數(shù)據(jù)成分、運算成分、控制成分和()。

A.對象成分B.變量成分C.語句成分D.傳輸成分

53.軟件危機是大型軟件開發(fā)中出現(xiàn)的現(xiàn)象,下列選項中的______是其主要表現(xiàn)。

①軟件生產(chǎn)的復(fù)雜性。

②軟件生產(chǎn)進度無法控制。

③軟件生產(chǎn)高成本、無法控制。

④軟件需求定義不準確。

A.全部B.②和③C.①、②和④D.②和④

54.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

55.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是

A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進性D.程序易讀性

56.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。

A.3B.4C.5D.不定

57.執(zhí)行語句“for(n=10;n>0;)printf("%d",--n+n--);”后,下列說法正確的是()

A.循環(huán)體執(zhí)行了5次,最終n的值是-1

B.循環(huán)體執(zhí)行了6次,最終n的值是-1

C.循環(huán)體執(zhí)行了6次,最終n的值是0

D.循環(huán)體執(zhí)行了5次,最終n的值是0

58.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。

A.運行后報錯B.66C.611D.510

59.若有以下定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;則值為3的表達式是()

A.p+=2,*(pd++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p

60.以下選項中合法的C語言字符常量是

A.'\t'B.AC.67D.A

四、選擇題(20題)61.

62.以下選項中,與k=n++完全等價的表達式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

63.有以下程序段:

charname[20】;intnum;

scanf("name=%Snum=%d",name,&num);

當執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。

A.Lili

B.name=Lili

C.Lilinum=

D.name=Lilinum=1001

64.有以下程序

#include<string.h>

main()

{FILE*fp;

inti,k,n;

fp=fopen("data.dat","w+");

for(i=4;i<9;i++)

{fprintf(fp,"%d",i);

if(i%3==0)fprintf(fp,"\n");

}

rewind(fp);

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

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

fclose(fp);

}

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

A.00B.45

C.4578D.45678

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

fun函數(shù)的返回值是()。

A.一個整數(shù)B.不確定的值C.形參P中存放的值D.形參P的地址值

66.有三個關(guān)系R、S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.投影C.交D.井

67.樹是結(jié)點的集合,它的根結(jié)點數(shù)目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

68.

69.

70.下列函數(shù)的功能是()

71.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

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

A.一個C語言程序只能實現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一個C稃序文件存存

73.

74.

75.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

76.程序運行后的輸出結(jié)果是()。A.Qian,f,350,Sun,f,350

B.Qiamf,350,Qian,f,350

C.Qian,f,350,Sun,m,370

D.Zha0,m,290,Sun,m,370

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

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元素的個數(shù)和P所指字符串長度相等

C.s和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相等

78.以下選項中關(guān)于程序模塊化的敘述錯誤的是()。

A.可采用自底向上、逐步細化的設(shè)計方法把若干獨立模塊組裝成所要求的程序

B.把程序分成若干相對獨立、功能單一的模塊,可便于重復(fù)使用這些模塊

C.把程序分成若干相對獨立的模塊,可便于編碼和調(diào)試

D.可采用自頂向下、逐步細化的設(shè)計方法把若干獨立模塊組裝成所要求的程序

79.結(jié)構(gòu)化程序設(shè)計的三種結(jié)構(gòu)是()。

A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)

B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)

D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

80.

五、程序改錯題(1題)81.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應(yīng)輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如,a數(shù)組中的值為:

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

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

試題程序:

參考答案

1.C

2.A當y為。時,表達式y(tǒng)一才為假,循環(huán)結(jié)束,最終y的值為一l,所以答案選擇A)。

3.A

4.B

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

6.A解析:選項A中(!a==1)&&(!b==0)→(!2==1)&&(!b==0)→(0==1)&&(!b==0)→0&&(!b==0)→0(&&右邊表達式(!b==0)被“短路”):選項B中(a<b)&&!c||1→(2<3)&&!4||1→1&&0||1→0||1→1;選項C中a&&b→2&&3→1;選項Da||b+b)&&(c-a)→2||(b+b)&&(c-a)→1(||右邊表達式(b+b)&&(c-a)被“短路”)。所以本題選A。

7.C解析:sort函數(shù)的功能實際上是對數(shù)組中奇數(shù)位置上的數(shù)進行從大到小排序。排序后的結(jié)果應(yīng)該為9,2,7,4,5,6,3,8,1,10。

8.A

9.C

10.C子函數(shù)funl(doublea)的功能是返回a的平方值的整數(shù)部分。子函數(shù)fun2(doubleX,doubley)的功能是返回X的平方值的整數(shù)部分與Y的平方值的整數(shù)部分的和。又因為題中變量W的定義為double型,函數(shù)fun(2)的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運算,整型數(shù)據(jù)被轉(zhuǎn)換為實型數(shù)據(jù)。所以雙精度型變量w的值為5.0。

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

12.C

13.B字符串常量應(yīng)該用雙引號標注,即“cd”,單引號標注的單個字符表示字符常量,所以B選項中的表示方法錯誤。故本題答案為B選項。

14.D

15.B

16.D解析:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。

17.B在實際應(yīng)用中,隊列的順序存儲結(jié)構(gòu)一般采用循環(huán)隊列的形式。當循環(huán)隊列為滿或者為空時,隊尾指針=隊頭指針。本題答案為B選項。

18.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。

19.A其方法是將要刪除節(jié)點的上一個節(jié)點的next指向要刪除節(jié)點的下一個節(jié)點,然后釋放將要刪除的節(jié)點,所以選項A正確。故本題答案為A選項。

20.D

21.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時,則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個數(shù)。

22.19

23.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。

24.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字詞進行比較,如果當前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

25.1212解析:本題考查逗號表達式的運算規(guī)則。逗號表達式的基本格式為:“表達式1,表達式2,…”,其整個表達式的結(jié)果取最后一個子表達式的值。本題中首先計算逗號表達式中的第1個表達式a=2*3=6,然后計算第2個表達式a*2,這時整個表達式的值為12,但要注意,因為第2個表達式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達式a+6=12,所以整個表達式最后的值為12。

26.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。

27.x+=1x+=1解析:本題考查“++”,“--”運算符。“++”、“--”只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

28.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因為fun函數(shù)中變量a為static類型,所以每次調(diào)用完于函數(shù)之后,變量a所做的改變都要保存。

29.stringbis:Ilovechina!

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

31.149161,4,9,16,解析:分析程序執(zhí)行過程,第1次循環(huán),k=1時,此時s(1)=1*1=1,然后k的值加1;第2次循環(huán),k=2時,s(2)=2*2=4,然后k的值加1;第3次循環(huán),k=3時,s(3)=3*3=9,然后k的值加1;第4次循環(huán),k=4時,s(4)=4*4=16,然后k的值加1;當k=5時,條件不滿足,退出循環(huán)。

32.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。

33.邏輯邏輯解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。

34.相鄰相鄰

35.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。

36.11371,13,7解析:本題考查3個知識點:①余數(shù)的計算,題中的a=10,b=3,a%b=1;②(表達式1,表達式2)形式的結(jié)果為最后一個表達式的值,題中的a=10,b=3,(a-b,a+b)=a+b=13;③條件運算符的使用,題中的a-b?a-b:a+b,判斷語句a-b=7不為0,所以執(zhí)行a-b,結(jié)果為7。

37.模式或邏輯模式或概念模式模式也稱邏輯模式或概念模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖,例如數(shù)據(jù)記錄由哪些數(shù)據(jù)項構(gòu)成,數(shù)據(jù)項的名字、類型、取值范圍等。

38.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用在本題中是結(jié)束for循環(huán)直接跳出循環(huán)體外。當i=1時,因為if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出1,同時i自加1;執(zhí)行第二次for循環(huán)時,i=3;同樣的if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出3,同時i自加1;執(zhí)行第三次for循環(huán)時,i=5,if語句條件滿足,所以執(zhí)行printf('%d\\n',i),輸出5,然后break語句跳出了for循環(huán)。

39.可重用性繼承的優(yōu)點:相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。

40.數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計

41.C解析:限制使用GOTO語句是結(jié)構(gòu)化程序設(shè)計的原則和方法之一,但不是絕對不允許使用GOTO語句。其他3項為結(jié)構(gòu)化程序設(shè)計的原則。

42.B解析:在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。即棧是按照先進后出(FILO,F(xiàn)irstInLastOut)或后進先出(LIFO,LastInFirstOut)的原則組織數(shù)據(jù)的,因此,棧也被稱為先進后出表或后進先出表。由此可以看出,棧具有記憶作用。答案B錯在帶鏈的棧的結(jié)點存儲順序與其邏輯順序是可以不一致的。

43.C解析:本題考查ifelse語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,執(zhí)行下列的語句;第二個if語句,先判斷條件,發(fā)現(xiàn)b<0條件不成立,則執(zhí)行與其配對的else語句,c+=1,得c=5。

44.D解析:兩個實體間的聯(lián)系可以歸納為3種類型:一對一聯(lián)系:一對一的聯(lián)系表現(xiàn)為主表中的每一條記錄只與相關(guān)表中的一條記錄相關(guān)聯(lián)。一對多聯(lián)系,一對多的聯(lián)系表現(xiàn)為主表中的每一條記錄與相關(guān)表中的多條記錄相關(guān)聯(lián)。多對多聯(lián)系:多對多的聯(lián)系表現(xiàn)為二個表中的多個記錄在相關(guān)表中同樣有多個記錄其匹配。本題中一個顧客可以購買多種商品,同一種商品可以有多個顧客購買,所以商品和顧客之間是多對多的聯(lián)系。

45.B解析:由函數(shù)intfun(int*p){return*p;}的定義可知,返回值為整型指針變量p所指向的數(shù)據(jù)。

46.A

47.A解析:C語言變量名可由數(shù)字,字母,下劃線構(gòu)成,但首字符不能為數(shù)字。

48.B

49.D解析:A選項,將f賦值為0,結(jié)果得到0,因為0乘任何數(shù)都為0;B選項,i<n,計算的是(n-1)!,C選項將陷入死循環(huán)。

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

51.B解析:C語言規(guī)定,標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。另外還需要注意的是關(guān)鍵字不能作標識符。選項A中void,C中for都為關(guān)鍵字,D中2c以字母開頭。

52.D解析:程序設(shè)計語言是用于書寫計算機程序的語言,其基本成分有以下4種,數(shù)據(jù)成分:用來描述程序中的數(shù)據(jù)。運算成分:描述程序中所需的運算。控制成分:用來構(gòu)造程序的邏輯控制結(jié)構(gòu)。傳輸成分:定義數(shù)據(jù)傳輸成分,如輸入/輸出語言。

53.A

54.D解析:在格式輸入中,要求給出的是編譯的地址,而D)答案中給出的s[1]是一個值的表達式。

55.D結(jié)構(gòu)化程序設(shè)計由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主張“清晰第一,效率第二”,以模塊化設(shè)計為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨立的模塊,這樣使完成每一個模塊的工作變得單純而明確,為設(shè)計一些較大的軟件打下了良好的基礎(chǔ)。

由于模塊相互獨立,因此,在設(shè)計其中一個模塊時,不會受到其他模塊的牽連,因而可將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計。模塊的獨立性還為擴充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因為可以充分利用現(xiàn)有的模塊作為積木式的擴展。

結(jié)構(gòu)化程序設(shè)計的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計方法和“單入口單出口”的控制結(jié)構(gòu)。自頂向下、逐步求精的程序設(shè)計方法從問題本身開始,經(jīng)過逐步細化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;“單入口單出口”的思想認為一個復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個新構(gòu)造的程序一定是一個單入口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序。

56.C解析:for語句中的表達式可以部分或全部省略,但兩個“;”不能省略,若3個表達式均省略,會因為缺少條件判斷,導(dǎo)致循環(huán)無限執(zhí)行,而形成死循環(huán)。本題中當i的值為5的時候,循環(huán)終止。

57.D

58.A解析:本題考核的知識點是通過指針引用數(shù)組的元素的方法.本題中首先定義了一個一維數(shù)組a并初始化,由于定義該數(shù)組的時候省略了長度,因此該數(shù)組的長度為初始化時候賦初值的個數(shù)即為12。數(shù)組名a代表數(shù)組的首地址,所以*p=a+5語句使得p指向數(shù)組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內(nèi)存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。

59.A

60.A解析:在C語言中,一個字符常量代表ASCII字符集中的一個小字符,在程序中用單引號把一個字符括起來作為字符常量,選項A)是一個轉(zhuǎn)義字符常量,表示橫向跳若干空格(代表“TAB”鍵);選項B)表示一個字符串;選項C)表示一個整型常量;選項D)表示一個標識符(代表一個變量),故本題答案為A)。

61.A

62.A解析:在本題中k=n++,為后綴運算。根據(jù)其運算規(guī)則,首先n先加一,但n++表達式的值依然n原來的值,即k的值沒有改變。選項A中先給k賦值為n,然后n再加1,k值沒有變化,所以這個表達式和本題中表達式等價:選項B中先n加1,然后將n加1后的值賦給k,k變化了比原來的值大1,所以這個表達式和本題中表達式不等價:選項C中先計算表達式左邊的表達式++=N的值,執(zhí)行++n后,左邊的表達式的值為n的值加1,然后將n+1后的值賦給k,所以這個表達式和本題中的表達式不等價;選項D中表達式展開為k=k+(n+1),k的值發(fā)生了變化,所以這個表達式和本題中的表達式不等價。所以4個選項中A正確。

63.A\n考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。

\n

64.D本題主要考查文件的操作。在程序中,首先定義了一個文件類的指針變量fp,然后定義了三個整型變量,接著以可讀/寫的形式打開文件data.dat,最后執(zhí)行for循環(huán):

當i=4時,將變量i的值格式化輸出到fp指向的文件中,即為4,然后判斷i%3是否為0,如果是,則輸出換行符,否則不執(zhí)行其他操作。

當i=5時,那么輸出到文件中的值為5,同樣,輸出6并輸出換行符,接著輸出7和8到文件中。循環(huán)結(jié)束,此時文件中的內(nèi)容為456<換行>78。

執(zhí)行rewind(fp);語句,這個語句的作用是將文件的位置指針返回到文件的開頭,然后用該文件的內(nèi)容分別給變量k和n賦值,賦值的過程中,碰到換行符表示一個賦值的結(jié)束,因此,賦值后,兩變量的結(jié)果分別是456和78。因此,最后的輸出結(jié)果是45678。

65.A返回值為指針變量指向的數(shù)據(jù),該數(shù)據(jù)已被定義為整型。因此A選項正確。

66.D關(guān)系T中包含了關(guān)系R與s中的所有元組,所以進行的是并的運算。

67.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點的集合,對應(yīng)任意一棵非空樹,它具有以下幾點重要的性質(zhì)。

①有且僅有一個特定的稱為根的結(jié)點。

②當n>1時,其余結(jié)點可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。

因此,本題的正確答案有且只有一個。

68.C

69.B

70.A將a數(shù)組里元素賦值給b數(shù)組,直到數(shù)組a的末尾,所以選擇A)。

71.C學(xué)號是學(xué)生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C項。

72.A一個C語言程序能實現(xiàn)多種算法,所以A)錯誤。

73.C

74.B

75.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。

76.Ac語言函數(shù)參數(shù)傳遞大致分為:1、值傳遞過程中。被調(diào)函數(shù)的形參作為被調(diào)函數(shù)的局部變量處理,即在內(nèi)存的堆棧中開辟空間以存放由主調(diào)函數(shù)放進來的實參的值,從而成為了實參的一個拷貝。值傳遞的特點是被調(diào)函數(shù)對形參的任何操作都是作為局部變量進行,不會影響主調(diào)函數(shù)的實參變量的值。2、地址傳遞過程中,被調(diào)函數(shù)的形參雖然也作為局部變量在堆棧中開辟了內(nèi)存空間,但是這時存放的是由主調(diào)函數(shù)放進來的實參變量的地址。被調(diào)函數(shù)對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調(diào)函數(shù)中的實參變量。正因為如此,被調(diào)函數(shù)對形參做的任何操作都影響了主調(diào)函數(shù)中的實參變量。結(jié)構(gòu)體中nanle是數(shù)組,做實參傳遞,會退化為指針,因此調(diào)用f(),b.nanle發(fā)生修改,其他的成員,傳遞的是拷貝,不會被修改。因此輸出Sun,f,350。故答案為A選項。

77.AP=8;后,指針P指向s的首地址,*P=s[0],因此選項A)是正確的;p是字符串指針,所指向的字符串為”beijing”,其長度為7,而數(shù)組s中元素的個數(shù)為20,因此選項B)和D)是錯誤的;s是數(shù)組,不是指針變量,所以選項C)也是錯誤的。

78.A程序模塊化可以采用自頂向下、逐步細化的方法,所以A選項中“自底向上”的說法是錯誤的。故本題答案為A選項。

79.D結(jié)構(gòu)化程序設(shè)計以模塊化設(shè)計為中心,采用自頂向下、逐步求精的程序設(shè)計方法。任何算法功能都可以通過由程序模塊組成的三種基本程序結(jié)構(gòu)的組合:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)來實現(xiàn)。

80.B

81.(1)錯誤:t+=1.0/k;

正確:t+=1.o/i;

(2)錯誤:returni;

正確:returnt;

【解析】根據(jù)for循環(huán)可知,變量i中存放每一項的分母,變量k在函數(shù)procee沒有定義,因此t+=l.0/k;應(yīng)改為t+=1.0/i;。變量t中存放各項的和,題目要求將各項的和返回給主函數(shù),因此returni應(yīng)改為returnt。

82.

【解析】要使數(shù)組左下半三角元素中的值全部置成0,先要找出數(shù)組的下半三角元素,再將其值全部賦值為0。二維數(shù)組中下半三角元素的特點為,其列下標小于其行下標。根據(jù)這個特點,將二維數(shù)組的下半三角元素都賦值為0。

2022年廣東省肇慶市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.十六進制數(shù)BB轉(zhuǎn)換成十進制數(shù)是()

A.192B.256C.187D.121

2.有以下程序程序執(zhí)行后的輸出結(jié)果是()。

A.y=-IB.y=oC.y=lD.while構(gòu)成無限循環(huán).

3.設(shè)有序順序表中有n個數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

4.

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

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

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

D.軟件的運行維護過程

6.設(shè)有定義inta=2,b=3,c=4;,則以下選項中值為0的表達式是______。A.(!a==1&&(!b==0)

B.(a<b)&&!c||1

C.a&&b

D.a||(b+b)&&(c-a)

7.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.9,2,7,4,5,6,3,8,1,10,

D.1,10,3,8,5,6,7,4,9,2,

8.命令“DIRA:*.*/W”的功能是()

A.寬行顯示A盤當前目錄的所有文件

B.寬行顯示A盤所有目錄的所有文件

C.寬行顯示A盤的所有目錄

D.顯示A盤中的文件名,每滿一屏后停頓一下

9.使用深度優(yōu)先算法遍歷下圖,遍歷的順序為()A.ABCDEFGB.ABDCFEGC.ABDECFGD.ABCDFEG

10.有下列程序:

intfunl(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=funl(x);b=funl(y);return(int)(a+b);

}

main()

{doublew;w=fun2(1.1,2.0),……}

程序執(zhí)行后變量w中的值是()。、

A.5.21B.5C.5.0D.0.0

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

12.假定a為一個整型數(shù)組名,則元素a[4]的字節(jié)地址為()。

A.a+4B.a+8C.a+16D.a+32

13.以下選項中不能作為C語言合法常量的是()

A.0.1e+6B.‘cd’C.“\a”D.‘\011’

14.

15.設(shè)有定義:floata=2,b=4,h=3;,以下C語言表達式與代數(shù)式計算結(jié)果不相符的是()。

A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)

16.在軟件測試設(shè)計中,軟件測試的主要目的是

A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.盡可能多地發(fā)現(xiàn)軟件中的錯誤

17.以下敘述中正確的是()。

A.循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

C.循環(huán)隊列中的隊尾指針一定大于隊頭指針

D.循環(huán)隊列中的隊尾指針一定小于隊頭指針

18.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

19.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如圖所示的節(jié)點。則下列選項中可將q所指節(jié)點從鏈表中刪除并釋放該節(jié)點的語句組是()。

A.p->next=q->next;free(q);

B.p=q->next;free(q);

C.p=q;free(q);

D.(*p).next=(*q).next;free(p);

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

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

二、2.填空題(20題)21.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

}

printf("\n");

}

22.某二叉樹中度為2的節(jié)點有18個,則該二叉樹中有()個葉子節(jié)點。

23.下列程序段的運行結(jié)果是______。

charstr[]="ABCD",*p=str;

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

24.下面的程序可對指定字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

25.若a是血型變量,則表達式(a=2*3,a*2),a+6的值為______。

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

27.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

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

main()

{inti;

chara[]="Ilovechina!",b[20],*p1,*p2;

p1=a;

p2=b;

while(*p1)

{*p2=*p1;

p1++;

p2++;

}

*p2='\0';

printf("stringbis:%s\n",b);

}

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

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

31.以下程序的運行結(jié)果是()。#defineS(x)x*xmain(){intk=1;while(k<=4){printf("%d,",S(k));k++;}

32.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

33.數(shù)據(jù)的【】結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。

34.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。

35.需求分析的最終結(jié)果是產(chǎn)生【】。

36.下列程序的運行結(jié)果是______。

#include<stdio.h>

main()

{inta=10,b=3;

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

printf("%d,",(a-b,a+b));

printf("%d\n",a-b?a-b:a+b);

}

37.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的【】。

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

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

39.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

40.______是數(shù)據(jù)庫應(yīng)用的核心。

三、1.選擇題(20題)41.關(guān)于結(jié)構(gòu)化程序設(shè)計原則和方法的描述錯誤的是()。

A.選用的結(jié)構(gòu)只準許有一個入口和一個出口

B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)

C.不允許使用GOTO語句

D.語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬

42.下列關(guān)于棧的描述中錯誤的是()

A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

43.下列程序的運行結(jié)果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}

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

44.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是

A.一對一B.一對多C.多對一D.多對多

45.已定義下列函數(shù):intfun(int*p){return*p;)fun函數(shù)返回值是()。

A.不確定的值B.一個整數(shù)C.形參p中存放的值D.形參p的地址值

46.若有如下程序:sub(p,n)int(*p)[3],n;{inti;for(i=0;i<=n;i++)printf("%d",*(*(p+i)+n));}main(){ints[3][3]={1,2,3,4,5,6,7,8,9};sub(s,2);}則程序運行后的輸出結(jié)果是()

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

47.下面的程序在編澤時產(chǎn)生錯誤,其出錯原因是()。#include<stdio.h>main(){int1_case;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}

A.定義語句出錯,1_case不能作為變量名

B.定義語句出錯,printF不能用作用戶自定義標識符

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

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

48.在下列四條敘述中,正確的一條是()

A.在計算機中,漢字的區(qū)位碼就是機內(nèi)碼

B.在漢字國際碼GB2312-80的字符集中,共收集了6763個常用漢字

C.英文小寫字母e的ASCⅡ碼為101,英文小寫字母g的ASCⅡ碼為103

D.存放80個24×24點陣的漢字字模信息需要占用2560個字節(jié)

49.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

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

A.PADB.PFDC.N-SD.DFD

51.可以在C語言中用做用戶標識符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

52.程序設(shè)計語言的基本成分是數(shù)據(jù)成分、運算成分、控制成分和()。

A.對象成分B.變量成分C.語句成分D.傳輸成分

53.軟件危機是大型軟件開發(fā)中出現(xiàn)的現(xiàn)象,下列選項中的______是其主要表現(xiàn)。

①軟件生產(chǎn)的復(fù)雜性。

②軟件生產(chǎn)進度無法控制。

③軟件生產(chǎn)高成本、無法控制。

④軟件需求定義不準確。

A.全部B.②和③C.①、②和④D.②和④

54.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

55.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是

A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進性D.程序易讀性

56.執(zhí)行語句for(i=1;i++<4;);后變量i的值是______。

A.3B.4C.5D.不定

57.執(zhí)行語句“for(n=10;n>0;)printf("%d",--n+n--);”后,下列說法正確的是()

A.循環(huán)體執(zhí)行了5次,最終n的值是-1

B.循環(huán)體執(zhí)行了6次,最終n的值是-1

C.循環(huán)體執(zhí)行了6次,最終n的值是0

D.循環(huán)體執(zhí)行了5次,最終n的值是0

58.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。

A.運行后報錯B.66C.611D.510

59.若有以下定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;則值為3的表達式是()

A.p+=2,*(pd++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p

60.以下選項中合法的C語言字符常量是

A.'\t'B.AC.67D.A

四、選擇題(20題)61.

62.以下選項中,與k=n++完全等價的表達式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

63.有以下程序段:

charname[20】;intnum;

scanf("name=%Snum=%d",name,&num);

當執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。

A.Lili

B.name=Lili

C.Lilinum=

D.name=Lilinum=1001

64.有以下程序

#include<string.h>

main()

{FILE*fp;

inti,k,n;

fp=fopen("data.dat","w+");

for(i=4;i<9;i++)

{fprintf(fp,"%d",i);

if(i%3==0)fprintf(fp,"\n");

}

rewind(fp);

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

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

fclose(fp);

}

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

A.00B.45

C.4578D.45678

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

fun函數(shù)的返回值是()。

A.一個整數(shù)B.不確定的值C.形參P中存放的值D.形參P的地址值

66.有三個關(guān)系R、S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.投影C.交D.井

67.樹是結(jié)點的集合,它的根結(jié)點數(shù)目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

68.

69.

70.下列函數(shù)的功能是()

71.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

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

A.一個C語言程序只能實現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一個C稃序文件存存

73.

74.

75.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

76.程序運行后的輸出結(jié)果是()。A.Qian,f,350,Sun,f,350

B.Qiamf,350,Qian,f,350

C.Qian,f,350,Sun,m,370

D.Zha0,m,290,Sun,m,370

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

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元素的個數(shù)和P所指字符串長度相等

C.s和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相等

78.以下選項中關(guān)于程序模塊化的敘述錯誤的是()。

A.可采用自底向上、逐步細化的設(shè)計方法把若干獨立模塊組裝成所要求的程序

B.把程序分成若干相對獨立、功能單一的模塊,可便于重復(fù)使用這些模塊

C.把程序分成若干相對獨立的模塊,可便于編碼和調(diào)試

D.可采用自頂向下、逐步細化的設(shè)計方法把若干獨立模塊組裝成所要求的程序

79.結(jié)構(gòu)化程序設(shè)計的三種結(jié)構(gòu)是()。

A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)

B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)

D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

80.

五、程序改錯題(1題)81.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應(yīng)輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如,a數(shù)組中的值為:

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

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

試題程序:

參考答案

1.C

2.A當y為。時,表達式y(tǒng)一才為假,循環(huán)結(jié)束,最終y的值為一l,所以答案選擇A)。

3.A

4.B

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

6.A解析:選項A中(!a==1)&&(!b==0)→(!2==1)&&(!b==0)→(0==1)&&(!b==0)→0&&(!b==0)→0(&&右邊表達式(!b==0)被“短路”):選項B中(a<b)&&!c||1→(2<3)&&!4||1→1&&0||1→0||1→1;選項C中a&&b→2&&3→1;選項Da||b+b)&&(c-a)→2||(b+b)&&(c-a)→1(||右邊表達式(b+b)&&(c-a)被“短路”)。所以本題選A。

7.C解析:sort函數(shù)的功能實際上是對數(shù)組中奇數(shù)位置上的數(shù)進行從大到小排序。排序后的結(jié)果應(yīng)該為9,2,7,4,5,6,3,8,1,10。

8.A

9.C

10.C子函數(shù)funl(doublea)的功能是返回a的平方值的整數(shù)部分。子函數(shù)fun2(doubleX,doubley)的功能是返回X的平方值的整數(shù)部分與Y的平方值的整數(shù)部分的和。又因為題中變量W的定義為double型,函數(shù)fun(2)的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運算,整型數(shù)據(jù)被轉(zhuǎn)換為實型數(shù)據(jù)。所以雙精度型變量w的值為5.0。

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

12.C

13.B字符串常量應(yīng)該用雙引號標注,即“cd”,單引號標注的單個字符表示字符常量,所以B選項中的表示方法錯誤。故本題答案為B選項。

14.D

15.B

16.D解析:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。

17.B在實際應(yīng)用中,隊列的順序存儲結(jié)構(gòu)一般采用循環(huán)隊列的形式。當循環(huán)隊列為滿或者為空時,隊尾指針=隊頭指針。本題答案為B選項。

18.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。

19.A其方法是將要刪除節(jié)點的上一個節(jié)點的next指向要刪除節(jié)點的下一個節(jié)點,然后釋放將要刪除的節(jié)點,所以選項A正確。故本題答案為A選項。

20.D

21.55解析:本題的關(guān)鍵在于if(!(i%5))printf('\\n),這句,即如果i可被5整除時,則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個數(shù)。

22.19

23.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。

24.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字詞進行比較,如果當前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

25.1212解析:本題考查逗號表達式的運算規(guī)則。逗號表達式的基本格式為:“表達式1,表達式2,…”,其整個表達式的結(jié)果取最后一個子表達式的值。本題中首先計算逗號表達式中的第1個表達式a=2*3=6,然后計算第2個表達式a*2,這時整個表達式的值為12,但要注意,因為第2個表達式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達式a+6=12,所以整個表達式最后的值為12。

26.123056009123\r\n05

溫馨提示

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

評論

0/150

提交評論