2022-2023年云南省昆明市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2022-2023年云南省昆明市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2022-2023年云南省昆明市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2022-2023年云南省昆明市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2022-2023年云南省昆明市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2022-2023年云南省昆明市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在數據結構中,從邏輯上可以把數據結構分為()。A.動態結構和靜態結構B.緊湊結構和非緊湊結構C.線性結構和非線性結構D.內部結構和外部結構

2.設有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執行以下語句后,z的值為______。z=2*(N+Y(5+1));A.出錯B.42C.48D.54

3.在一棵高度為5的理想平衡樹中,至少含有16個結點,最多含有()個結點。

A.31B.32C.30D.33

4.以下程序的主函數中調用了在其面前定義的fun函數#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項中錯誤的fun函數首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

5.下列說法錯誤的是______。

A.關系中每一個屬性對應一個值域

B.關系中不同的屬性可對應同一值域

C.對應同一值域的屬性為不同的屬性

D.DOM(A)表示屬性A的取值范圍

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

A.可以給指針變量賦一個整數作為地址值

B.函數可以返回地址值

C.改變函數形參的值,不會改變對應實參的值

D.當程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL值

7.

8.設單鏈表中結點的結構為非空的循環單鏈表first的尾結點(由p所指向)滿足:______A.p->link==NULL;B.p==NULL;C.p->link==first;D.p==first;

9.請選出以下程序的輸出結果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

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

A.在C語言中,預處理命令行都以“#”開頭

B.預處理命令行必須位于c源程序的起始位置

C.#include<stdi0.h>必須放在C程序的開頭

D.C語言的預處理不能實現宏定義和條件編譯的功能

11.C語言中的變量只能由字母、數字和下劃線組成,且第一個字符()。

A.必須是字母B.必須是下劃線C.必須是下劃線和字母D.可以是字母.數字或下劃線中任一一種

12.下列定義數組的語句中正確的是()。

A.#defmeN10intx[N];

B.intN=10;intx[N];

C.intx[0..10];

D.intx[];

13.下列敘述中錯誤的是()。A.在數據庫系統中,數據的物理結構必須與邏輯結構一致,

B.數據庫技術的根本目標是要解決數據的共享問題

C.數據庫設計是指在已有數據庫管理系統的基礎上建立數據庫

D.數據庫系統需要操作系統的支持

14.

15.以下是根據文件大小分配存儲空間的一個算法偽代碼,請問其空間復雜度是多少()A.O(n)B.O(n^2)C.O(2^n)D.O(n*log(n))

16.第

2

現有如下程序段

#include"stdio.h"

main()

{intk[30]={12,324,45,6,768,98,21,34,453,456};

intcount=0,i=0;

while(k[i])

{if(k[i]%2==0‖k[i]%5==0)count++;

i++;}

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

則程序段的輸出結果為

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

17.有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-′a′+′A′;

s++;}}

main()

{charstr1[100]="abcddfefdbd",c=′d′;

ss(str1,c);printf("%s\n",str1);}

程序運行后的輸出結果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

18.結構化程序設計的3種結構是()。

A.順序結構、選擇結構、轉移結構

B.分支結構、等價結構、循環結構

C.多分支結構、賦值結構、等價結構

D.順序結構、選擇結構、循環結構

19.能正確表示x>=3或者x<1的關系表達式是()。

A.x>=3orx<1B.x>=3|x<1C..x>=3||x<1D.x>=3||x<1

20.

二、2.填空題(20題)21.有以下程序:

voidswap1(intc[])

{intt;

t=c[0];c[0]=c[1];c[1]=t;

}

voidswap2(intc0,intc1)

{intt;

t=c0;c0=c1;c1=t;

}

main()

{inta[2]={3,5},b[2]={3,5};

swaplA);swap2(b[0],b[1]);

printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);

}

其輸出結果是【】。

22.現有如下定義:structaa{inta;floatb;charc;}*p;現需用malloc函數動態的申請一個structaa類型大小的空間(由p指向),則定義的語句為:【】。

23.下面程序的功能是將一個字符串str的內容倒序,請填空。

#inelude<stdio.h>

#include<strins.h>

main()

{inti,j,【】;

charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

}

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

25.瀑布模型將軟件生存周期劃分為【】、開發和運行3個階段。

