2022-2023年寧夏回族自治區石嘴山市全國計算機等級考試C語言程序設計_第1頁
2022-2023年寧夏回族自治區石嘴山市全國計算機等級考試C語言程序設計_第2頁
2022-2023年寧夏回族自治區石嘴山市全國計算機等級考試C語言程序設計_第3頁
2022-2023年寧夏回族自治區石嘴山市全國計算機等級考試C語言程序設計_第4頁
2022-2023年寧夏回族自治區石嘴山市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩101頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2022-2023年寧夏回族自治區石嘴山市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.數據的獨立性是指______。

A.數據庫的數據相互獨立

B.DBMS和DB相互獨立

C.用戶應用程序與數據庫的數據相互獨立

D.用戶應用程序與DBMS相互獨立

3.設數據結構A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},則數據結構A是()。

A.線性結構B.樹形結構C.圖狀結構D.集合

4.

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

6.在16位IBM-PC機上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結構變量b占用內存的字節數是

A.1B.2C.7D.11

7.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

8.對于n個元素,下列哪種操作時間復雜度不是O(nlogn)()

A.凸包計算B.LC搜索C.有序序列數字查找D.基于比較的排序

9.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

10.在下面的一維數組定義中,哪一個有語法錯誤()。A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];

11.下列語句組中正確的是()。

A.char*s;s=“Olympic”;

B.chars[7];s=“Olympic”;

C.char*s;s={“Olympic”};

D.chars[7];s={“Olympic”};

12.

13.軟件調試的目的是A.發現錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

14.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執行程序時,給變量X輸入10,程序的輸出結果是()。A.55B.54C.65D.45

15.若有語句“typedefstructTT{charc;inta[4];}CIN;”,則下列敘述中正確的是()。

A.CIN是structTT類型的變量

B.TT是struct類型的變量

C.可以用TT定義結構體變量

D.可以用CIN定義結構體變量

16.請選出可用作C語言用戶標識符的一組()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

17.設a、b和c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式是______。

A.'a'&&'b'

B.a<=b

C.a||+c&&b-c

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

18.有以下程序#include<stdio.h>intf(intx,inty){return()y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序運行后的輸出結果是A.10B.9C.8D.7

19.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運行后的輸出結果是()。

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

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

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

二、2.填空題(20題)21."printf("%d\n",strlen("\t\"'\023\xABC\n"));"語句的輸出結果是______。

22.在數據庫中用數據模型這個工具來抽象、表示和處理現實世界中的數據和信息。常見的數據模型有3種,它們分別是層次模型、網狀模型和()。

23.若a=10,b=20,則表達式!(a<b)的值是【】。

24.以下程序的功能是建立一個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鏈表頭結點的data域不放數據,表空的條件是ph->next==NULL),請填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next=′\0;return(ph);}

main()

{structlist*head;head=creatlist();}

25.按數據流的類型,結構化設計方法有兩種設計策略,它們是變換分析設計和______。

26.#define命令出現在程序中函數的外面,宏名的有效范圍為______。

27.設有定義:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

則對結構體成員a的引用方法可以是abc.a和p_abc【】a。

28.有以下程序

intfa(intx){returnx*x;}

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

intf(ing(*f1)(),int(*f2)(),intx)

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

main()

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

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

29.一棵二叉樹第6層(根結點為第一層)的結點最多為______個。

30.在軟件開發中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法。詳細設計階段所采用的是【】方法。

31.以下程序中函數fun的功能是:統計person所指結構體數組中所有性別(sex)為M的記錄的個數,存入變量n中,并作為函數值返回。請填空:

#include<stdio.h>

#defineN3

typedefstruct

{intmum,charname[10];charsex;}SS;

intfun(SSperson[])

{inti,n=0;

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

if(()=='M')n++;

returnn;

}

main()

{SSW[N]={{1,'AA','F'},{2,'BB','M'},{3,'CC','M'}};intn;

n=fun(W);printf("n=%d\n",n);

}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

33.下列程序用來將從鍵盤上輸入的2個字符串進行比較,然后輸出2個字符串中第1個不相同字符的ASCII碼之差。例如,輸入的2個字符串分別為abcdef和abceef,則輸出為-1。

#include

main()

