2021年廣東省汕頭市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第1頁
2021年廣東省汕頭市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第2頁
2021年廣東省汕頭市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第3頁
2021年廣東省汕頭市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第4頁
2021年廣東省汕頭市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年廣東省汕頭市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的輸出結果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64

2.C語言可執(zhí)行程序的開始執(zhí)行點是()。

A.包含文件中的第一個函數B.程序中第一個函數C.程序中的main()函數D.程序中第一條語句

3.有一個有序表為{1,3,9,12,32,41,45,62,75,77,82,95,100},當折半查找值為82的結點時,()次比較后查找成功。

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

4.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項中正確的輸入語句是A.scanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

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

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

6.有以下程序:#include<stdio.h>structtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf(“%d,”,p->x);p=p->y;}}程序的運行結果是()。

A.20,30,B.30,17,C.15,30,D.20,15,

7.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

8.以下程序的輸出結果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

9.程序設計的任務包括()。

A.編寫程序代碼并上機調試B.確定所用數據結構C.確定所用算法D.以上選項均正確

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

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

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

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

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

11.下面說法正確的是()。A.A.一個C程序可以有多個主函數

B.一個C語言的函數中只允許有一對花括號

C.C程序的書寫格式是自由的,一個語句可以寫在一行上,也可以寫在多行內

D.在對C程序進行編譯時,可以發(fā)現注釋行中的拼寫錯誤

12.廣義表((a))的表頭是(a),表尾是()。A.aB.()C.(a)D.((a))

13.設初始輸入序列為1,2,3,4,5,利用一個棧產生輸出序列,下列()序列是不可能通過棧產生的。

A.1,2,3,4,5B.5,3,4,l,2C.4,3,2,1,5D.3,4,5,2,l

14.下述程序執(zhí)行的輸出結果是()。#include<stdio.h>main(){chara[2][4];strcpy(a。"are");strcpy(a[1],"you");a[o][3]=&;printf("%s\n",a);}A.are&youB.youC.areD.&

15.表達式a+=a-=a=9的值是()。

A.9B.-9C.18D.0

16.以下敘述中錯誤的是

A.在程序中凡是以“#”開始的語句行都是預處理命令行

B.預處理命令行的最后不能以分號表示結束

C.#defineMAX是合法的宏定義命令行

D.C程序對預處理命令行的處理是在程序執(zhí)行的過程中進行的

17.若有定義:Typedefint*T[10];T*a;則以下與上述定義中a類型完全相同的是()。

A.int*a[10];

B.int**a[10];

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

D.int*a[][10];

18.給出發(fā)下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為______。

A.數組x和數組y等價B.數組x和數組y的長度相同C.數組x的長度大于數組y的長度D.數組x的長度小于數組y的長度

19.下面哪個不是用來解決哈希表沖突的開放地址法()

A.線性探測法B.線性補償探測法C.拉鏈探測法D.隨機探測法

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

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

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

二、2.填空題(20題)21.為建立如下圖所示的存儲結構(即每個結點兩個域,p是指向結點的指針域,data用以存放整型數),請將定義補充完整。

pdata

a

structlist

{【】;intdata;}a;

22.以下程序段的輸出結果是【】。

inti=9;

printf("%o\n",i);

23.如果兩個8位二進制數00010101與01000111相加,其結果用十進制表示為【】。

24.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。

25.有以下程序:

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

}

程序運行后的輸出結果是【】。

26.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

27.數據庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

28.以下函數creat用來建立一個帶頭結點的單向鏈表,新產生的結點是插在鏈表頭的

末尾。單向鏈表的頭指針作為函數值返回。請?zhí)羁铡?/p>

#include<stdio.h>

structlist

{chardata;

structlist*next;

};

structlist*creat;

{structlist*h,*p,*q;

charch;

h=(【】)malloc(sizeof(structlist));

p=q=h;

ch=getchar();

while(ch!='?')

{p=(【】)mallco(sizeof(structlist));

p->data=ch;

q->next=p;

q=p;

ch=getchar();

}

p->next='\0';

【】;

}

29.下面rotate函數的功能是:將n行n列的矩陣A轉置未AT,例如:

請?zhí)羁?/p>

#defineN4