26.分析下列程序:

main()

{intx=1,y=0,a=0,b=0;

switch(a)

{case1:switch(b)

{case0:x++;

case1:y++;break;

}

case2:x++;y++;break;

}

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

}

運行程序的輸出結果是______。

27.一棵二叉樹中共有80個葉子結點與10個度為1的結點,則該二叉樹中的總結點數為【】。

28.請讀程序片段:

inta=17;

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

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

29.閱讀下面程序,則執行后的輸出結果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

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

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

}

}

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

#include<stdio.h>

main()

{inta=0;

a+=(a=8);

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

}

32.若有函數max(a,b),為了讓函數指針變量p指向函數max,當調用該函數時,正確的賦值方法是

33.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結果是【】。

main()

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

p=a;

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

printf("%x\n,p+9);

}

34.下列語句使指針p指向一個double類型的動態存儲單元。

p=【】malloc(sizeof(double));

35.在樹形結構中,樹根結點沒有______。

36.在C語言中,while和do…while循環的主要區別是______的循環至少被執行一次。

37.以下程序運行后的輸出結果是______。

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

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

}

main()

{

intx=2,y=3;

fun(x,y);

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

}

38.可以把具有相同屬性的一些不同對象歸類,稱為【】。

39.在算法正確的前提下,評價一個算法的兩個標準是【】。

40.當數據的物理結構(存儲結構)改變時,不影響數據庫的邏輯結構,從而不致引起應用程序的變化,這是指數據的【】。

三、1.選擇題(20題)41.已知函數fread的調用形式為fread(buffer,size,count,fp);其中buffer代表的是()。

A.存放讀入數據項的存儲區

B.一個指向所讀文件的文件指針

C.一個指針,是指向輸入數據存放在內存中的起始地址

D.一個整型變量,代表要讀入的數據項總數

42.在數據管理技術發展過程中,文件系統與數據庫系統的主要區別是數據庫系統具有

A.特定的數據模型B.數據無冗余C.數據可共享D.專門的數據管理軟件

43.以下錯誤的定義語句是A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D.intx[][3]={1,2,3,4};

44.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序

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

#include<stdio.h>

voidfun(int*s,int*p)

{staticintt=3;

*p=s[t];

t--;

}

voidmain()

{inta[]={2,3,4,5},k;

intx;

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

{fun(a,&x);

printf("%d,",x);

}

}

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

46.若有以下定義和語句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則不能表示a數組元素的表達式是______。

A.*pB.a[10]C.*aD.a[p-a]

47.有以下程序

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

程序的運行結果是

A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1

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

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

49.下列程序的輸出結果是()。main(){inta=1,b=2;printf("%d,%d\n",--a,++b);}

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

50.若變量a是int類型,并執行了語句:a='A'+1.6;,則正確的敘述是

A.a的值是字符CB.a的值是浮點型C.不允許字符型和浮點型相加D.a的值是字符‘A’的ASCII值加上1

51.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結果是______。

A.0B.4C.6D.7

52.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數為

A.log2nB.n2C.O(n1.5)D.n(n-1)/2

53.設有如下程序段:main(){chars[4][20];inti;scanf("%s%s",s[0],s[1]);gets(s[2]);gets(s[3]);for(i=0;i<4;i++)puts(s[i]);}輸入數據如下:(此處<CR>代表回車符)aabb<CR>ccdd<CR>則程序的輸出結果是______。

A.aabbccddB.aabbccddC.aabbccddD.aabbccdd

54.下列關系模型中,能使經運算后得到的新關系中屬性個數多于原來關系中屬性個數的是

A.選擇B.連接C.投影D.并

55.以下程序的運行結果是#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti=10,j=15,kk=10*MIN(i,j);printf("%d\n",k);}

A.10B.15C.100D.150

56.若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態存儲單元int*pp=______malloc(sizeof(int));則應填入______。

A.intB.int*C.(*int)D.(int*)

57.在C語言中,函數的隱含存儲類別是______。

A.autoB.staticC.externD.無存儲類別

58.從工程管理角度,軟件設計一般分為兩步完成,它們是()。

A.概要設計與詳細設計B.數據設計與接口設計C.軟件結構設計與數據設計D.過程設計與數據設計