{charstr[100],str2[100],c;

inti,s;

printf("\ninputstring1:\n");gest(str1);

printf("\ninputstring2:\n");gest(str2);

i=0;

while((strl[i]==str2[i]&&(strl[i]!=【】))

i++;

s=【】;

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

34.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

35.診斷和改正程序中錯誤的工作通常稱為【】。

36.以下程序的運行結果是【】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

printf("%d\n",MAX(i,j));

}

37.一個模塊直接調用的其他模塊的模塊個數稱為______。

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

39.有以下程序

main()

{intn=0,m+1,X=2;

if(!n)X-=l;

if(m)X-=2;

if(X)X-=3;

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

}

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

40.若輸入tear、test、arj,則下列程序的運行結果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

三、1.選擇題(20題)41.請讀程序:#include<stdio.h>#include<string.j>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的輸出結果是______。

A.正數B.負數C.零D.不確定的值

42.設有下列語句inta=1,b=2,c;c=ab(b<<2);執行后,C的值為()。

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

43.有如下程序:#include<stdio.h>main(){intn=9;while(n>6){n--;printf("%d",n);}}該程序的輸出結果是()。

A.987B.876C.8765D.9876

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

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

45.當a=1,b=3,c=5,d=4時,執行下面一段程序后,x的值為______。if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;

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

46.以下不正確的敘述是()。

A.在C程序中,逗號運算符的優先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若變量a和b類型相同,執行了賦值表達式a=b后b中的值將放入a中,而b中的值不變

D.當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,而實型變量只能輸入實型數值

47.以下程序企圖把從終端輸入的字符輸出到名為abc.txt的文件中,直到從終端讀入字符#號時結束輸入和輸出操作,但程序有錯。#include<stdio.h>main(){FILE*fout;charch;fout=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出錯的原因是

A.函數fopen調用形式有誤B.輸入文件沒有關閉C.函數fgetc調用形式有誤D.文件指針stdin沒有定義

48.若已定義的函數有返回值,則以下關于該函數調用的敘述中錯誤的是A.函數調用可以作為獨立的語句存在

B.函數調用可以作為一個函數的實參

C.函數調用可以出現在表達式中

D.函數調用可以作為一個函數的形參

49.下述程序向文件輸出的結果是_______。#include<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%d%5.of%c%d",58,76273.0,'-'2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件為二進制文件而不可讀

50.以下程序的輸出結果是______。intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f():printf("%d\n",a);}

A.20B.24C.25D.15

51.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:prinft("%d",i);case2:prinft("%d",i);default:prinft("%d",i);}}程序運行后的輸出結果是

A.22111B.21021C.122D.12

52.已定義ch為字符型變量,以下賦值語句中錯誤的是

A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';

53.軟件需求分析階段的工作,可以分為4個方面:需求獲取、需求分析、編寫需求規格說明書以及()。

A.階段性報告B.需求評審C.總結D.都不正確

54.以下關于long、int和short類型數據占用內存大小的敘述中正確的是(),

A.均占4個字節B.根據數據的大小來決定所占內存的字節數C.由用戶自己定義D.由C語言編譯系統決定

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

A.黑箱(盒)測試方法完全不考慮程序的內部結構和內部特征

B.黑箱(盒)測試方法主要考慮程序的內部結構和內部特征

C.白箱(盒)測試不考慮程序內部的邏輯結構

D.上述三種說法都不對

56.以下程序的輸出結果是()#include<stdio.h>main(){structstru{inta,b:charc[6];}:printf("%d\n",sizeof(stru)),}

A.2B.4C.8D.10

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

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

58.執行下面程序片段的結果是()intx=123;do{printf("%3d\n",x--);}while(!x);

A.打印出321B.打印出123C.不打印任何內容D.陷入死循環

59.在計算機中,算法是指()

A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法

60.軟件詳細設計的主要任務是確定每個模塊的()。

A.算法和使用的數據結構B.外部接口C.功能D.編程

四、選擇題(20題)61.以下敘述中錯誤的是()。

A.C語言編寫的函數源程序,其文件名后綴可以是C

B.C語言編寫的函數都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數都可以進行獨立的編譯并執行

D.一個C語言程序只能有一個主函數

62.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

63.以下關于邏輯運算符兩側運算對象的敘述中正確的是()。

A.可以是任意合法的表達式B.只能是整數0或非0整數C.可以是結構體類型的數據D.只能是整數0或1

64.

65.若有以下程序段:

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

A.16B.8C.4D.2

66.

67.有以下程序:

#include<stdio.h>

main

{inta=1,b=2;

while(a<6){b+=a;a4+=2;b%=10;)

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

}

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

A.5,11B.7,1C.7,11D.6,1

68.若有定義語句:“inta=3,b=2,c=1;”,以下選項中錯誤的賦值表達式是()。

A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);

69.下列程序的運行結果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

70.若二維數組a有m列,則在a[i][j]前的元素個數為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

71.冒泡排序在最壞情況下的比較次數是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

72.數據庫系統的核心是()。

A.數據模型B.數據庫管理系統C.數據庫D.數據庫管理員

73.

74.若x,i,j和k都是int型變量,則計算表達式x=(i=4,j=16,k=32)后,x的值為()。

A.4B.16C.32D.52

75.有下列程序:

main

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執行后的輸出結果是()。A.A.45B.20C.25D.36

76.在單鏈表中,增加頭結點的目的是______。

A.方便運算的實現B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性表的鏈式存儲實現

77.下列關于信息系統的敘述中,錯誤的是()。

A.廣播電視是一種雙向的、點到多點的信息交互系自

B.網絡聊天是一種雙向的,以信息交互為主要目的系統

C.電話是一種雙向的、點對點的、以信息交互為主要的的系統

D.雷達是一種以感測和識別為主要目的的系統

78.針對簡單程序設計,以下敘述的實施步驟順序正確的是()。