voidrotate(inta[][])

{inti,j,t;

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

for(j=0;【】;j++)

{t=a[i][j];【】;a[j][i]=t;}

}

30.Jackson方法是一種面向【】的結構化方法。

31.在scanf()函數調用語句中,可以在格式字符和%號之間加上一個星號,它的作用是跳過對應的輸入數據;當輸入以下數據時,100200300400500<回車>,下面語句的執(zhí)行結果為【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

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

32.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

33.下列程序段是從鍵盤輸入的字符中統計小寫字母的個數,用換行符結束循環(huán)。請?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

34.設有以下定義:

structss

{intinfo;structss*link;}x,y,z;

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

請寫出刪除點y的賦值語句【】。

35.下列循環(huán)的循環(huán)次數是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

36.下列程序的輸出結果是______。

#include<stdio.h>

main()

{intx=10,y=10,i;

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

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

}

37.下面程序的輸出是【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA"m,"BB","CC:,"DD"};

printf("%s%s%s\n,aa[em1],aa[em2],aa[em3]);

}

38.按“先進后出”原則組織數據的數據結構是[]。

39.以下程序運行后的輸出結果是【】。

main()

{charCl,c2;

for(c1='0''c2='9';c1<c2;c1++,c2--)printf("%c%c",c1,c2);

printf("\n");

}

40.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

三、1.選擇題(20題)41.源程序中應包含一些內部文檔,以幫助閱讀和理解程序,源程序的內部文檔通常包括選擇合適的標識符、注釋和

A.程序的視覺組織B.盡量不用或少用GOTO語句C.檢查輸入數據的有效性D.設計良好的輸出報表

42.已知形成鏈表的存儲結構如下圖所示,則下述類型描述中的空白處應填______。structlink{chardata;______,}node;

A.structlinknext

B.link*next

C.stuctnextlink

D.structlink*next

43.設有定義:charp[]={‘1’,‘2’,‘3’,},*q=p;,以下不能計算出一個char型數據所占字節(jié)數的表達式是______。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

44.下列說法正確的是()。

A.在C程序中,main()函數必須位于程序的最前面

B.在C程序中,一條語句只能寫一行而不能寫多行

C.C程序是以行為基本單位的

D.C語言本身沒有輸入輸出語句

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

A.一個算法的空間復雜度大,則其時間復雜度也必定大

B.一個算法的空間復雜度大,則其時間復雜度必定小

C.一個算法的時間復雜度大,則其空間復雜度必定小

D.上述三種說法都不對

46.C語言源程序的最小單位是()。

A.程序行B.語句C.函數D.字符

47.以下數組定義中錯誤的是A.intx[][3]={0};

B.intx[2][3]={{l,2},{3,4},{5,6}};

C.intx[][3]={{l,2,3},{4,5,6}};

D.intx[2][3]={l,2,3,4,5,6};

48.下列程序的輸出結果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

49.以下程序(程序左邊的數字為附加的行號)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.沒有錯B.第1行有錯C.第6行有錯D.第7行有錯

50.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}該程序中的for循環(huán)執(zhí)行的次數是______。

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

51.有以下程序:#include<stdio.h>prt(int*m,intn)inti;for(i=0;i<n;i++)m[i]++;main()}inta[]={1,2,3,4,5},i;prt(a,5);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運行后的輸出結果是()。

A.1,2,3,4,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,1

52.下述關于C語言文件的操作的結論中,正確的是______。

A.對文件操作必須先關閉文件

B.對文件操作必須先打開文件

C.對文件操作順序無要求

D.對文件操作前必須先測文件是否存在,然后再打開文件

53.有以下程序段

charch;intk;

ch=′a′;k=12;

printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);

已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結果是

A.因變量類型與格式描述符的類型不匹配輸出無定值

B.輸出項與格式描述符個數不符,輸出為零值或不定值

C.a,97,12k=12

D.a,97,k=12

54.若指針ps已正確定義,要使ps指向能夠存儲8個字符的動態(tài)存儲單元,以下不正確的語句是()

A.ps=(char*)malloc(8);

B.ps=(char*)malloc(sizeof(char)*8);

C.ps=(char*)calloc(8,sizeof(char))