59.有以下程序:voidfun(inta,intb,intc){a=456,b=567,c=678;}main(){intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出結果是

A.30,20,10B.10,20,30C.456,567,678D.678,567,456

60.設已執行預編譯命令#include<string.h>,以下程序段的輸出結果是

chars[]="anapple";

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

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

四、選擇題(20題)61.軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件),下面屬于系統軟件的是()。A.學生管理系統B.C語言編譯程序C.UNIX操作系統D.數據庫管理系統

62.有以下程序

voidfun(inta,intb,intc)

{

a=456,b=567,c=678;

}

main()

{

intx=10,y=20,z=30;

fun(x,y,z);

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

}

輸出結果是

A.10,20,30B.30,20,10

C.456,567,678D.678,567,456

63.下列字符數組初始化語句中,不正確的是()。A.A.charc[]='goodmorning';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d');

D.charc[]={"ffgoodmorning"};

64.4個元素A、B、C、D依次入棧,入棧過程中允許棧頂元素出棧,假設某一時刻棧的狀態是C(棧頂)、B、A(棧底),則不可能的出棧順序是()。

A.D、C、B、A

B.C、B、D、A

C.C、A、D、B

D.C、D、B、A

65.有以下程序:

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

A..3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,lD.6,6,6,6,6,6,

66.按照“先進后出”原則組織數據的結構是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

67.有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序的運行結果是

A.9B.編譯出錯

C.21D.9.0

68.若有下的定義:"intt[3][2];",能正確表示t數組元素地址的表達式是()。

A.&t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

69.有如下程序段

structabc

{inta,b,c,s;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;

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

}

程序運行后輸出的結果是

A.5B.6

C.7D.8

70.

71.

72.

73.

74.

75.已知大寫:字母A的ASCIl碼是65,小寫字母a的ASCIl碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是()。

76.

77.以下程序段完全正確的是()。

A.int*p;scanf(”%d”,&p);

B.int*p;scanf(”%d”,P);

C.intk,*P:&k;scanf(’’%d”,P);

D.intk,*p;*P=&k;scanf(”%d”,P);

78.

79.以下關于C語言的敘述中,不正確的是

A.C語言中的注釋可以夾在變量名或關鍵字的中間

B.C語言中使用變量必須是先定義后使用

C.C語言表達式運算符兩側的運算數類型必須一致

D.C語言的數值常量中夾帶空格不影響常量值的正確表示

80.待排序的關鍵碼序列為15,20,9,30,67,65,45,90,要按關鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關鍵碼15被放到第()個位置。

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

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:給定n個實數,輸出平均值,并統計平均值以上(含平均值)的實數個數。

例如,n=8時,輸入90.009,179.623,167.575,100.051,6.092,154.986,12.432,45.765,所得平均值為94.566635,在平均值以上的實數個數應為4。

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

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

試題程序:

六、程序設計題(1題)82.下列程序定義了M×M的二維數組,并在主函數中賦值。請編寫函數proc(),函數的功能是:求出數組周邊元素的平均值并作為函數值返回給主函數中的s。例如,若a數組中的值為:21098則返回主程序后,s的值為3.750000。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C數據結構與算法:數據結構的基本概念[評析]邏輯結構反映數據元素之間的邏輯關系,線性結構表示數據元素之間一對一的關系,非線性結構表示數據元素之間一對多或多對一的關系。線性結構和非線性結構是根據數據元素之間關系的不同特性加以分類的,即是從邏輯上加以分類的。

2.D

3.A

4.A由題可知fun的參數為變量,而a[15]為常量,所以答案為A。

5.C解析:關系中每一個屬性都有一個取值范圍,稱為屬性的值域。每—個屬性對應一個值域,不同屬性可對應同一個值域。對應同一值域的卻不一定是不同的屬性。屬性的值域用DOM(A)表示,A表示屬性的名稱。

6.A不能將一個整數直接賦給指針變量作為地址值,A選項錯誤。函數的返回值可以是地址,即指針。函數調用中形參值的變化不會傳遞給實參。故本題答案為A選項。

7.D

8.C

9.B

10.A預處理命令是以“#”號開頭的命令,它們不是C語言的可執行命令,這些命令應該在函數之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、c錯誤。C語言的預處理能夠實現宏定義和條件編譯等功能,所以D錯誤。

11.C

