2021-2022年山東省德州市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第1頁
2021-2022年山東省德州市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第2頁
2021-2022年山東省德州市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第3頁
2021-2022年山東省德州市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第4頁
2021-2022年山東省德州市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年山東省德州市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.C語言中函數返回值的類型是由()決定的。

A.return語句中的表達式類型B.調用該函數的主調函數類型C.定義函數時所指定的函數類型D.以上說法都不正確

2.有以下程序:

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

A.4321098765B.5678901234C.0987654321D.0987651234

3.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

4.有下列二叉樹.對此二叉樹前序遍歷的結果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

5.設散列表長m=14,散列函數H(K)=K%11,已知表中已有4個結點:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關鍵字為49的結點地址是_____。

A.8B.3C.5D.9

6.關系R和關系S的并運算是______。

A.由關系R和關系S的所有元組合并組成的集合,再刪去重復的元組

B.由屬于R而不屬于S的所有元組組成的集合

C.由既屬于R又屬于S的元組組成的集合

D.由R和S的元組連接組成的集合

7.若已定義x和y為double類型,則表達式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5

8.在定義inta[5][6];后,數組a中的第10個元素是()。(設a[0][0]為第一個元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

9.以下選項中,不能作為合法常量的是

A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0

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

A.棧是一種先進先出的線性表B.隊列是一種后進先出的線性表C.棧與隊列都是非線性結構D.以上三種說法都不對

11.有以下程序執行后的輸出結果是()。A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5

12.下列語句中,說法正確的是______。

A.C程序書寫格式嚴格,每行只能寫一個語句

B.C程序書寫格式嚴格,每行必須有行號

C.C程序書寫格式自由,每行可以寫多條語句,但之間必須用逗號隔開

D.C程序書寫格式自由,一個語句可以分寫在多行

13.設有定義“inta=3,b,*p=&a”,則下列語句中使b不為3的語句是______。

A.b=*&a;B.b=*p;C.b=a;D.b=*a;

14.在數據管理技術的發展過程中,經歷了人工管理階段、文件系統階段和數據庫系統階段。其中數據獨立性最高的階段是()。

A.數據庫系統B.文件系統C.人工管理D.數據項管理

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

A.算法的時間復雜度是指算法在執行過程中基本運算的次數

B.算法的時間復雜度是指算法執行所需要的時間

C.算法的時間復雜度是指算法執行的速度

D.算法的復雜度是指算法控制結構的復雜程度

16.算法分析的目的是()。

A.找出數據結構的合理性B.找出算法中輸入和輸出之間的關系C.分析算法的易懂性和可靠性D.分析算法的效率以求改進

17.遞歸式的先序遍歷一個n節點,深度為d的二叉樹,則需要??臻g的大小為()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

18.有下列程序:程序執行后的輸出結果是()。A.Sun,f,90,Sun,f,90

B.Zhao,m,85,Sun,f,90

C.Zhao,m,85,Qian,f,95

D.Sun,f,90,Qian,f,95

19.假設在程序中a、b、c均被定義成整型,所賦的值都大于1,則下列能正確表示代數式1/abc的表達式是()。A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c

20.

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

22.性結構中,隊列的操作順序是先進先出,而棧的操作順序是______。

23.指針變量p和數組a的說明如下:

int*a[3]={"aa","bb","cc"},**p;

執行語句p=&a[2];后,*p指向的字符串是______。

24.若有如下結構體說明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請填空,以完成對t數組的定義,t數組的每個元素為該結構體類型。

【】t[20]

25.以下程序實現帶有頭結點的單鏈表的建立,鏈表中每個結點包含數據域data(字符型)和指針域next,所建立鏈表的頭指針由參數phd傳回調用程序。在空格處填入正確內容。

#include<stdio.h>

#include<stdlib,h>

structnode{

chardata;

structnode*next;

};

voidcreatlist(【】)

{

charch;

structnode*s,*r;

*phd=malloc(sizeof(structnode));

r=*phd;

ch=getchar();

while(ch!='@'){

s=malloc(sizeof(structnode));

s->data=ch;

r->next=s;

r=s;

ch=getchar();

};

r->next=【】;

}

main()

{

structnode*head;

head=NULL;

creatlist(【】)

}

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

28.下述函數統計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

29.以下程序中,函數SumColumMin的功能是:求出M行N列二維數組每列元素中的最小值,并計算它們酌和值。和值通過形參傳回主函數輸出。請填空。

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{

inti,i,k,s;0;

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

{

k=0;

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

if(a[k][i]>a[j][i])

k=j;

s+=______;

}

______=s;

}

main()

{

intx[M][N]={3,2,5,1,4,1,8,3),s;

SumColumMin(______);

printf(“%d\n”,s);

}

30.函數my_cmp()的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當s<t時返回負值。請填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

31.下面程序的輸出結果是()。#include<stdio.h>main(){staticchara[]="zhao",b[]="juan";char*ptr1=a,*ptr2=b;intk;for(k=0;k<4;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));}

32.數據庫系統在其內部分為三級模式,即概念模式、內模式和外模式。其中,【】給出了數據庫物理存儲結構和物理存取方法。

33.設有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結果是【】。

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

#defineLEN5

inta[LEN],k;

main()

{fun1();

fun2();

}

fun1()

{for(k=0;k<LEN;k++)

a[k]=k;

}

fun2()

{intk;

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

printf("%d",*(a+k));

}

35.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

36.若有以下程序:

intf(intx,inty)

{

return(y-x)*x;

}

main()

{

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

d=f(f(3,4),f(3,5));

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

}

執行后輸出的結果是【】。

37.下面定義的結構體類型包含3個成員,其中成員變量x用來存入整型數據,成員變量y用來存入實型數據,成員變量next是指向自身結構體的指針。請將定義補充完整。

structstu

{intx;

【】

【】next;}

38.常用的黑箱測試有等價分類法、【】、因果圖法和錯誤推測法4種。

39.關系操作的特點是______操作。

40.若有以下程序:

main()

{intp,a=5;

if(p=a!=0)

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

else

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

執行后的輸出結果是【】。

三、1.選擇題(20題)41.若有以下說明和定義:typedefint*INTEGER;INTEGERp,*q;以下敘述正確的是()A.p是整型變量

B.p是基類型為整型的指針變量

C.q是基類型為整型的指針變量

D.程序中可用INTEGER代替int類型名

42.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運行后的輸出結果是(選項D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No

43.數據庫管理系統提供給用戶的接口是()

A.過程化語言B.數據庫語言C.宿主語言D.面向對象語言

44.執行下列語句的結果為______。i=3;printf("%d,",++i);printf("%d",i++);

A.3,3B.3,4C.4,3D.4,4

45.若有下面的程序片段:

int[12]={0},*p[3],**pp,i;

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

p[i]=&a[i*4];

pp=p;

則對數組元素的錯誤引用是

A.pp[0][1]B.a[10]C.p[3][1]D.*(*(p+2)+2)

46.有以下程序

#include<stdio.h>

voidfun(int*s,intn1,intn2)

{inti,j,t;

i=n1;j=n2;

while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);fun(a,4,9);fun(a,0,9);

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

}

程序的運行結果是

A.0987654321B.4321098765C.5678901234D.0987651234

47.若要用函數fopen打開一個新的二進制文件,該文件要既能讀也能寫,則應以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

48.字符串"\\\"ABCDEF\"\\"的長度是()。

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

49.樹是結點的集合,它的根結點數目是()。

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

50.若有下列定義(設int類型變量占2個字節):floatx=123.4567;則下列語句:printf("x=%5.2f",x);輸出的結果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

51.當k的值不為0時,在下列選項中能夠將k的值賦給變量m,n的是

A.m=k=n

B.(m=k)&&(n=k)

C.(m=k)||(n=k)

D.(k=m)&&(n=k)

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

A.操作數乘以2B.操作數除以2C.操作數除以4D.操作數乘以4

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

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

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

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

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

54.閱讀下面程序,則程序段的功能是#include"stdio.h"main(){intc[]={23,1,56,234,7,0,34},i,j,t;for(i=1;i<7;i++){t=c[i];j=i-1;while(j>=0&&t>c[j]){c[j+1]=c[j];j--;}c[j+1]=t;}for(i=0;i<7;i++)printf("%d",c[i]);putchar('\n');}

A.對數組元素的升序排列B.對數組元素的降序排列C.對數組元素的倒序排列D.對數組元素的隨機排列

55.執行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},(4,5,6}};intm,*p;p=&a[0][0];m=p[4];

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