D.ps=8*(char*)malloc(sizeof(char))

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

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

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

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

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

56.下列程序的輸出結果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

57.下列數據結構中,按先進后出原則組織數據的是

A.線性鏈表B.棧C.循環(huán)鏈表D.順序表

58.以下4組用戶定義標識符中,全部合法的一組是()A._mainencludesin

B.If-maxturbo

C.txtREAL3COM

D.intk_2_001

59.有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i]];i++;}printf("%d\n",k);}執(zhí)行后輸出的結果足

A.58B.56C.45D.24

60.在軟件生命周期中,能準確地確定軟件系統必須做什么和必須具備哪些功能的階段是()。A.概要設計B.詳細設計C.可行性分析D.需求分析

四、選擇題(20題)61.

有以下程序:

main

{intx=0,y=5,z=3;

while(z-->0&&++x<5)y=y-l;

printf("%d,%d,%d\n",x,y,z);

}

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

A.3,2,0B.3。2.1C.4,3,-1D.5,2.-5

62.有以下程序:

A.xyyxB.yyyyC.yyxxD.yxyx

63.結構化分析方法是面向()的自頂向下、逐步求精進行需求分析的方法

A.對象B.數據結構C.數據流D.目標

64.設有如圖所示二叉樹,對此二叉樹后序遍歷的結果為()。

A.ZBTYCPXAB.ATBZXCYPC.TZBACYXPD.ATBZXCPY

65.

66.概要設計是軟件系統結構的總體設計,以下選項中不屬于概要設計的是()。A.A.把軟件劃分成模塊B.確定模塊之間的調用關系C.確定各個模塊的功能D.設計每個模塊的偽代碼

67.

68.

69.

有如下程序:

#include<stdio.h>

main

{FILE*fp1;

fp1=fopen("f1.txt","w");

fprintf(fp1,"abe");

fclose(fp1);

}

若文本文件f1.txt中原有內容為:good。則運行以上程序后文件f1.txt中的內容為()。

A.goodabcB.abcdC.abcD.abcgood

70.有定義如下:

structsk

{inta;

floatb;

}data,*p;

如果p=&data;則對于結構變量data的成員a的正確引用時()

A)(*).data.aB)(*p).a

C)p->data.aD)p.data.a

71.有以下函數該函數的功能是()。

A.計算s所指字符串占用內存字節(jié)的個數

B.比較兩個字符串的大小

C.計算s所指字符串的長度

D.將s所指字符串復制到字符串t中

72.

73.下列關于棧的描述錯誤的是()。

A.棧按“先進后出”組織數據B.棧是特殊的線性表,只能在一端插入或刪除數據C.棧具有記憶功能D.棧只能順序存儲

74.

75.在下列選項中,哪個不是一個算法一般應該具有的基本特征()。

A.無窮性B.可行性C.確定性D.有窮性

76.

77.設有定義:intX=2;,以下表達式中,值不為6的是()。

A.2*x.x+=2B.x++,2*xC.x*=(1+x)D.x*!x+1

78.

下列程序的運行結果是()。

inty=5,x=14;

y=((x=3*Y,x+1),x-1);

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

A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27

79.下列描述中正確的是

A.軟件指的就是程序B.軟件開發(fā)不受任何計算機系統的限制

C.軟件既是邏輯實體,又是物理實體D.軟件是程序、數據與相關文檔的集合

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:將字符串str中的所有字符復制到字符串b中,要求在每復制3個字符之后插入1個空格。例如,在調用proc()函數之前給字符

串str輸入abcdefghijk,調用函數之后,字符串b中的內容則為abcdefghijk。

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

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

試題程序:

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和。號。請編寫函數fun,其功能是:將字符串尾部的。號全部刪除,前面和中間的*號不動。

參考答案

1.C本題考查for循環(huán)及if語句。當執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現時,break跳出循環(huán),執(zhí)行下列的printf語句。

2.C解析:每個C程序有且只有一個主函數main(),且程序必須從main函數開始執(zhí)行,并在main()函數中結束。

3.C

4.C

5.C

6.D結構體指針變量p指向a數組的第1個元素,所以“p->x”為20。執(zhí)行“p=p->y”后,p指向數組a的第2個元素,所以輸出15。故本題答案為D選項。