12.A數組定義的一般形式為:類型說明符數組名[常量表達式]。B選項中N是變量,不能用變量定義數組長度。C選項中數組長度是一串非法的數字。定義數組時必須為其指明長度,D選項中的數組長度為空,所以非法。故本題答案為A選項。

13.A解析:本題考查數據庫系統的基本概念和知識。數據的邏輯結構,是數據間關系的描述,它只抽象地反映數據元素之間的邏輯關系,而不管其在計算機中的存儲方式。數據的存儲結構,又叫物理結構,是邏輯結構在計算機存儲器里的實現。這兩者之間沒有必然的聯系。因此,選項A的說法是錯誤的。

數據庫可以看成是長期存儲在計算機內的、大量的、有結構的和可共享的數據集合。因此,數據庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數據庫,可以取出它們所需要的子集,而且容許子集任意重疊。數據庫的根本目標是要解決數據的共享問題。因此,選項B的說法是正確的。

數據庫設計是在數據庫管理系統的支持下,按照應用的要求,設計一個結構合理、使用方便、效率較高的數據庫及其應用系統。數據庫設計包含兩方面的內容:一是結構設計,也就是設計數據庫框架或數據庫結構;二是行為設計,即設計基于數據庫的各類應用程序、事務等。因此,選項C的說法是錯誤的。

數據庫系統除了數據庫管理軟件之外,還必須有其他相關軟件的支持。這些軟件包括操作系統、編譯系統、應用軟件開發工具等。對于大型的多用戶數據庫系統和網絡數據庫系統,還需要多用戶系統軟件和網絡系統軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。

14.B

15.C

16.D

17.B解析:在內存中,字符數據以ASCII碼存儲,它的存儲形式與整數的存儲形式類似。C語言中,字符型數據和整型數據之間可以通用,也可以對字符型數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算,在本題中,s++相當于s=s+1,即讓s指向數組中的下一個元素。

18.D結構化程序設計的基本要點:①采用自頂向下、逐步求精的程序設計方法;②任何程序都可由順序、選擇和循環3種基本控制結構構造。

19.C

20.C

21.53355335解析:函數swap1的形參是數組,故形參的改變能夠影響實參,所以執行完swap1(a)后,a[0]=5、a[1]=3;函數swap2的形參是簡單變量,故形參的改變不能夠影響實參,所以執行完swap2(b)后,b[0]=3、b[1]=5;正確答案為5335。

22.p=(structaa*)malloc(sizeof(structaa));p=(structaa*)malloc(sizeof(structaa));解析:ANSIC標準規定malloc函數的返回值類型為void*,函數的調用形式為:malloc(size)要求size的類型為unsignedint。由于返回類型為void*,所以在調用函數時,必須利用強制轉換將其轉換為所需要的類型。

23.k-1k-1解析:第一處應該是定義的某個變量,讀程序可知,變量k沒有定義,所以此處應填入k。字符串的倒序,就是將首尾對應的字符(數組元素)兩兩交換。可用兩個游標變量i和j分別代表前端元素的下標和后端元素的下標,交換以這兩個變量值為下標的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(字符串長度減1)。每次交換后,i增1,j減1。繼續交換的條件是str[i]仍然位于str[j]的前面,即i<j。字符串末元素的下標是它的長度減1,所以在第二處應填入-1。

24.可重用性繼承的優點:相似的對象可以共享程序代碼和數據結構,從而大大減少了程序中的冗余,提高軟件的可重用性。

25.計劃計劃解析:瀑布模型是B.W.Boehm于1976年提出的。它將軟件生存周期劃分為計劃、開發、運行3個時期,每個時期又分為若干個階段。

26.x=1y=0。x=1,y=0。解析:本題程序的主體部分是switch語句的嵌套結構,當變量a的值為0時,在第一層switch-case語句中,沒有匹配的case分支。因此,x和y的值沒有變化,仍然是1和0。

27.179179解析:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。本題中的二叉樹有80個葉子結點,因此,該二叉樹有80-1=79個度為2的結點;又知本題中的二叉樹有10個度為1的結點。因此,本題中的二叉樹總結點數為:葉子結點數+度為1的結點數+度為2的結點數=80+10+79=179

28.1721

29.33解析:C語言的語法規定:else子句總是與前面最近的不帶else的if相結合。因為x不大于y,所以執行printf('%d\\n',z);語句。