56.設有以下說明語句structex{intX;floaty;charz;}example;則下面的敘述中不正確的是

A.struct結構體類型的關鍵字

B.example是結構體類型名

C.x,y,z都是結構體成員名

D.structex是結構體類型名

57.開發軟件所需高成本和產品的低質量之間有著尖銳的矛盾,這種現象稱做

A.軟件投機B.軟件危機C.軟件工程D.軟件產生

58.有以下程序:main(){intx=0xFFFF;printf("%d\n",x--);}執行后的輸出結果是()

A.32767B.FFFEC.-1D.-32768

59.兩個或兩個以上的模塊之間關聯的緊密程度稱為______。A.耦合度B.內聚度C.復雜度D.數據傳輸特性

60.若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結果是()。

A.0,0B.0,1C.1,1D.程序進入無限循環

四、選擇題(20題)61.

62.結構化分析可以使用的工具是()。

A.N—s圖B.DFD圖C.PAD圖D.程序流程圖

63.簡單的交換排序方法是()。

A.快速排序B.選擇排序C.堆排序D.冒泡排序

64.

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

B.軟件從需求分析、設計、實現到測試完成的過程

C.軟件的開發過程

D.軟件的運行維護過程

66.有以下程序:

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

A.AbcdefB.ABCDEFC.aBcDeFD.AbCdEf