7.C選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達式a=c的值為1,不再對表達式b=c計算;對于c選項,表達式a=c的值為1,再求表達式b=c的值為1,然后進行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。

8.A解析:n--是先使用后自減,--n是先自減后使用。n=4時,執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時,n為2;同上過程,第二次輸出時,n為0。

9.D程序設計是一門技術,需要相應的理論、技術、方法和工具來支持。程序設計的任務包括選項A)、B)、c)等方面。

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

11.C解析:本題涉及C語言基本的3個知識點:①C語言規(guī)定一個程序只允許有一個主函數,一個函數內可以允許有多個花括號;②C程序的注釋部分僅僅是方便程序員閱讀,提高程序的可讀性和可移植性,它并不參與程序的編譯,所以編譯器也就不會發(fā)現注釋中的錯誤。

12.B

13.B

14.Astrcpy實現的功能是復制,該操作把are復制到a中,aE03E33一’&’,且strcpy(aEl],"you")把you復制到a[l]中,故輸出a為“are&you”。

15.D解析:+=、-=、=等符號優(yōu)先級相同結合性是由右至左,所以選D。

16.D解析:在C語言中,凡是以“#”開頭的行都稱為編譯預處理命令行,如#include、#define、#if等,每行的末尾不得用“;”結束,以區(qū)別于C語句、定義和說明語句。選項C中的宏定義為不帶參數的宏命令行,宏名之后可以有替換文本,也可以沒有。編譯預處理是在編譯程序對C源程序進行編譯前執(zhí)行的.當然也在程序執(zhí)行之前執(zhí)行,因此選項D是錯誤的。

17.B由題意可知,T是一個數組指針,即int*[],所以使用T*a定義,可知a屬于int**[\n]類型。本題答案為B選項。

18.C

19.C

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

21.structlist*nextstructlist*next解析:定義的指針類型變量next也應該是結構體類型的。

22.1111解析:本題考核的知識點是printf()函數的輸出格式。本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,9的八進制數的表示為11。

23.92

24.結構結構解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結構進行測試。

25.運行后報錯運行后報錯解析:指針q沒有指向確定的存儲單元,故不能賦值。

26.10410\r\n4解析:結構體變量所占內存長度是各成員占的內存長度之和。每個成員分別占有其自己的內存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

27.概念設計階段(數據庫概念設計階段)概念設計階段(數據庫概念設計階段)

28.strcurlist*strucrlist*return(h)

29.j<=ia[i][j]=a[j][i]j<=i\r\na[i][j]=a[j][i]解析:將矩陣轉置就是將行列互換,所以第一處應填j<=i,第二處應填a[i][j]=a[j][i]。

30.數據結構數據結構解析:Jackson方法是—‘種面向數據結構的結構化方法。

31.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳過對應的輸入數據,所以第二個輸入數200被跳過去了,只有100,300,400三個數被從鍵盤輸入了進來。

32.structnode*structnode*解析:本題中的結構類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結構體指針。

33.c>='a'&&c<='z'c>='a'&&c<='z'解析:小寫字母在內存中以ASCII的形式存入,且從a到z依次遞增,所以可以直接用c>='a'&&c<='z'判斷是不是小寫字母;c!='\\n'判斷是用換行符結束循環(huán)。

34.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:要刪除結點y,只需讓結點x的指針域指向y結點的指針域所指向的后續(xù)結點就可,因此把結點z的地址賦給x的指針域就可以了,即讓結點x的指針域指向結點z。而結點z的地址保存在結點y的指針域中,因此只需把結點y的指針域賦值給結點x的指針域即可。

35.00解析:解答本題需要注意表達式“k=0”,它是賦值表達式而不是關系表達式,不論k為何值,表達式k=0總會使k為0,所以不能進入循環(huán)。

36.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)。

37.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上一個元素存在并有明確值的情況下,這個枚舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進而可知,在printf()打印函數中,要打印的數組元素是aa[3]、aa[1]、aa[2],因此最后的打印結果應當為“DDBBCC”。

38.棧棧解析:棧和隊列都是—種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的—端進行插入或刪除操作,是—種“先進后出”的線性表;而隊列只允許在表的—端進行插入操作,在另—端進行刪除操作,是—種“先進先出”的線性表。