30.246

31.1616解析:本題中a+=8相當于a=a+8。對表達式逐步進行求解:在a+=(a=8)中,首先a被賦值為8,語句等價于a+=8;即a=a+8;結果為a=16。

32.C

33.1a61a6解析:對于指針變量的運算,就是對地址的運算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節。注意,本題是以十六進制輸出的。

34.(double*)

35.前件前件

36.do…whiledo…while解析:考查while和do…while循環的主要區別。while循環的控制出現在循環體之前,只有當while后面的表達式的值為非零時,才可能執行循環體;在do…while構成的循環體中,總是先執行一次循環體,然后再求表達式的值,因此無論表達式的值是否為零,循環體至少要被執行一次。

37.32233,2,2,3解析:主函數中首先定義了整型變量x和y,并分別給它們賦初值為2和3,接著調用fun()函數,fun()函數把實參x和y的值傳給形式參數x和y,實參和形參不再有聯系.在fun()函數中通過運算使x和y的值交換過來,所以fun()函數中的輸出結果是“3,2”。fun()函數調用返回輸出x和y依舊是原來的x和y,為“2,3”原因是變量作為形參傳值的,對形參的修改并不影響對應的實參。所以最后輸出為3,2,2,3。

38.對象類

39.時間復雜度和空間復雜度時間復雜度和空間復雜度

40.物理獨立性數據獨立性是數據與程序間的互不依賴性,即數據庫中數據獨立于應用程序而不依賴于應用程序。也就是說,數據的邏輯結構、存儲結構與存取方式的改變不會影響應用程序。數據獨立性一般分為物理獨立性與邏輯獨立性兩級。

41.C解析:數據塊讀取函數調用形式:fread(buffer,size,count,fp)。fread函數參數說明:“buffer”是一個指針,對fread來說,它是讀入數據的存放地址。對fwrite來說,是要輸出數據的地址。“size”是要讀寫的字節數:“count”是要進行讀寫多少個size字節的數據項;“fp”是指文件型指針。

42.A解析:在文件系統中,記錄是相互獨立的,其內部結構的最簡單形式是等長同格式記錄的集合,易造成存儲空間大量浪費,不方便使用。而在數據庫系統中,數據是結構化的,這種結構化要求在描述數據時不僅描述數據本身,還要描述數據間的關系,這正是通過采用特定的數據模型來實現的。

43.C解析:本題考查的是二維數組的定義和初始化方法。C語言中,在定義并初始化二維數組時,可以省略數組第一維的長度,但是不能省略第二維的長度。故選項C)錯誤。

44.A解析:以下幾種算法的時間復雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當排序元素序列基本有序的情況下,冒泡排序的交換次數為0,只是順序掃描數據而已,所以其效率是最高的。

45.A解析:分析fun函數程序段,可知fun函數要實現的功能是將s中第(t+1)個元素以前的元素逆置賦給數組p。由于fun中函數定義了靜態變量t=3,因此,在主函數中調用函數fun(a,&x)時,就是要將數組a中前4個元素逆置賦給數組x,最后輸出x數組。

46.B解析:程序中定義了數組a[10],則其元素的下標范圍為0~9,而B選項中的a[10]所表示的元素已經超出a數組元素的范圍,故應該選擇B。

47.D解析:本題考查switch語句,首先,x=1符合條件case1,執行switch(y)語句,y=0符合case0語句,執行a++并跳出switch(y)語句,此時a=1。因為case1語句后面沒有break語句,所以向后執行case2語句,執行a++,b++,然后跳出switch(x),得a=2,b=1。

48.A解析:在C語言中,數組元素是從0開始的。指針變量p指向數組的首地址,(p+2)就會指向數組中的第3個元素。題目中要求輸出的是元素的值。

49.D解析:本題主要考查自加(++)、自減(--)運算符的使用。“++i,--i”在使用i之前,先使i的值加1或者減1,然后再使用i此時的值參與運算;“i++,i--”是在使用i參與表達式運算之后,再使i的值加1或者減1。本題中--a和++b是先執行a減1和b加1操作,再輸出表達式的值。