A.確定算法和數據結構、編碼、調試、整理文檔

B.編碼、確定算法和數據結構、調試、整理文檔

C.整理文檔、確定算法和數據結構、編碼、調試

D.確定算法和數據結構、調試、編碼、整理文檔

79.若有定義和語句:

int*(*pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);

則輸出結果是()。A.A.20,10B.20,20C.10,20D.10,10

80.設有如下程序段:

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

A.輸出值為2004

B.輸出值為2008

C.運行時產生出錯信息

D.輸出語句中格式說明符的個數少于輸出項的個數,不能正確輸出

五、程序改錯題(1題)81.下列給定程序中,fun()函數的功能是:從整數1~50中,選出能被3整除且有一位上的數是5的數,并把這些數放b所指的數組中,這些數的個數作為函數值返回。規定,函數中a1放個位數,a2放十位數。

請修改函數中的錯誤,得出正確的結果。

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

試題程序:

六、程序設計題(1題)82.請編寫函數proc(),該函數的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除后數組中數據的個數。

例如,若一維數組中的數據是:

1122234456666778

9910101010

刪除后,數組中的內容應該是:

12345678910

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

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

試題程序:

參考答案

1.B

2.C解析:修改數據庫的物理結構或邏輯結構時,通過兩級映像,可以使得應用程序不必修改,保證數據的獨立性。數據的獨立性包括物理獨立性和邏輯獨立性。

3.A

4.D

5.C

6.D解析:結構體變量所占用內存的字節數是其所有成員所占用內存字節數之和。本題中整型變量i所占用的內存是2字節,字符型變量ch所占用的內存是1字節,雙精度型變量f所占用的內存是8字節,三者相加即可。

7.B第一個for循環的作用是讓p指向每行的首地址,第二個for循環的作用是把它指向的字符串輸出,故選擇B選項。

8.C

9.A解析:對線性表進行二分法檢索,要求線性表是按順序方式存儲的,并按關鍵碼值的大小排好序,而不是按關鍵碼的檢索頻率排序。

10.C

11.A字符型指針變量可以用A選項的賦值方法“Char*s;s=“OlymPiC”;”。C選項的寫法“char*s;s={“Olympic”};”是錯誤的。字符數組可以在定義的時候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定義字符數組后對數組名賦值(數組名是常量,代表數組首地址),所以B選項和D選項都是錯誤的。對于本例,B、D選項中字符數組s的大小至少為8,才能存放下字符串(字符串的末尾都有結束標識‘\\0’),同時,此時S為字符數組的地址,是常量,不能為其賦值。故本題答案為A選項。

12.A

13.B本題考查軟件工程調試。調試與測試是兩個不同的過程,有著根本的區別:調試是一個隨機的、不可重復的過程,它用于隔離和確認問題發生的原因,然后修改軟件來糾正問題;測試是一個有計劃的,可以重復的過程,它的目的是為了發現軟件中的問題。因此,軟件調試的目的是為了改正軟什中的錯誤。本題的正確答案是選項\u3000B。

14.A函數intfun(intn)的功能是求1+2+…+n的值并返回。所以執行程序時,給變量x輸入10后,執行語句“x=fun(x);”,X的值將變為1到10中10個整數的累加和,即55。

15.DCIN為結構體類型名,而不是結構體變量。故本題答案為D選項。

16.B解析:C語言規定,標識符只能由字母、數字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。A)中的void與C語言的關鍵字重名,不合法;C)中的case和C語言的關鍵字重名,不合法;D)中的2a是數字開頭,而且sizeof與C語言的關鍵字重名,不合法。

17.D解析:選項A:'a'&&'b'是字符a與b的相與,不為0:選項B:a<=b,由題中變量賦值可知,結果為1。選項C:a||+c&&b-c,結果為1;選項D:!((a<B)&&!c||1),運算結果為0。

18.B

19.Astrlen函數求得參數中字符串的長度(不包括字符串結束標識“\\0”)sizeof函數求得特定類型參數所占存儲空間的長度。題干中a是數組名,由于定義時省略維數大小,因此數組大小是初始化的字符個數,即a的數組大小為6。綜上,strlen(a)只計算字符“T”“H”“I”“S”,結果為4;sizeof(a)求得數組a的大小,結果為6;指針b指向一個字符串“OK\\0\\0”,所以strlen(b)只計算字符“O”“K”,結果為2;sizeof(b)求得指針占用存儲空間的大小,結果為4。故本題答案為A選項。

20.C

21.66解析:strlen()函數的作用是計算字符串的長度并作為函數的返回值,這里的長度不包括串尾的結束標志\'\\0\'。

\'\\t\'是轉義字符,代表橫向跳若干格:\'\\\''是轉義字符,代表雙引號:\'\\023\'只代表一個字符,而不管轉義字符后面有幾個字符;\'\\xAB\'是以兩位十六進制數AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉義字符,代表回車換行。

5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。