67.有以下程序

68.

69.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的運行結果是()。A.A.AfternoonB.fternoonC.MorningD.orning

70.

71.下面屬于黑盒測試方法的是()。

A.邊界值分析B.路徑覆蓋C.語句覆蓋D.邏輯覆蓋

72.

73.已知大寫字母A的ASCII碼是65,小寫字母a的ACSII碼是97。下列能將變量C中的大寫字母轉換為對應小寫字母的語句是()。

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

74.(48)軟件調試的目的是()

A.發現錯誤

B.改正錯誤

C.改善軟件的性能

D.挖掘軟件的潛能

75.有以下程序:

則以下函數調用語句錯誤的是()。

A.

B.

C.

D.

76.

77.若有以下程序:

上面程序的輸出結果是()。

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

78.有以下程序:

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

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

79.在面向對象方法中,實現信息隱蔽是依靠()。

A.對象的繼承B.對象的多態C.對象的封裝D.對象的分類

80.設有定義

五、程序改錯題(1題)81.下列給定程序中,函數proc()的作用是:將字符串str中的大寫字母都改為對應的小寫字母,其他字符不變。例如,若輸入“abD,dFAD”,則輸出“abd,dfad”。請修改函數proc()中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數據已在主函數中放入結構體數組s中,請編寫函數proc(),它的功能是:函數返回指定學號的學生數據,指定的序號在主函數中輸入。若沒找到指定的學號,在結構體變量中給學號置空串,給成績置-1,作為函數值返回(用于字符串比較的函數是strcmp)。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.B該程序首先給一維數組賦值,然后三次調用fun函數,其中fun(a,0,3);功能是將一維數組中第1個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a.O,9);功能是將將一維數組中第l個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項正確。

3.B本題考查按位異或的用法。按位異或運算的規則是:兩個運算數的相應二進制位相同,則結果為0,相異則結果為1。b=2的二進制為00000010,a=1的二進制為00000001,a=a^b=00000011,轉化為十進制后為3,b=b^a=00000010-00000011=00000001,即1。