50.D解析:本題考核的知識點是不同變量的類型的混合運算。在C語言中規定允許不同類型的量進行運算,但在運算時需轉換成高級的類型進行運算。在表達式中有字符型和實型參加運算時,統一轉換為實型再運算,當運算結果存入變量時再轉換為該變量的類型。所以,4個選項中D為所選。

51.D解析:在switch語句中,若case語句后沒有break語句,則執行完本層case后會繼續執行后面case中的操作。k的初值為5,while條件成立,進入switch(5),執行default語句,退出switch,執行k--后得4,再進入while循環,執行switch(4),退出switch,再執行k--后得3,繼續while循環,執行switch(3),n=n+k=3,再執行k--后得2,進入while循環,執行case2,再執行n=n+k=5,然后執行k--后得1,最后一次進入while循環,執行case1,n=n+k=6,然后繼續執行case2和case3后的語句,n=n+k=7,且執行k--后得0,此時while條件不滿足,退出循環,輸出n的值為7。

52.D解析:假設線性表的長度為n,則在最壞情況下,冒泡排序要經過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數為n(n-1)/2。

53.C解析:按題目要求輸入數據后,數組的第一行是字符串'aa',第二行是'bb',第三行是'ccdd',第四行沒有接收到字符串。

54.B解析:本題主要考查關系模型中幾種運算的特征。經過選擇或投影運算得到的新關系的屬性個數最多不會超過原關系中的屬性個數。經過連接運算得到的新關系最多不少于原關系中屬性的個數。故選項B正確。

55.B解析:該題考查函數的宏定義及三目運算符。其中表達式10,MIN(i,j)利用宏展開后為:10*<j?i:j,即100<15?10:15,其值為15,然后賦值給k。

56.D解析:不論p是指向什么類型的指針變量,都可以通過強制類型轉換的方法使之類型一致,強制類型轉換的格式為(數據類型*)。

57.C解析:C語言規定,只要在定義函數時不進行存儲類型的顯式說明,函數的存儲類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數調用。

58.A解析:從工程管理的角度看,軟件設計可分為概要設計和詳細設計兩大步驟。概要設計是根據需求確定軟件和數據的總體框架;詳細設計是將其進一步精化成軟件的算法或表示和數據結構。而在技術上,概要設計和詳細設計又由若干活動組成,包括總體結構設計/數據設計和過程設計。因此,本題的正確答案是A。

59.B解析:本題考查函數中變量的作用范圍,在主函數中給變量x,y,z賦值,然后將其作為實參傳遞給了函數fun(),雖然在函數fun()中改變了這3個變量的值,但只是同名的局部變量,不影響函數中變量的值,所以在調用函數fun()結束后,主函數3個變量的值未改變,即形參值的改變不能影響實參的值。注意:順序程序結構的執行過程。

60.B解析:考查了測字符串長度函數strlen。如果一個字符數組中存放一個字符串,則函數strlen的值為'\\0'之前的全部字符個數,也包括空格在內。

61.A

62.A本題考查函數中變量的作用范圍,在主函數中給變量x、y、z賦值,然后將其作為實參傳遞給了函數fun(),雖然在函數fun()中改變了這三個變量的值,但只是同名的局部變量,不影響函數中變量的值。所以,在調用函數fun()結束后,主函數三個變量的值未改變,即形參值的改變不能影響實參值。

63.A本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②℃語言中沒有字符串變量,只能用字符數組來存儲字符串。

64.C棧的特點是先進后出,所以后入棧的最先出棧。在棧的狀態是c(棧頂)、B、A(棧底)時,D未入棧,棧頂元素可以出棧,但A不可能比B先出棧,所以c選項錯誤。

65.Afopen(”data.chit“,”w+”);W+打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件存在則建立該文件。rewind(fp);使文件fp的I位置指針指向文件開始。fprintf(fp,”%d\n”,a[5一i]);將8[i]輸出到fp指向的文件中。fseanf(fp,”%d”,&k);將fp讀I入到變量k中,第一個for循環將數組中元素倒著輸入到fp指l向的文件中,rewind()則指向文件開始,因此打印是數組a的I倒敘。故打印為6,5,4,3,2,1。答案為A選項。

66.B棧是線性表的一種,其插入和刪除運算都只在表的一端進行。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元素是最后被插入的元素,不是最后被刪除的元素,是按先進后出的原則組織數據的。

67.A

溫馨提示

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

評論

0/150

提交評論