39.9.18274e+0089.18274e+008解析:本題考查的循環(huán)條件是c1<c2,當c1>=c2時,退出循環(huán)。所以,第一次循環(huán)輸出09,第二次循環(huán)輸出18,如此循環(huán)直到輸出45,之后c1=5,c2=4,不滿足循環(huán)條件,退出循環(huán)。

40.存儲結構

41.A解析:源程序文檔化主要包括三個方面的內容:標識符的命名、程序中添加注釋以及程序的視覺組織。

42.D解析:在單向鏈表中,由于每個結點需要存儲下一個結點的地址,且下—個結點的數據類型與前—個結點的數據類型完全相同,故應為structlink*next。

43.A解析:本題考查的重點是sizeof()的運用。sizeof用于返回其操作數(變量、類型)相對應數據類型的字節(jié)數。因此,選項A是錯誤的,因為p是一個地址,它既不是一個數據類型,也不是數據變量。

44.D解析:本題涉及C語言最基本的4個知識點:①C語言程序是由函數構成的,C程序的基本單位是函數;②每個C程序有且只有一個主函數main(),且程序必須從main()函數開始執(zhí)行,但是main()函數可以放在程序中的任意位置;③C語言的書寫格式是自由的,一行可以寫多條語句,一條語句也可以寫在不同的行上;④C語言本身不提供輸入輸出語句,可以通過函數來實現輸入和輸出操作。

45.D解析:時間復雜度是指一個算法執(zhí)行時間的相對度量;空間復雜度是指算法在運行過程中臨時占用所需存儲空間大小的度量。人們都希望選擇一個既省存儲空間、又省執(zhí)行時間的算法。然而,有時為了加快算法的運行速度,不得不增加空間開銷;有時為了能有效地存儲算法和數據,又不得不犧牲運行時間。時間和空間的效率往往是一對矛盾,很難做到兩全。但是,這不適用于所有的情況,也就是說時間復雜度和空間復雜度之間雖然經常矛盾,但是二者不存在必然的聯系。因此,選項A、B、C的說法都是錯誤的。故本題的正確答案是D。

46.C解析:C語言源程序的最小單位是函數,所以本題選C。

47.B(16)B)解析:二維數組的初始化有以下幾種形式:①分行進行初始化。②不分行的初始化。③部分數組元素初始化。④省略第一維的定義,不省略第二維的定義。選項B)等號右邊分了3行,大于等號左邊數組的行數2。

48.B解析:在C語言中,數組的下標默認為0,因此數組p的下標范圍為:0~7。程序循環(huán)過程為:第1次循環(huán)i=0,執(zhí)行循環(huán),并且i自加,得i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語句;接著進行第2次循環(huán),此時i=1,小于7執(zhí)行循環(huán),并且i自加,得i=2,因此p[i]為p[2]=13,13%2=1,執(zhí)行后面的語句;這樣一直到退出循環(huán)。最后j的值為j=13+15+17=45。

49.B解析:字符串復制函數strcpy包含在頭文件string.h中,因此,程序中的第1行文件包含命令是錯誤的。

50.B解析:該題目測試考生對宏替換的理解。這是一種簡單的情況:不帶參數的宏。關鍵要注意在對2*M+1進行宏替換時,要將宏名M原封不動地代進去,得到NUM的形式為2*N+1+1(千萬不要隨意給N+1加上小括號,使NUM變?yōu)?。(N+1)+1,這就是宏名和變量名之間的區(qū)別),在將N代進去,得到NUM的值為6。

51.B解析:prt(a,5);用數組名a作函數實參,不是把a數組的值傳遞給形參m,而是將數組a的首地址傳遞給指針變量m,使指針變量m指向數組a的首地址,這樣他們就占用同一段內存單元。當改變了指針變量所指向的存儲單元中的內容,也就改變了數組a中的元素。函數pit的作用是將指針變量m所指向的存儲單元中的各元素值加1,也就是數組a中各元素的值加l,所以輸出結果為:2,3,4,5,6,