22.關系模型關系模型解析:在數據庫中用數據模型這個工具來抽象、表示和處理現實世界中的數據和信息。通俗地講,數據模型就是現實世界的反映,它分為兩個階段:把現實世界中的客觀對象抽象為概念模型;把概念模型轉換為某一DBMS支持的數據模型。常見的數據模型有3種,它們分別是層次模型、網狀模型和關系模型。

23.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。

24.p->dataqp->data,q解析:本題考查的是鏈表這一數據結構對結構體變量中數據的引用。鏈表的特點是結構體變量中有兩個域,一個是數據,另一個是指向該結構體變量類型的指針,用以指明鏈表的下一個結點。

25.事務分析設計事務分析設計解析:典型的數據流圖有兩種,即變換型和事務型。按照這兩種類型把設計方法分為兩類,即變換分析設計和事務分析設計。

26.從定義到本源文件結束從定義到本源文件結束解析:C語言規定,宏名的有效范圍為從定義宏到本源程序結束。

27.->->解析:結構變量abc有成員a,并有指針pabc指向結構變量abc,則引用變量abc成員a的形式有abc.a和p_abc->a。

28.44解析:在主函數中調用函數f,函數f有三個參數,形參f1與f2分別是兩個指向函數的指針。在f中執行f2(x)-f1(x),實際上是執行了fb()2)-fa(2),故執行i=(fa,fb,2)卮i的值為23-22=4。

29.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結點。第6層的結點數最多是26-1=32。注意區別“二叉樹的結點最多數”和“某一層的結點最多數”。前者的計算是深度為m的二叉樹最多有2m-1個結點。

30.結構化設計結構化設計解析:在軟件開發中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法。詳細設計階段所采用的是結構化設計方法。

31.person[i].scx

32.44解析:本題考查函數的遞歸調用。在主函數中第1次調用子函數是調用的fun(11),返回11-fun(9):第2次調用子函數是調用的fun(9),返回9-tim(7);第3次調用子函數是調用的fun(7),返回7-fun(5);第4次調用子函數是調用的fun(5),返回5-fun(3);第5次調用子函數是調用的fun(3),返回3-fun(1);第6次調用子函數是調用的fun(1),返回3。總的返回值是:11-(9-(7-(5-(3-3))))=4。

33.\0'strl[i]-str2[i]

34.1919解析:根據二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。

35.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發階段。

36.99解析:本題考查宏定義與三目運算符的綜合用法,宏定義是原樣替換,本題中,如果a>b成立,則a+1的值為整個表達式的值,否則為b+1的值為整個表達式的值,(應注意后面的加1)。

37.扇出扇出解析:在結構圖中,調用一個給定模塊的模塊個數稱為扇入,一個模塊直接調用的其他模塊個數稱為扇出。

38.前件前件

39.-4-4解析:if-else構造了一種二路分支選擇,是一種最基本的選擇結構,if(條件)S1(if分結構)elseS2(else分結構),它的工作過程是:先對條件表達式進行判斷,若為真(成立,值為非零),就執行if分結構(S1);否則(不成立,值為0),就執行else分結構(S2)。本題中,n=O,可以判斷(!n)為真,執行“x=x-1=2-1=1;m=1”,可以判斷(m)為真,執行“x=x-2=1-2=-1;”進而可以判斷(x)為真,執行x=x-3=-1-3=-4。所以,最后輸出為-4。

40.arjteartest

41.A解析:函數strcmp的功能是比較字符串s1和s2,如果s1>s2,則返回個正數:如果s1<s2,則返回負數,否則返回零。由于本題中小寫字母b的ASCII碼值大于大寫字母B,故s1>s2,所以函數的值為正數。

42.D解析:變量b的初值等于2,所以表達式b<<2表示b的值二進制左移兩位,即擴大4倍,所以變量b的等于8。然后與a的值1進行異或運算,得9。

43.B解析:該程序應根據循環體第一次和最后一次的輸出結果來決定哪一項是正確的。第一次進入循環時,n的值是9,在循環體內,經過n--運算后,n的值變為8,所以第一次的輸出值是8,由此排除選項A)和D)。由循環條件n>6可知,最后一次循環開始時,n值為7,所以最后一次執行循環體輸出的n值為6,由此排除選項C)。

44.D

45.B解析:此題主要考查if語句的嵌套,注意if與else的對應關系。a<b成立繼續執行;c<d不成立,執行else語句;a<c成立繼續執行;b<d成立,x=2,然后退出嵌套的4層if語句。

46.D解析:在C語言的所有運算符中,逗號運算符的優先級最低;C語言中的字母區分大小寫,所以APH和aph是兩個不同的變量;賦值表達式a=b表示將b的值賦給a,而b本身的值保持不變;當從鍵盤輸入數據時,對于整型變量可以輸入整型數值和字符,對于實型變量可以輸入實型數和整型數值等,選項D)錯。