4.D

\n所謂二叉樹的前序遍歷是指先訪問根結點,訪問左子樹,最后訪問右子樹,本題中序為DYBEAFCZX,后序為YDEBFZXCA。

\n

5.D

6.A

7.C解析:這是一個逗號表達式,它的值應為表達式y=x+3/2的值,而前一個表達式已給x賦值1,在沒有進行類型轉換的情況下,3/2的值為1,所以x+3/2的值應為2.0。

8.C

9.B解析:C語言的語法規定,字母e(E)之前必須有數字,且e(E)后面的指數必須是整數,而選項B)中,e(E)后面的指數是小數,所以不合法。

10.D【答案】:D

【知識點】:棧和隊列

【解析】:棧和隊列都是線性結構,所以選項C錯誤;棧是一種先進后出的線性表,故選項A錯誤;隊列是一種先進先出的線性表,故選項B錯誤,所以選D。

11.B

12.D

13.D

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

15.A算法的時間復雜度是指執行算法所需要的計算工作量,其計算工作量是用算法所執行的基本運算次數來度量的。本題答案為A選項。

16.D解析:算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應的數量級,常用時間復雜度和空間復雜度表示。分析算法的目的就是要降低算法的時間復雜度和空間復雜度;提高算法的執行效。率。

17.D

18.A程序定義結構體類型STU,定義類型STU的全局變量a。main函數定義局部類型為STU變量b,并對它初始化,調用函數f。將局部變量c的各個成員值賦給a,覆蓋a的舊值,將a的新值返回并賦給b,此時a、b的各個成員值都是Sun,f,90,程序輸出:Sun,f,90,Sun,f,90。本題答案為A選項。

19.D

20.A

21.k=5k=5解析:本題主要考查了函數的遞歸調用方法。g=0或\ue008g=1\ue009或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結果。

22.先進后出先進后出解析:隊列和棧都是線性結構,但是不同之處在于隊列的操作順序是先進先出,而棧的操作順序是先進后出。

23.cc。cc。解析:a是指針數組,每個數組元素存放的是字符數據的地址,數組a的3個元素分別指向字符串常量'aa'、'bb'和'cc',指針p賦予數組元素a[2]的值,即指向第3個字符串。

24.strudctSTRUstrudctSTRU解析:結構件類型是構造數據類型,是用戶自己定義的一種類型。

結構體類型的定義:

struct結構體類型名

{

成員項表;

};

定義結構體變量的的形式為:

struct結構體類型名變量1,變量2,...?

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

25.structnode**phdNULL&head

26.99解析:本題要輸出的結果是字符串'IBM\\n012\\1\\\\'的長度,'IBM'是3個字符,\'\\n\'是1個字符,'012'又是3個字符,最后的\'\\1\'和\'\\\\\'都是1個字符。所以最終字符串的長度應該是3+1+3+1+1=9。故本題應該填9。

27.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執行后面的語句,直接執行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。

28.*s++flag==0或*(s-1)==''num*s++\r\nflag==0或*(s-1)==''\r\nnum解析:在統計字符串單詞個數的算法中,本題的flag是為了記錄一個單詞是否結束。第18空應填*s++;如果某個字符不是空格,則必需判斷它是否是單詞,如是,則使得flag的標志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是一個單詞的開始,將flag標志為1,num的值加1,如果不是,則不必記錄。故第19空應flag==0或*(s-1)=='';最后一個空格需填寫的是返回的單詞的個數,即num。