52.B解析:在C中對文件操作必須先打開文件,待文件操作完畢后要關閉文件。對文件以讀的方式進行打開操作時,同時會執(zhí)行文件的檢查文件是否存在,不存在將會返回空的文件指針,如果對文件以寫的方式打開時,文件不存在,將會自動創(chuàng)建文件,因此在C中打開文件前不必對其檢查文件是否存在,故答案為B。

53.D解析:考查printf函數的相關知識。如果要一次進行多個變量的定義,則在它們之間要用逗號隔開,因此選項A)和C)錯誤。在選項C)中,變量c是一個浮點型指針,它只能指向一個浮點型數據,不能指向指針變量b,所以正確答案為B)。輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數輸出,所以第一個輸出語句輸出的結果為a,97;第二個輸出語句輸出的結果為k=12。所以選項D)為正確答案。

54.D

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

56.A

57.B解析:棧是限定在二端進行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按照“先進后出”或“后進先出”的原則組織數據的。注意:隊列組織數據的原則是“先進先出”或“后進后出”。注意:數據結構中,棧和隊列組織數據的原則。

58.A解析:標識符是以字母或下劃線開頭,由字母、數字或下劃線組成的字符序列(例如,-max含非法字符-),并且用戶標識符不能與C語言中的32個關鍵字同名(例如,int是關鍵字,不是合法的用戶標識符)。選項B中-max不是字母、數字或下劃線組成的字符序列,故選項B不正確;選項C中3COM不是由字母或下劃線開頭,故選項C不正確;選項D中int為C語言中的關鍵字,故選項D不正確;選項A中全部為合法的標識符,所以,4個選項中選項A符合題意。

59.D解析:本題考核的知識點是while循環(huán)語句的程序分析。在主函數中首先定義了一個數組p并初始化,在while后面括號里的表達式中,i初值為0,當p[i]為偶數時,p[i]%2等于0,根據“&&”運算符的規(guī)則,其表達式為假退出循環(huán),顯然當i=2時,p[i]=14為偶數,此時while后面括號里的毒達式的值為假,退出循環(huán),此時K=p[0]+p[1],即k=11+13。所以最后輸出k為24。所以,D選項為所選。

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

軟件生命周期的主要活動階段為:

①可行性研究和計劃制定。確定待開發(fā)軟件系統的開發(fā)目標和總的要求,給出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成開發(fā)任務的實施計劃。

②需求分析。對待開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統的功能。編寫軟件,規(guī)格說明書及初步的用戶手冊,提交評審。

③軟件設計。系統設計人員和程序設計人員應該在反復理解軟件需求的基礎上,給出軟件的結構、模塊的劃分、功能的分配以及處理流程。

④軟件實現。把軟件設計轉換成計算機可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。

⑤軟件測試。在設計測試用例的基礎上,檢驗軟件的各個組成部分。編寫測試分析報告。

⑥運行和維護。將已交付的軟件投入運行,并在運行使用中不斷地維護,根據新提出的需求進行必要而且可能的擴充和刪改。

61.B

\nwhile語句執(zhí)行如下:

\n當z=3,x=0時,表達式Z-->0&&++x<5為真,z的值變?yōu)?,x的值變?yōu)?,執(zhí)行語句“y=y-1;”,y的值變?yōu)?;

\n當z=2,x=1時,表達式z-->O&&++x<5為真,z的值變?yōu)?,x的值變?yōu)?,執(zhí)行語句“y=y-1;”,y的值變?yōu)?;

\n當z=1,x=2時,表達式z-->0&&++x<5為真,z的值變?yōu)?,X的值變?yōu)?,執(zhí)行語句“y=y-1;”,y的值變?yōu)?;

\n當z=0,x=3時,表達式z-->0為假,表達式(Z-->O&&++x<5)為假,z的值為-1,不進行++x<5的判斷,不執(zhí)行語句y=y-1;;

\n所以x的值為3,y的值為2,z的值為-1。答案為B。

\n

62.B本題考查do-while語句和if…else語句。do-while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=1,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-1,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=0,不滿足while循環(huán)條件,結束循環(huán)。所以選項B正確。

63.CC。【解析】結構化分析方法是面向數據流進行需求分析的方法,采用自頂向下

溫馨提示

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

評論

0/150

提交評論