47.A解析:本題考核的知識點是文件的簡單應用。stdin是標準輸入設備的文件指針,不需定義直接可以使用,它隨系統的啟動而打開,隨系統的關閉而關閉,fgetc()函數的作用是從某個文件中讀取一個數據,其參數為要讀取文件的文件指針,所以本題中的調用形式是正確的。fopen()函數有兩個參數,第一個參數是打開的文件名,第二個參數是文件打開模式,兩個參數都是字符串,本例中'fout=fopen(\'abc.txt\',\'w’);”語句的fopen()函數參數是錯誤的,應該用雙引號'''',正確的應改為fout=fopen(“abc.txt”,“w”);。所以,A選項為所選。

48.D解析:本題考查函數的調用。在有參函數調用中,是將主調函數的實參值傳給被調函數的形參。按函數在程序中出現的位置來分,有以下三種函數調用形式:

①函數調用作為一條語句。例如:fun();這時不要求函數帶回值,只要求函數完成一定的操作。故選項A)正確。

②函數出現在表達式中,這種表達式稱為函數表達式。這時要求函數帶回一個確定的值以參加表達式的運算。例如:c=5*max(a,b);函數max是表達式的一部分,將其值乘以5后賦給c。故選項C)正確。

③函數調用作為一個函數的實參,例如:m=max(a,max(b,c));其中max(b,c)是一次函數調用,它的值作為max另一次調用的實參。故選項B)正確。

函數調用不可作為一個函數的形參,因為函數調用參數的數據傳遞是單向傳遞,即實參傳給形參,不能由形參傳給實參。故選項D)錯誤。

49.C解析:fprintf函數工作時,多個數據間不會自動加分隔符,選項A錯誤;浮點數的輸出格式是“%5.of”表明其小數部分輸出0位,即沒有輸出,所以選項B也是錯誤的。

50.D解析:函數f中變量i為靜態變量,函數f調用結束后變量i所占據的存儲單元不會釋放,而在主函數中f被調用5次,具體過程如下。

第1次調用f:s=s+i=1+0=1,i=i+1=1,主函數中a=a+f()=O+1=1

第2次調用f:s=s+1=1+1=2,i=i+1=2,豐函數中a=a+f()=1+2=3

第3次調用f:s=s+1=1+2=3,i=i+1=3,主函數中a=a+f()=3+3=6

第4次調用f:s=s+i=1+3=4,i=i+1=4,主函數中a=a+r()=6+4=10

第5次調用f:s=s+i=1+4=5,i=i+4=5,主函數中a=a+f()=10+5=15

所以printf語句的輸出結果為15。

51.C解析:本題考核的知識點是for循環和switch語句的混合應用。程序中for循環了三次,第一次i=0,執行switch語句中case0:分支,直到遇到default語句,退出switch,這里共執行?三個輸出語句分別輸出0,0,0,第二次循環i=l,switch語句中沒有匹配的分支,故只執行default語句輸出1,退出switch語句;第三此循環i=2,從switch語句中的case2:開始執行,共執行了兩個輸出語句輸出2、2。最后輸出的結果為000122.所以,4個選項中選項C符合題意。

52.A解析:字符型變量用來存放字符常量,且只能存放一個字符。賦值反斜杠線“\\”,必須用轉義字符實現,即ch='\\\\',所以選項A)錯誤;字符型變量可以賦0~255之間的ASCII碼值,整型數據和字符型數據有時可以通用,所以選項B)正確;可以將NULL賦給一個字符型變量,NULL代表一個空字符,相當于0,選項C)正確;'\\xaa'表示的是1~2位16進制數所代表的字符,所以選項D)正確。

53.B解析:需求分析是軟件定義時期的最后一個階段。可以概括為4個方面:①需求獲取;②需求分析;⑧編寫需求規格說明書;④需求評審。

54.D解析:在C語言的標準中,short占2個字節、long占4個字節,但int的大小和編譯系統相關。例如在Turbo\u3000C\u30002.0中,int占2個字節,但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節。故本題應該選擇D。

55.A解析:黑箱測試方法完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例,選項A是正確的,選項B錯誤。白箱測試是根據對程序內部邏輯結構的分析來選取測試用例,選項C錯誤。正確答案為A。

56.D

57.D解析:所謂的交換類排序方法是指借助數據元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。

58.B

59.B在計算機中,算法被定義為對一個問題求解步驟的一種描述,是求解問題的方法,它是指令的有限序列,其中每條指令表示一個或者多個操作。算法具有有窮性、確定性、可行性、輸入和輸出五大特點。

在本題中,選項A、C、D的說法明顯偏離了算法的定義,因此正確答案選B。

60.A解析:從軟件開發的工程化觀點來看,在使用程序設計語言編制程序以前,需要對所采用算法的邏輯關系進行分析,設計出全部必要的過程細節,并給予清晰的表達。詳細設計的任務就是要決定各個模塊的實現算法,并精確表達出這些算法。本題正確答案為選項A。

61.C函數是指預先定義功能塊,其目的是提高程序的重用性。在C語言中函數的源程序,后綴名可以為C。C語言所編寫的函數都可以是一個獨立的源文件。一個C語言程序只能有一個主函數。C語言中編寫的函數不是每個都可以獨立地編譯和執行的,因為C語言中程序的開始為主函數,如果程序中沒有主函數則無法進行編譯和執行。

62.AB選項中運算符“%”的運算對象為整數。C選項中不能將變量賦給表達式“x+n”。D選項中不能將表達式“4+1”賦給常量5。故本題答案為A選項。

63.AC語言的邏輯運算符比較特別,它的操作數沒有明確的數據類型,可以是任意合法的表達式,所以選擇A。

64.C

65.C本題考查位運算,屬于基礎知識,題目中將整型變量8,二進制表達為00(301000,右移一位為00000100,即4,選項c正確。

66.A

67.B“b+=a;”等價于“b=b+a;”,“a+=2;”等價于“a=a±2;”,“bA=10;”等價于“b=b%=10;”。循環體執行3次,最終結果為7,1。

68.A由等式的規則可知,A選項錯誤。先對括號的b進行等式運算,得出b=4,然后計算得出a=4=3,所以會導致錯誤。答案選擇A。

69.D本題考查"drhile循環。第一次循環,y=y-1,y=2,循環條件成立,x=1,X++后值為1,x自加變成2,進入循環,a=a+1=1,判斷if語句條件是否成立,y<x不成立,接著執行下一次循環。第二次循環,x=2,y-1=1,循環條件成立,進入循環,a=a+1=2,判斷if語句的控制條件是否成立,y<X成立,執行break語句,退出循環。結果為D。

70.B解析:二維數組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數組第一維的下標是i,說明它前面還有i行,有i*m個元素,數組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。

71.C冒泡排序的基本思想是:將相鄰的兩個元素進行比較,如果反序,則交換;對于一個待排序的序列,經一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數據的序列,共需n-1趟排序,第i趟對從l到n-i個數據進行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數是(n-1)+(n-2)+…+l,結果為n(n-1)/2。本題的正確答案是選項C。

72.B解析:數據庫管理系統是數據庫系統的核心,是負責數據庫的建立、使用和維護的軟件。數據庫管理系統建立在操作系統之上,實施對數據庫的統一管理和控制。用戶使用的各種數據庫命令以及應用程序的執行,最終都必須通過數據庫管理系統。另外,數據庫管理系統還承擔著數據庫的安全保護工作,按照數據庫管理員所規定的要求,保證數據庫的完整性和安全性。

73.D

74.C本題主要考查逗號表達式。逗號是一個特殊的運算符,它具有所有運算符中最低的優先級。在C語言中,用它可以將兩個表達式連接起來,逗號表達式的一般表現形式為:

表達式1,表達式2,…,表達式n

逗號表達式的求解過程是:先求解表達式1,再求解表達式2,依次往后計算,整個逗號表達式的值是最后一個表達式的值,如“3+5,5+6”的值是11。

在本題中,逗號表達式為i=4,j=16,k=32,根據上面的分析,計算逗號表達式得到的結果為k=32,最后將逗號表達式的結果賦值給變量x,那么變量x的值為32。因此,本題的正確答案選C。

75.C在for循環語句中自變量i從0開始,每次自加2,執行s+=*(t+i)語句,因為C語言規定數組名做表達式相當于數組的首地址,也就是第一個元素的地址。因此,*(t+i)代表數組的第i+1個元素。所以程序運行的結果是1+3+5+7+9=25,即變量S的值等于25。

76.A\nA。【解析】頭結點不僅標識了表中首結點的位置,而且根據單鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點的目的是為了便于運算的實現。

\n

77.A廣播/電視是一種單向的、點對多點(面)的以信息傳遞為主要目的的系統。

78.A\nC語言中程序中的步驟實現為:先確定程序中的算法和數據結構,然后進行程序的編碼,再進行對程序的調試,最后進行文檔的整理和記錄。使用這種步驟可以方便程序的編寫以及在完成后提高代碼的重用性。

\n

79.D本題考查指針變量的賦值。**PP是定義一個指針變量,語句pp=&p是將pp指向指針P,*P和**PP都是指針P所指的內存空間的內容,即b的值。

80.B(x,y)考查逗號表達式,逗號運算符的結合性為從左到右,因此,最后一個表達式的值就是此逗號表達式的值,因此選項B)正確。

81.

【解析】(1)根據題目中要求,第一個標識下fun()函數的定義為“intfun(int*b);”。在C語言中規定,函數的定義格式,不應以分號結束,所以應把末尾分號去掉。

(2)題干中要求在1~50之間選出符合條件的整數,循環條件表達式的起始應當是j=1,而不是j=10,所以第二個標識下應改為“for(j=1;j<=50;j++)”。

(3)變量i是標識數組b的下標,也就是數組的個數。題目“returnj”返回的是循環條件表達式中的變量,所以這里應改為“returni”。

82.

【解析】題目中要求刪去一維數組中所有相同的數,使之只剩一個。首先需要將字符串中的每一個字符與其后的一個字符相比較,相同則不做任何操作,不相同則將其放入新的字符串中。最后將新的字符串中的字符個數返回給主函數。

2022-2023年寧夏回族自治區石嘴山市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.數據的獨立性是指______。

A.數據庫的數據相互獨立

B.DBMS和DB相互獨立

C.用戶應用程序與數據庫的數據相互獨立

D.用戶應用程序與DBMS相互獨立

3.設數據結構A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},則數據結構A是()。

A.線性結構B.樹形結構C.圖狀結構D.集合

4.

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

6.在16位IBM-PC機上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結構變量b占用內存的字節數是

A.1B.2C.7D.11

7.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

8.對于n個元素,下列哪種操作時間復雜度不是O(nlogn)()

A.凸包計算B.LC搜索C.有序序列數字查找D.基于比較的排序

9.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

10.在下面的一維數組定義中,哪一個有語法錯誤()。A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];

11.下列語句組中正確的是()。

A.char*s;s=“Olympic”;

B.chars[7];s=“Olympic”;

C.char*s;s={“Olympic”};

D.chars[7];s={“Olympic”};

12.

13.軟件調試的目的是A.發現錯誤B.改正錯誤C.改善軟件的性能D.驗證軟件的正確性

14.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執行程序時,給變量X輸入10,程序的輸出結果是()。A.55B.54C.65D.45

15.若有語句“typedefstructTT{charc;inta[4];}CIN;”,則下列敘述中正確的是()。

A.CIN是structTT類型的變量

B.TT是struct類型的變量

C.可以用TT定義結構體變量

D.可以用CIN定義結構體變量

16.請選出可用作C語言用戶標識符的一組()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

17.設a、b和c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式是______。

A.'a'&&'b'

B.a<=b

C.a||+c&&b-c

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

18.有以下程序#include<stdio.h>intf(intx,inty){return()y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序運行后的輸出結果是A.10B.9C.8D.7

19.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運行后的輸出結果是()。

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

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

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

二、2.填空題(20題)21."printf("%d\n",strlen("\t\"'\023\xABC\n"));"語句的輸出結果是______。

22.在數據庫中用數據模型這個工具來抽象、表示和處理現實世界中的數據和信息。常見的數據模型有3種,它們分別是層次模型、網狀模型和()。

23.若a=10,b=20,則表達式!(a<b)的值是【】。

24.以下程序的功能是建立一個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鏈表頭結點的data域不放數據,表空的條件是ph->next==NULL),請填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next=′\0;return(ph);}

main()

{structlist*head;head=creatlist();}

25.按數據流的類型,結構化設計方法有兩種設計策略,它們是變換分析設計和______。

26.#define命令出現在程序中函數的外面,宏名的有效范圍為______。

27.設有定義:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

則對結構體成員a的引用方法可以是abc.a和p_abc【】a。

28.有以下程序

intfa(intx){returnx*x;}

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

intf(ing(*f1)(),int(*f2)(),intx)

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

main()

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

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

29.一棵二叉樹第6層(根結點為第一層)的結點最多為______個。

30.在軟件開發中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法。詳細設計階段所采用的是【】方法。

31.以下程序中函數fun的功能是:統計person所指結構體數組中所有性別(sex)為M的記錄的個數,存入變量n中,并作為函數值返回。請填空:

#include<stdio.h>

#defineN3

typedefstruct

{intmum,charname[10];charsex;}SS;

intfun(SSperson[])

{inti,n=0;

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

if(()=='M')n++;

returnn;

}

main()

{SSW[N]={{1,'AA','F'},{2,'BB','M'},{3,'CC','M'}};intn;

n=fun(W);printf("n=%d\n",n);

}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

33.下列程序用來將從鍵盤上輸入的2個字符串進行比較,然后輸出2個字符串中第1個不相同字符的ASCII碼之差。例如,輸入的2個字符串分別為abcdef和abceef,則輸出為-1。

#include

main()

{charstr[100],str2[100],c;

inti,s;

printf("\ninputstring1:\n");gest(str1);

printf("\ninputstring2:\n");gest(str2);

i=0;

while((strl[i]==str2[i]&&(strl[i]!=【】))

i++;

s=【】;

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

34.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

35.診斷和改正程序中錯誤的工作通常稱為【】。

36.以下程序的運行結果是【】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

printf("%d\n",MAX(i,j));

}

37.一個模塊直接調用的其他模塊的模塊個數稱為______。

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

39.有以下程序

main()

{intn=0,m+1,X=2;

if(!n)X-=l;

if(m)X-=2;

if(X)X-=3;

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

}

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

40.若輸入tear、test、arj,則下列程序的運行結果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

三、1.選擇題(20題)41.請讀程序:#include<stdio.h>#include<string.j>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的輸出結果是______。

A.正數B.負數C.零D.不確定的值

42.設有下列語句inta=1,b=2,c;c=ab(b<<2);執行后,C的值為()。

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

43.有如下程序:#include<stdio.h>main(){intn=9;while(n>6){n--;printf("%d",n);}}該程序的輸出結果是()。

A.987B.876C.8765D.9876

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

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

45.當a=1,b=3,c=5,d=4時,執行下面一段程序后,x的值為______。if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;

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

46.以下不正確的敘述是()。

A.在C程序中,逗號運算符的優先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若變量a和b類型相同,執行了賦值表達式a=b后b中的值將放入a中,而b中的值不變

D.當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,而實型變量只能輸入實型數值

47.以下程序企圖把從終端輸入的字符輸出到名為abc.txt的文件中,直到從終端讀入字符#號時結束輸入和輸出操作,但程序有錯。#include<stdio.h>main(){FILE*fout;charch;fout=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出錯的原因是

A.函數fopen調用形式有誤B.輸入文件沒有關閉C.函數fgetc調用形式有誤D.文件指針stdin沒有定義

48.若已定義的函數有返回值,則以下關于該函數調用的敘述中錯誤的是A.函數調用可以作為獨立的語句存在

B.函數調用可以作為一個函數的實參

C.函數調用可以出現在表達式中

D.函數調用可以作為一個函數的形參

49.下述程序向文件輸出的結果是_______。#include<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%d%5.of%c%d",58,76273.0,'-'2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件為二進制文件而不可讀

50.以下程序的輸出結果是______。intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f():printf("%d\n",a);}

A.20B.24C.25D.15

51.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:prinft("%d",i);case2:prinft("%d",i);default:prinft("%d",i);}}程序運行后的輸出結果是

A.22111B.21021C.122D.12

52.已定義ch為字符型變量,以下賦值語句中錯誤的是

A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';

53.軟件需求分析階段的工作,可以分為4個方面:需求獲取、需求分析、編寫需求規格說明書以及()。

A.階段性報告B.需求評審C.總結D.都不正確

54.以下關于long、int和short類型數據占用內存大小的敘述中正確的是(),

A.均占4個字節B.根據數據的大小來決定所占內存的字節數C.由用戶自己定義D.由C語言編譯系統決定

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

A.黑箱(盒)測試方法完全不考慮程序的內部結構和內部特征

B.黑箱(盒)測試方法主要考慮程序的內部結構和內部特征

C.白箱(盒)測試不考慮程序內部的邏輯結構

D.上述三種說法都不對

56.以下程序的輸出結果是()#include<stdio.h>main(){structstru{inta,b:charc[6];}:printf("%d\n",sizeof(stru)),}

A.2B.4C.8D.10

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

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

58.執行下面程序片段的結果是()intx=123;do{printf("%3d\n",x--);}while(!x);

A.打印出321B.打印出123C.不打印任何內容D.陷入死循環

59.在計算機中,算法是指()

A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法

60.軟件詳細設計的主要任務是確定每個模塊的()。

A.算法和使用的數據結構B.外部接口C.功能D.編程

四、選擇題(20題)61.以下敘述中錯誤的是()。

A.C語言編寫的函數源程序,其文件名后綴可以是C

B.C語言編寫的函數都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數都可以進行獨立的編譯并執行

D.一個C語言程序只能有一個主函數

62.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

63.以下關于邏輯運算符兩側運算對象的敘述中正確的是()。

A.可以是任意合法的表達式B.只能是整數0或非0整數C.可以是結構體類型的數據D.只能是整數0或1

64.

65.若有以下程序段:

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

A.16B.8C.4D.2

66.

67.有以下程序:

#include<stdio.h>

main

{inta=1,b=2;

while(a<6){b+=a;a4+=2;b%=10;)

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

}

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

A.5,11B.7,1C.7,11D.6,1

68.若有定義語句:“inta=3,b=2,c=1;”,以下選項中錯誤的賦值表達式是()。

A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);

69.下列程序的運行結果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

70.若二維數組a有m列,則在a[i][j]前的元素個數為()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

71.冒泡排序在最壞情況下的比較次數是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

72.數據庫系統的核心是()。

A.數據模型B.數據庫管理系統C.數據庫D.數據庫管理員

73.

74.若x,i,j和k都是int型變量,則計算表達式x=(i=4,j=16,k=32)后,x的值為()。

A.4B.16C.32D.52

75.有下列程序:

main

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執行后的輸出結果是()。A.A.45B.20C.25D.36

76.在單鏈表中,增加頭結點的目的是______。

A.方便運算的實現B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性表的鏈式存儲實現

77.下列關于信息系統的敘述中,錯誤的是()。

A.廣播電視是一種雙向的、點到多點的信息交互系自

B.網絡聊天是一種雙向的,以信息交互為主要目的系統

C.電話是一種雙向的、點對點的、以信息交互為主要的的系統

D.雷達是一種以感測和識別為主要目的的系統

78.針對簡單程序設計,以下敘述的實施步驟順序正確的是()。

A.確定算法和數據結構、編碼、調試、整理文檔

B.編碼、確定算法和數據結構、調試、整理文檔

C.整理文檔、確定算法和數據結構、編碼、調試

D.確定算法和數據結構、調試、編碼、整理文檔

79.若有定義和語句:

int*(*pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);

則輸出結果是()。A.A.20,10B.20,20C.10,20D.10,10

80.設有如下程序段:

則以下敘

溫馨提示

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

評論

0/150

提交評論