29.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:本題考核的知識點是C程序的綜合應用。本題中定義了一個函數SumColumMin(),該函數有兩個參數,第一個參數為數組名,第二個參數為一個指針,用來訪問存放數組中每列元素中的最小值的存儲空間的變量。所以在主函數中調用SumColumMin()函數,應該將數組x和sum作為實參傳給SumColumMin()中的形參,故第20個空格處應該填x,&s。在SumColumMin()函數中用了兩重循環,用N記錄數組的列,M記錄數組的行。內循環共循環了M次,每循環一次將a[k][i]比較a[j][i](當k=0時,a[k][i]第一行第一列的值,然后將該值依次和第一列中的每個值比較,讓a[k][i]表示較小的值,那么比較到最后一個元素后a[k][i]就是改列中最小元素的值),讓k記錄較小值元素的行下標,這樣通過M次循環得到每列中的最小元素,然后退出內循環,繼續執行該次外循環里的其他語句,即將剛求得第i列的最小值a[k][i]累加到s中,故第18個空格處應該填a[k][i],最后外循環共循環N次,將每列得最小值累加到s中,退出循環,然后讓指針sum所指向得存儲空間得值為s敲第19個空格處應該填*sum。

30.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應字符相等情況下循環,直至不相等結束。相等時,若字符串已到了字符串的結束標記符,則兩字符串相同,函數返回0值;如還有后繼字符,則準備比較下一對字符。對應字符不相同,循環結束。循環結束時,就以兩個當前字符的差返回。所以在空框處應填入*s-*t,保證在e>t時返回正值,當s<t時返回負值。

31.aa解析:本程序先將指針ptr1和ptr2分別指向字符數組a和b,然后通過指針的移動比較a和b中是否有相同的字符。若有相同的字符則將其輸出。

32.內模式內模式解析:內模式又稱為物理模式,它給出了數據庫物理存儲結構與物理存取方法。

33.16

34.01234。01234。解析:函數fun1給數組a的每個元素賦值,fun2則輸出結果。

35.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作用機制和區別。

36.99解析:在主函數中函數f(f(3,4),f(3,5))的返回值賦給do函數的第一個參數為f(3,4)的返回值,函數f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數f(f(3,4),f(3,5))等價于函數f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。

37.floaty;structstu*floaty;\r\nstructstu*解析:float定義變量y為實型變量。要求變量next是指向自身結構體的指針,因此變量next應該是結構體stu的指針型變量。

38.邊值分析法邊值分析法解析:本題考查了黑箱測試的方法。黑箱測試方法完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法。

39.集合集合

40.11解析:本題考查C語言中的if-else語句。if語句中的條件表達式p=a!=0是一個賦值語句,將關系表達式a!=0的結果賦值給變量p。因a=5,所以a!=0的結果為1,即p=1,條件為真,所以執行if后面的語句printf('%d\\n',p),輸出結果為1。

41.B本題中INTEGER被定義為int*的別名,故直接由它定義的類型基類型為整型的指針變量。因此,p是基類型為int的指針變量,q是int型指針的指針變量。故4個選項中B正確。

42.B本題考核的知識點是puts()函數的應用。主函數中定義了一個字符數組s并賦初值,一個字符串指針變量ps并讓它指向s。程序中p+4的地址為數組第5個元素的地址,而調用put(str_adr)函數時,將從str_adr這一地址開始,依次輸出存儲單元中的字符,遇到第一個“\\0”時結束輸出,并自動輸出一個換行符。所以put(p++4)將輸出n/No,put(s)將從s第一個元素開始輸出到第3個元素結束(因為執行*(p4)c0語句后s中的第5個元素的值為0,而s中的第4個元素為“\\”,puts將遇到“\\0”,結束輸出),即輸出yes。所以,4個選項中選項B符合題意。

43.C

44.D

45.C解析:考查指向數組的指針。本題綜合考查一維數組和多維數組指針變量的表示方法。在C語言中,引用數組元素的方法有兩種,即下標法和指針法。下標法如a[i]形式;指針法如*(a+i)或*(p+1)。其中,a是數組名,p是指向數組的指針變量,其初值p=a。再如*(*(p+2)+2)是a[2][2]的值,注意語句中指針型數組的書寫格式,不能寫成'(*數組名)[長度]',因為這是定義指向含有'長度'個元素的一維數組的指針變量。例如有定義語句'inta,b,c,c,*p[3]={&a,&b,&c};',它定義了一個名為p的指針型數組,其3個元素p[0],p[1],p[2]分別指向f3個整型變量a,b,c。

46.C解析:函數fun(int*s,intn1,intn2)的功能是對數組s中的元素進行首尾互相調換。所以在主函數中,當fun(a,0,3)執行完后,數組a[12]={4,3,2,1,5,6,7,8,9,0};再執行fun(a,4,9),數組a[12]={4,3,2,1,0,9,8,7,6,5};再執行fun(a,0,9)后,數組a[12]={5,6,7,8,9,0,1,2,3,4}。

47.B解析:本題考查文件使用方式標識符。方式“wb”為輸出打開一個二進制文件;方式“wb+”為讀寫建立一個新的二進制文件;方式“rb+”為讀寫打開一個二進制文件:方式“rb”為輸入打開一個二進制文件。

48.B解析:本題涉及字符串最基本的兩個概念:①字符串的長度是指字符串中字符的個數,但不包括字符串結束符;②以反斜杠“\\”開頭的特殊字符序列,意思是把反斜杠后面的字符序列轉換成特定的含義,而不是原來的含義,不包含在字符串長度之內,“\\”連同后面的字符為一個長度。

49.A樹形結構是一類重要的非線性數據結構。樹是n(n≥0)個結點的集合,對應任意一棵非空樹,它具有以下幾點重要的性質。

①有且僅有一個特定的稱為根的結點。

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

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

50.A解析:本題考查printf函數的格式?!?5.2f”格式符中的“f”表示以帶小數點的形式輸出單精度或者雙精度數:“5”表示指定數據輸出寬度為5;“.2”表示指定輸出數據小數位占2位數,并對截去的第一位小數做四舍五入處理。

51.B解析:&&,‖在某種情況下會實行“短路規則”,即當邏輯與前面一個表達式的值為假的時候,后面一個表達式就不需要計算,這個邏輯表達式一定為假;當邏輯或前面一個表達式為真的時候,后面一個表達式就不需要計算,這個邏輯或表達式一定為真。選項A)是將n的值賦值給m和k。選項C)就是進行了短路規則,當m=k賦值后,m得到的新值不為0,即為真,邏輯或后面的表達式就不被計算,所以n沒有被賦值。D)答案沒有什么意義。

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

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

54.B解析:讀懂兩個循環的關系,是解這個題目的關鍵,本題的第一個for循環的作用是實現對數組元素的遍歷,第二個循環的作用是排序。while(j>=0&&t>c[j]),這個語句是控制排序的關鍵語句,它即實現了比較兩個元素大小的作用,又實現了元素向后移動的作用,不斷地把大的數據向前移動,直到找到一個比它小的,或到數據的上界為止。

55.B解析:程序中定義了一個指向整型變量的指針變量,并對其賦值為二維整型數組a的首元素的地址。P[4]等價于*(p+4),即二維數組a中第四個元素的值,而a是一個2*3的二維數組,其第四個元素為a[1][1],即5。

56.B解析:本題中,structex是結構體類型名,ex-ample是結構體變量名。

57.B解析:軟件工程概念的出現源自軟件危機。所謂軟件危機是泛指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。總之,可以將軟件危機歸結為成本、質量、生產率等問題。

58.C

59.A解析:耦合度是對模塊間互相連接的緊密程度的度量;內聚度是對一個模塊內部各個元素間彼此結合的緊密程度的度量。

60.B解析:對于do…while循環,程序先執行一次循環體,再判斷循環是否繼續。本題先輸出一次i的值“0,”,再接著判斷表達式i++的值,其值為0,所以循環結束。此時變量i的值經過自加已經變為1,程序再次輸出i的值“1”。

61.B

62.B\n數據流圖(DFD)、數據字典、判定表和判定樹是結構化分析常用的工具。程序流程圖、N—S圖、

溫馨提示

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

評論

0/150

提交評論