2021-2022年黑龍江省鶴崗市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021-2022年黑龍江省鶴崗市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021-2022年黑龍江省鶴崗市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021-2022年黑龍江省鶴崗市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021-2022年黑龍江省鶴崗市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年黑龍江省鶴崗市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在所有的排序方法中,關鍵字比較的次數與記錄的初始排列次序無關的是()。

A.希爾排序B.冒泡排序C.直接插入排序D.直接選擇排序

2.若有定義“inta=5,b=7;”,則表達式a%-(b%2)運算后,a的值為()。

A.0B.1C.11D.3

3.

4.下面程序運行的結果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

5.在排序方法中,元素比較次數與元素的初始排列無關的是()

A.Shell排序B.歸并排序C.直接插入排序D.選擇排序

6.按照“先進先出”組織數據的數據結構是()。

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

7.下列關于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

8.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序的運行結果是()。

A.1,1,2,0B.0,0,0,3C.編譯有錯D.0,1,2,0

9.

10.

11.若希望下列的程序運行后輸出25,程序空白處的正確選項是()。main{intid=50,a[]=(7,4,10,5,8};for()j+=a[i];printf("%d",j-40);}A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

12.設有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

13.下面程序的運行結果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

14.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運行后的輸出結果是()。

A.DB.BC.CD.A

15.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

16.有以下程序:#include<stdio.h>voidfun(intn){if(n/2)fun(n/2);printf(“%d”,n%2);}main(){fun(10);printf(“\n”);}程序運行后的輸出結果是()。

A.0101B.1000C.1100D.1010

17.下列關于函數的敘述中正確的是()。A.A.每個函數都可以被其他函數調用(包括main函數)

B.每個函數都可以被單獨編譯

C.每個函數都可以單獨運行

D.在一個函數內部可以定義另一個函數

18.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

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

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

19.設有以下語句charchl,ch2;scanf("%c%C",&chl,&ch2);若要為變量chl和ch2分別輸入字符A和B,正確的輸入形式應該是()。

A.A和B之間用逗號間隔B.A和B之間不能有任何間隔符C.A和B之間可以用回車間隔D.A和B之間用空格間隔

20.同一個關系模型的任意兩個元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

二、2.填空題(20題)21.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F拷貝。(注:不使用逗號表達式)

while(s[i]){d[j]=【】;j++;}

d[j]=0;

22.下列程序的運行結果為【】。

main()

{inti,j,row=0,colum=0,max,

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

max=a[0][0];

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

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

if(max<a[i][j])

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);

}

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

main()

{inta=1,b=2,c=3;

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

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

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

}

25.執(zhí)行以下“for(i=1;i++<=4;i++);”語句后,變量i的值是()。

26.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

printf("%lf\n…,max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

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

}

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

my_cmp(char*s,char*t)

{while(*s==*t)

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

++s;++t;

}return【】;

}

29.數據庫系統的三級模式分別為______模式、內部級模式與外部級模式。

30.下述函數統計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

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

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

}

return【】}

31.以下程序由終端鍵盤輸入一個文件名,然后把從終端鍵盤輸入的字符依次存放到該文件中,用#作為結束輸入的標志,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

while(ch=getchar()!='#')

fputc(【】,fp);

fclose(fp);

}

32.下面程序的運行結果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

34.深度為5的滿二叉樹中,葉子結點的個數為______。

35.以下程序的輸出結果是______。

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

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

}

36.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

37.結構化設計主要分為系統設計和模塊設計,【】的任務是決定系統的模塊結構。

38.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

39.以下程序的功能是:輸出x、y、z三個變量中的最大值,請?zhí)羁铡?/p>

main()

{intx,y,z,u;

printf("Enterx,y,x;");scanf("%d%d%d",&x,&y,&z);

if(【】)u=x;

elseu=y;

if(【】)u=z;

printf("u=%d",u);

}

40.下面程序的輸出結果是【】。

charb[]="ABCD";

main()

{char*p=b;

for(;*p;p++)

printf("%s",p);

printf("\n");

}

三、1.選擇題(20題)41.

執(zhí)行下列程序中的輸出語句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

42.以下正確的說法是

A.定義函數時,形參的類型說明可以放在函數體內

B.return后邊的值不能為表達式

C.如果函數值的類型與返回值類型不一致,以函數值類型為準

D.如果形參與實參類型不一致,以實參類型為準

43.有以下程序main(){chara,b,C,*d;a='\';b=\\xbc';c='\0xab';d="\0127";princf("%c%c%c%c\n",a,b,c,*D);}編譯時出現錯誤,以下敘述中正確的是

A.程序中只有a='\';語句不正確

B.b='\xbc';語句不正確

C.d="\0127":語句不正確

D.a='\';和c='\0xab';語句都不正確

44.需求分析最終結果是產生

A.項目開發(fā)計劃B.需求規(guī)格說明書C.設計說明書D.可行性分析報告

45.算法的時間復雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數D.算法程序中的指令條數

46.下列選項中,值為1的表達式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0’'-'0'

47.在C語言中,引用數組元素時,其數組下標的數據類型允許是()

A.整型常量B.整型表達式C.整型常量或整型表達式D.任何類型的表達式

48.以下選項中,正確運用指針變量的程序段是()。

A.int*i=NULL;

B.float*f=NULL;scanf("%d",i);*f=10.5;

C.chart='m',*C=&t;

D.long*L;*C=&t;L='0';

49.

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

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

50.設變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式正確的是(注:□代表空格字符)()。

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>

D.10X<回車>20□Y<回車>20Y<回車>

51.以下程序的輸出結果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

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

52.按照“先進先出”組織數據的數據結構是()。

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

53.要求通過while循環(huán)不斷讀入字符,當讀入字母N時結束循環(huán),若變量已正確定義,下列正確的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch);

54.下列程序的輸出結果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

55.現有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}則程序的輸出結果為

A.21B.78C.23D.28

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

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

57.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入3個整數分別賦給變量a、b、c的語句是()。

A.scanf("%d%d%d",&a,&b,d);

B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

58.對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數為______。A.N+1B.NC.(N+1)/2D.N/2

59.有以下函數定義:voidfun(intn,doublex){......}若以下選項中的變量都已正確定義并賦值,則對函數fun正確調用語句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

60.以下敘述中不正確的是()

A.在C中,函數中的自動變量可以賦初值,每調用一次,賦一次初值

B.在C中,在調用函數時,實參和對應形參在類型上只需賦值兼容

C.在C中,外部變量的隱含類別是自動存儲類別

D.在C中,函數形參可以說明為register變量

四、選擇題(20題)61.(64)在單鏈表中,增加頭結點的目的是()

A.方便運算的實現

B.使單鏈表至少有一個結點

C.標識表結點中首結點的位置

D.說明單鏈表是線性表的鏈式存儲實現

62.

63.有以下程序:

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

A.2B.0C.元素ch[5]的地址D.字符y的地址

64.

65.

66.下列排序方法中,最壞情況下比較次數最少的是()。

A.冒泡排序B.簡單選擇排序C.直接插入排序D.堆排序

67.設有以下語句:typedefstructTY{charC;inta{41;}CIN;

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

A.CIN是structTr類型的變量

B.TT是struct類型的變量

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

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

68.

69.下列選項中不屬于軟件生命周期開發(fā)階段任務的是()。

A.軟件測試B.概要設計C.軟件維護D.詳細設計

70.

71.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數

B.ptr是指向int型數據的指針變量

C.ptr是指向函數的指針,該函數返回一個int型數據

D.ptr是一個函數名,該函數的返回值是指向int型數據的指針

72.在C語言中,引用數組元素時,其數組下標的數據類型允許是()。

A.整型表達式B.整型常量C.整型常量或整型表達式D.任何類型的表達式

73.有以下程序:

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

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

74.以下程序段中,與語句:k=a>;b?(b>;c?1:O):0;功能相同的是()。

75.

76.

77.在黑盒測試方法中,設計測試用例的主要根據是()。

A.程序內部邏輯B.程序外部功能C.程序數據結構D.程序流程圖

78.

有以下計算公式

若程序前面已在命令中包含math.h文件,不能夠正確

計算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

79.有下列程序:intfunl(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……}程序執(zhí)行后變量w中的值是()。A.5.21B.5C.5.0D.0.0

80.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

程序的運行結果是

A.*7B.*3*5

C.*5D.*2*6

五、程序改錯題(1題)81.下列給定程序中,函數proc()的作用是:將字符串tt中的大寫字母都改為對應的小寫字母,其他字符不變。

例如,若輸入“I,anl,A,Student”,則輸出“i,am,a,student”。

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

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

試題程序:

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

參考答案

1.D

2.A本題考查“%”運算符的使用。運算符“%”是整數除法的余數。本題中表達式a%=(b%2)等價于a=a%(b%2)=5%(7%2)=5%1=0。

3.C

4.C解析:表達式“x+=-z---y”等價于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。

5.D

6.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數據的。

【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。

7.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。棧可以采用順序存儲,也可以采用鏈式存儲。

8.C本題中“if(a=1)b=1”與“elsed=3;”之間多了語句“c=2;”,所以會出現else語句的位置錯誤的編譯失敗提示。故本題答案為C選項。

9.D

10.D

11.D要想使程序輸出25,則j-40=25,j=65,而j初值是50,所以填入for循環(huán)的語句,使引用的數組元素累加65-50=15即可,D選項中,i下標從0開始,i=2指向第3個數50+a[2]=50+10=60,繼續(xù)循環(huán)60+a[3]=60+5=65,此時i=4跳出,循環(huán)結束。

12.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應為整型數據,所以需要對變量f進行強制類型轉換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術運算符、關系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術運算符、關系運算符、&&(邏輯“與”)、‖(邏輯“或”)、賦值運算符。根據運算符的優(yōu)先級與結合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進行賦值。對于選取項B),先計算k什的值,再對其取負數。對于選項D),先計算k>=f的值(為假,即0),再用0與m進行比較,故最終結果為0。

13.D解析:本題考查“++”和“--”運算符,運算符“++”是操作數加1,而“--”則是操作數減1。在do-while循環(huán)中,首先執(zhí)行y--,再執(zhí)行--y。當y=2時,執(zhí)行y--,y的值變?yōu)?,--y使y值變?yōu)?,循環(huán)結束。執(zhí)行輸出時,先輸出y的值0,然后執(zhí)行y--,使y的值變?yōu)?1。

14.D題干中,字符變量a、b、c、d都是大寫字母字符。C語言中,大寫字母的ASCII值是按照字母順序連續(xù)遞增的,所以a小于b,b小于c,c小于d。則表達式“x=(a<b)?a:b”等價于“x=a”;“x=(x>c)?c:x”等價于“x=(a>c)?c:a”,等價于“x=a”;“x=(d>x)?x:d”等價于“x=(d>a)?a:d”,等價于“x=a”;所以程序輸出x的值為A。故本題答案為D選項。

15.C當循環(huán)結束時,w的值應為-1,而其他選項中w的值為0,故選擇c選項。

16.D函數fun的作用是求一個十進制數的二進制數。通過輾轉相除法獲取這個整數的二進制數。因此(10)10=(1010)2。故本題答案為D選項。

17.B在C語言中,函數定義是平行的,函數不能嵌套定義,即函數之間沒有從屬關系。雖然函數之間可以相互調用,但main函數不能被調用,選項A)錯誤;C程序從main函數開始執(zhí)行,當main數執(zhí)行完畢時,整個程序就結束了。C程序的執(zhí)行必須從main函數開始,選項C)選項錯誤;函數不能嵌套定義,選項D)錯誤。

18.C解析:通過scanf()函數從鍵盤讀入數據時,接收參數的使用變量的地址值,所以選項A和B是錯誤的。選項D要求輸入時以逗號間隔,故按題目要求的輸入方式不能正確讀取到3個數,也是錯誤的。所以正確答案是C。

19.Bscanf輸入函數中,格式控制J必須嚴格按照函數中的要求進行輸入,在scanf("%c%c",&chl,&ch2)的格式控制語句中沒有任何字符進行間隔,所以在輸入時也不能使用任何字符進行間隔,所以答案選擇B。

20.B關系具有以下7個性質。①元組個數有限性:二維表中元組的個數是有限的。②元組的唯一性:二維表中任意兩個元組不能完全相同。③元組的次序無關性:二維表中元組的次序,即行的次序可以任意交換。④元組分量的原子性:二維表中元組的分量是不可分割的基本數據項。⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次序無關性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域,或者說列是同質的。滿足以上7個性質的二維表稱為關系,以二維表為基本結構所建立的模型稱為關系模型。本題答案為B選項。

21.s[i++]s[i++]解析:本題中為了能實現字符串的拷貝,需要使字符數組s從頭到尾依次遍歷其所有元素。本題應使用i的自增后置來實現。

22.max=10row=2colum=1

23.11解析:本題是一個陷阱題。在if語句的判斷表達式中,使用的不是邏輯運算符==而是賦值運算符=,使該表達式返回的結果正好相反。如果是c==a,則結果為假。但是c=a則是將a賦給c,且表達式的結果是賦值之后的c的值,因此結果為1是真.故最后輸出c的值1。

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

25.6

26.doublemax或externdoublemaxdoublemax或externdoublemax解析:函數聲明是對所用到的函數的特征進行必要的聲明,編譯系統以函數聲明中給出的信息為依據,對調用表達式進行檢測,以保證調用表達式與函數之間的參數正確傳遞.函數聲明的一般格式為:類型標識符函數名(類型標識符形參,…);這些信息就是函數定義中的第一行的內容。本題中main()函數需要調用max()函數,在main()之前就需要聲明函數max(),并且可以用extern說明符使變量的作用域擴充到需要用到它的函數,所以,填寫doublemax(或externdoublemax)。

27.efghefgh解析:本題定義了一個字符型指針變量p并通過賦初值讓它指向了一個字符串,定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強制轉換為長整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句“r=(char*)q;”,把長整型指針變量q的值再強制轉換成字符型地址值并賦給r,r的值應為字符串中字符“e”的地址,最后輸出,指向的字符中,是“efgh”。

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

29.概念(或概念級)概念(或概念級)

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

31.fopen(fname"w")chfopen(fname,'w')\r\nch解析:數組fname用來存放終端輸入的一個文件的文件名;文件使用方式'w'是為寫而打開文本文件。若文件不存在,系統將用在fopen調用中以指定的文件名建立一個新文件;若存在,則覆蓋原有內容;fputs(ch,fp)的功能是將字符ch寫到文件指針fp所指的文件中去。

32.babcdbabcd解析:c語言中\(zhòng)\0表示字符串的結束。程序將D指針指向字符串“AbabCDcd”的首地址,循環(huán)開始后,若指針當前不是指向字符串結束標志位,則進入循環(huán)體。循環(huán)中每次檢驗字符串中字母是否在a與z之間,若滿足則將當前值賦于數組a,最后給數組添加字符結束標志。此程序可以篩選出字符串中的小寫字母。

33.8208,20解析:本題考查while循環(huán)和++運算符的運用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8-20,此時y=8。

34.1616解析:滿二叉樹的葉子結點都在最后一層,即第4層,且第4層的結點達到最大數,即25-1=16。

35.55解析:此程序中,for循環(huán)語句后面直接跟了一個“;”,表明循環(huán)體為空.輸出語句不在for循環(huán)體內,所以在循環(huán)執(zhí)行完畢后才輸出s的值.s、i的初值分別為0和1,判斷循環(huán)條件,表達式“1<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為2和1,繼續(xù)判斷循環(huán)條件,表達式“2<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為3,再次判斷循環(huán)條件,表達式“3<3”不成立,循環(huán)結束。

36.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。

37.系統設計系統設計解析:結構化設計主要分為系統設計和模塊設計。系統設計決定系統的模塊結構,模塊設計具體考慮每個模塊內部的算法、模塊輸入、輸出及模塊功能。

38.軟件開發(fā)

39.x>yz>u

40.ABCDBCDCDD

41.C解析:本題考查逗號表達式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。

42.C解析:選項A)中定義函數時,形參的類型說明應該放在形參表列內說明。老版本C語言中,對形參類型的聲明是放在函數定義的第2行,也就是不在第1行的括號內指定形參的類型,而在括號外單獨指定。選項B)中return后面的值可以是一個表達式。選項D)中實參與形參的類型應相同或賦值兼容。如果實參為整型而形參為實型,或者相反,則按不同類型數值的賦值規(guī)則進行轉換,以形參類型為準。

43.D解析:給字符變量賦值只能賦一個字符,包括轉義字符,語句“a=\'\\\'”是錯誤的,因為“\\”是轉義字符,應該用“\\\\”來表示,語句“B=\'\\xbc\';”是正確的,它是將一個用十六進制表示的轉義字符賦給一個字符型變量,故選項B不為所選;語句“c=\\0xab;”是正確的,反斜線后的十六進制只可由小寫x開頭,不能用Ox。語句“d='\\0127';”是正確的,可以給字符型指針變量賦一個字符串,其作用是讓該指針變量指向該字符串,故選項C不正確。所以,D選項為所選。

44.B解析:本題考核軟件工程中的需求分析環(huán)節(jié)。需求分析應交付的主要文檔就是需求規(guī)格說明書。

45.C解析:算法的時間復雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據一個算法所編制出的程序之中,其指令條數往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數來度量算法的時間復雜度。所以,本題正確答案為C。

46.B解析:在C程序中,字符量可參與任何整數運算。字符參與運算時,首先要將字符轉換為對應的ASCII碼值再參與整數運算。字符'1'對應的ASCII碼值是49,字符,'0'對應的ASCII碼值是48,字符'\\0'是字符串結束標識符NULL,其對應的ASCII碼值是0。

47.C解析:C語言規(guī)定只能逐個引用數組元素而不能一次引用整個數組,數據元素的表示形式為數組名[下標],下標可以是整型常量或整型表達式。

48.D解析:選項A定義了一個整型變量i,并且初始化讓它指向NULL,接著通過scarnf()函數,改變i指向的存儲空間的值,選項A中首先定義了整型指針變量i并初始化為NULL,即表示指針i不指向任何存儲單元,即此時還沒有為i在內存中開辟存儲單元,而在scanf()函數中第二個參數是地址參數,顯然在這里i不表示地址,所以下面的scanf('%d',i)語句是不正確的,故選項A不正確。選項B定義了一個實型指針變量f并初始化使它指向NULL,即還沒有為f在內存中開辟存儲單元,不能向*f代表的存儲單元(不存在)中寫數據,故選項B錯誤;選項C中首先定義了一個字符變量t并給它賦初值\'m\',然后定義一個字符型指針c并讓它指向了變量t,這一部分正確,然后接著用了一個語句“*c=&t;”應該將該語句中c前的*去掉,故選項C運用指針變量不正確。選項D中的\'\\0\'是一個轉移字符,稱作“空值”,可以給指針變量L賦值。所以,4個選項中選項D符合題意。

49.C解析:逗號表達式的求解步驟是先求解表達式1,然后依次求解表達式2,直到表達式N的值。整個逗號表達式的值就是最后一個表達式N的值。

表達式(x=3*y,x+1)中,第一個表達式x=3*y=3*5=15;第二個表達式x+1=16,但沒有給x或y賦值,所以x還是等于15;第3個表達式x-1=15-1=14,所以y的值為14。

50.D解析:當從鍵盤輸入字符,并且在格式說明中未制定寬度時,輸入字符(包括空格符、回車符、Tab符)將按順序賦予各輸入項。也就是說,輸入字符之間沒有間隔符,所以選項D是正確的。

51.A解析:本題兩次執(zhí)行fun函數,第一次執(zhí)行得f(3)=s=n-f(n-1)=3-f(2):第二次執(zhí)行得s=2,通過傳遞返回值f(2)=2,所以s=3-2=1,即f(3)=1。

52.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數據的。

【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。

53.A解析:while循環(huán)的執(zhí)行過程如下:(1)計算while后面圓括號中表達式的值.當值為非0時,執(zhí)行步驟(2);當值為0時,執(zhí)行步驟(4)。(2)執(zhí)行循環(huán)體一次。(3)轉去執(zhí)行步驟(1)。(4)退出循環(huán)。在選項A)中,表達式(ch=getchar())!='N'表示輸入的字符不等于N,如果這個條件表達式成立,則執(zhí)行循環(huán)體,打印輸出輸入的字符。如果這個條件表達式不成立,即輸入的字符等于N,則退出循環(huán).所以選項A)為正確答案。

54.A解析:本題程序的功能是求1到99之間(包括1和99)所有奇數之和。程序中的while循環(huán)的終止條件為++i=100,在while循環(huán)體內,如果i是偶數,則執(zhí)行continue,跳過這一次循環(huán),執(zhí)行下—次循環(huán),否則求和和。最后輸出的值是1到99之間(包括1和99)所有奇數之和(1+99)*50/2=2500。

55.A解析:通過地址來引用二維數組,若有以下定義:inta[3][4],i,j;且當0≤i≤3,0≤j<4則可以有以下幾種方式來引用數組中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表達式&a[0][0]+2*i+j-2相當于是地址&a[0][0]加上多少偏移量。

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

57.A解析:選項B中d已經為地址,不應在加上求地址符號“&”,故選項B不正確;選項C中,a和b都為變量不是地址,應該在a和b之前加上求地址符號“&”,故選項C不正確:選項D中指針d所指向的存儲空間的位置為變量c的值,不為地址,故選項D不正確,所以,4個選項中A為所選。

58.B解析:在進行順序查找過程中,如果被查的元素是線性表中的最后一個,或者被查元素根本不性表中,則為了查找這個元素需要與線性表中所有元素進行比較,這是順序查找最壞的情況。

59.C解析:函數調用的一般形式為:函數名(實參表列);,實參與形參的個數應相等,類型應一致,在調用函數時,不要指定其返回類型,對于返回類型為void的函數,不能作為賦值表達式的組成部分,所以選C。

60.C

61.A

62.D

63.A語句pc=eh;使得指針變量指向字符數組ch的首地址,即指向字符‘u’,則pc+5指向的是字符向后移動5位,指向字符‘z’。所以輸出的$pc+5的值即為‘Z’。因此A選項正確。

64.B

65.B

66.D冒泡排序、簡單插入排序與簡單選擇排序法在最壞情況下均需要比較n(n-1)/2次,而堆排序在最壞情況下需要比較的次數是nlog2n。故答案為D選項。

67.D本題考查typcdef重新聲明一種結構體類型,其中CIN為結構體類型名,而不是結構體變量,所以D選項正確。

68.A

69.C解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個時期組成,每個時期又進一步劃分為若干個階段。軟件定義時期的基本任務是確定軟件系統的工程需求。軟件定義可分為軟件系統的可行性研究和需求分析兩個階段。軟件開發(fā)時期是具體設計和實現在前一時期定義的軟件,它通常由下面五個階段組成:概要設計、詳細設計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務是使軟件持久地滿足用戶的需要。即當軟件在使用過程中發(fā)現錯誤時應加以改正;當環(huán)境改變時應該修改軟件,以適應新的環(huán)境;當用戶有新要求時應該及時改進軟件,以滿足用戶的新要求。根據上述對軟件生命周期的介紹,可知選項C中的軟件維護不是軟件生命周期開發(fā)階段的任務。因此,本題的正確答案是C。

70.C

71.C本題考查的是指向函數的指針。函數指針定義的基本格式為:類型標識符(*指針變量名)()。“類型標識符”為函數返回值的類型。

72.C解析:在C語言中,引用數組元素時,其數組下標的數據類型可以是整型常量,也可以是整型表達式。

73.Dintm=1,n=2,*P=&m,。q=&Il,*r;即指針變量P指向m,指針變量q指向n,r=P;P=q;q=。;即通過指針變量r,將指針P和指針q的指向交換。因此最后輸出1,2,2,1。

74.B條件表達式的含義是,如果表達式1成立,結果為表達式2的值,如果不成立為表達式3的值。所以題干中k的值這樣取值:如果a>b且b>c,k值結果為1,如果a>b,且b<c則值為0。如果a<b,k值為0。也就是只要a>b與b>c中只要有一個條件不成立,k的值就為0,所以選擇B選項。

75.B

76.B

77.B黑盒測試法指的是根據程序的外部功能,把程序本身看成一個黑盒子,設計測試用例來驗證程序外部功能的正確性。

78.B

\n選項A、C、D分別用一個ifelse語句、兩個if語句和條件表達式表達了計算公式的含義。

\n

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

80.A本題考查C語言中對整數求余數運算。運算符“%”是兩個數相除后取余數。分析本題的程序,main函數中的主體為一個do-while循環(huán),該循環(huán)的終止條件為i==0。do-while循環(huán)內部起始為一個if語句,該語句包含一個if子語句,外層if語句的判斷條件是i%3==1,表示i的取值范圍為{1,4,7,11,…},內部if子語句的判斷條件為i%5==2,表示i的取值范圍為{2,7,12,…}。如果外層和內層的if語句的條件都滿足,則執(zhí)行語句printf('*%d',i);break;,該語句輸出*i形式的結果并跳出do-while循環(huán)。如果兩個if語句有一個條件不滿足,則執(zhí)行i++操作,繼續(xù)執(zhí)行do-while循環(huán)。i的初始值為5,只有滿足兩個if語句條件時才能夠跳出do-while循環(huán),即當i=7時,循環(huán)結束,輸出結果為*7。

81.

82.

【解析】要求出數組周邊元素的平方和,首先要找到二維數組所有的周邊元素。二維數組的周邊元素的特點為行下標或列下標為0或M一1。根據這個特點,找出二維數組中所有的周邊元素,求出其平方和放在變量s中。最后將變量s返回到主函數中。

2021-2022年黑龍江省鶴崗市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在所有的排序方法中,關鍵字比較的次數與記錄的初始排列次序無關的是()。

A.希爾排序B.冒泡排序C.直接插入排序D.直接選擇排序

2.若有定義“inta=5,b=7;”,則表達式a%-(b%2)運算后,a的值為()。

A.0B.1C.11D.3

3.

4.下面程序運行的結果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

5.在排序方法中,元素比較次數與元素的初始排列無關的是()

A.Shell排序B.歸并排序C.直接插入排序D.選擇排序

6.按照“先進先出”組織數據的數據結構是()。

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

7.下列關于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

8.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序的運行結果是()。

A.1,1,2,0B.0,0,0,3C.編譯有錯D.0,1,2,0

9.

10.

11.若希望下列的程序運行后輸出25,程序空白處的正確選項是()。main{intid=50,a[]=(7,4,10,5,8};for()j+=a[i];printf("%d",j-40);}A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

12.設有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

13.下面程序的運行結果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

14.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運行后的輸出結果是()。

A.DB.BC.CD.A

15.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

16.有以下程序:#include<stdio.h>voidfun(intn){if(n/2)fun(n/2);printf(“%d”,n%2);}main(){fun(10);printf(“\n”);}程序運行后的輸出結果是()。

A.0101B.1000C.1100D.1010

17.下列關于函數的敘述中正確的是()。A.A.每個函數都可以被其他函數調用(包括main函數)

B.每個函數都可以被單獨編譯

C.每個函數都可以單獨運行

D.在一個函數內部可以定義另一個函數

18.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

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

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

19.設有以下語句charchl,ch2;scanf("%c%C",&chl,&ch2);若要為變量chl和ch2分別輸入字符A和B,正確的輸入形式應該是()。

A.A和B之間用逗號間隔B.A和B之間不能有任何間隔符C.A和B之間可以用回車間隔D.A和B之間用空格間隔

20.同一個關系模型的任意兩個元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

二、2.填空題(20題)21.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F拷貝。(注:不使用逗號表達式)

while(s[i]){d[j]=【】;j++;}

d[j]=0;

22.下列程序的運行結果為【】。

main()

{inti,j,row=0,colum=0,max,

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

max=a[0][0];

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

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

if(max<a[i][j])

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);

}

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

main()

{inta=1,b=2,c=3;

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

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

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

}

25.執(zhí)行以下“for(i=1;i++<=4;i++);”語句后,變量i的值是()。

26.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

printf("%lf\n…,max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

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

}

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

my_cmp(char*s,char*t)

{while(*s==*t)

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

++s;++t;

}return【】;

}

29.數據庫系統的三級模式分別為______模式、內部級模式與外部級模式。

30.下述函數統計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

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

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

}

return【】}

31.以下程序由終端鍵盤輸入一個文件名,然后把從終端鍵盤輸入的字符依次存放到該文件中,用#作為結束輸入的標志,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

while(ch=getchar()!='#')

fputc(【】,fp);

fclose(fp);

}

32.下面程序的運行結果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

34.深度為5的滿二叉樹中,葉子結點的個數為______。

35.以下程序的輸出結果是______。

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

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

}

36.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

37.結構化設計主要分為系統設計和模塊設計,【】的任務是決定系統的模塊結構。

38.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

39.以下程序的功能是:輸出x、y、z三個變量中的最大值,請?zhí)羁铡?/p>

main()

{intx,y,z,u;

printf("Enterx,y,x;");scanf("%d%d%d",&x,&y,&z);

if(【】)u=x;

elseu=y;

if(【】)u=z;

printf("u=%d",u);

}

40.下面程序的輸出結果是【】。

charb[]="ABCD";

main()

{char*p=b;

for(;*p;p++)

printf("%s",p);

printf("\n");

}

三、1.選擇題(20題)41.

執(zhí)行下列程序中的輸出語句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

42.以下正確的說法是

A.定義函數時,形參的類型說明可以放在函數體內

B.return后邊的值不能為表達式

C.如果函數值的類型與返回值類型不一致,以函數值類型為準

D.如果形參與實參類型不一致,以實參類型為準

43.有以下程序main(){chara,b,C,*d;a='\';b=\\xbc';c='\0xab';d="\0127";princf("%c%c%c%c\n",a,b,c,*D);}編譯時出現錯誤,以下敘述中正確的是

A.程序中只有a='\';語句不正確

B.b='\xbc';語句不正確

C.d="\0127":語句不正確

D.a='\';和c='\0xab';語句都不正確

44.需求分析最終結果是產生

A.項目開發(fā)計劃B.需求規(guī)格說明書C.設計說明書D.可行性分析報告

45.算法的時間復雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數D.算法程序中的指令條數

46.下列選項中,值為1的表達式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0’'-'0'

47.在C語言中,引用數組元素時,其數組下標的數據類型允許是()

A.整型常量B.整型表達式C.整型常量或整型表達式D.任何類型的表達式

48.以下選項中,正確運用指針變量的程序段是()。

A.int*i=NULL;

B.float*f=NULL;scanf("%d",i);*f=10.5;

C.chart='m',*C=&t;

D.long*L;*C=&t;L='0';

49.

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

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

50.設變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式正確的是(注:□代表空格字符)()。

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>

D.10X<回車>20□Y<回車>20Y<回車>

51.以下程序的輸出結果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

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

52.按照“先進先出”組織數據的數據結構是()。

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

53.要求通過while循環(huán)不斷讀入字符,當讀入字母N時結束循環(huán),若變量已正確定義,下列正確的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch);

54.下列程序的輸出結果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

55.現有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}則程序的輸出結果為

A.21B.78C.23D.28

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

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

57.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入3個整數分別賦給變量a、b、c的語句是()。

A.scanf("%d%d%d",&a,&b,d);

B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

58.對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數為______。A.N+1B.NC.(N+1)/2D.N/2

59.有以下函數定義:voidfun(intn,doublex){......}若以下選項中的變量都已正確定義并賦值,則對函數fun正確調用語句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

60.以下敘述中不正確的是()

A.在C中,函數中的自動變量可以賦初值,每調用一次,賦一次初值

B.在C中,在調用函數時,實參和對應形參在類型上只需賦值兼容

C.在C中,外部變量的隱含類別是自動存儲類別

D.在C中,函數形參可以說明為register變量

四、選擇題(20題)61.(64)在單鏈表中,增加頭結點的目的是()

A.方便運算的實現

B.使單鏈表至少有一個結點

C.標識表結點中首結點的位置

D.說明單鏈表是線性表的鏈式存儲實現

62.

63.有以下程序:

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

A.2B.0C.元素ch[5]的地址D.字符y的地址

64.

65.

66.下列排序方法中,最壞情況下比較次數最少的是()。

A.冒泡排序B.簡單選擇排序C.直接插入排序D.堆排序

67.設有以下語句:typedefstructTY{charC;inta{41;}CIN;

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

A.CIN是structTr類型的變量

B.TT是struct類型的變量

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

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

68.

69.下列選項中不屬于軟件生命周期開發(fā)階段任務的是()。

A.軟件測試B.概要設計C.軟件維護D.詳細設計

70.

71.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數

B.ptr是指向int型數據的指針變量

C.ptr是指向函數的指針,該函數返回一個int型數據

D.ptr是一個函數名,該函數的返回值是指向int型數據的指針

72.在C語言中,引用數組元素時,其數組下標的數據類型允許是()。

A.整型表達式B.整型常量C.整型常量或整型表達式D.任何類型的表達式

73.有以下程序:

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

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

74.以下程序段中,與語句:k=a>;b?(b>;c?1:O):0;功能相同的是()。

75.

76.

77.在黑盒測試方法中,設計測試用例的主要根據是()。

A.程序內部邏輯B.程序外部功能C.程序數據結構D.程序流程圖

78.

有以下計算公式

若程序前面已在命令中包含math.h文件,不能夠正確

計算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

79.有下列程序:intfunl(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……}程序執(zhí)行后變量w中的值是()。A.5.21B.5C.5.0D.0.0

80.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

程序的運行結果是

A.*7B.*3*5

C.*5D.*2*6

五、程序改錯題(1題)81.下列給定程序中,函數proc()的作用是:將字符串tt中的大寫字母都改為對應的小寫字母,其他字符不變。

例如,若輸入“I,anl,A,Student”,則輸出“i,am,a,student”。

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

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

試題程序:

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

溫馨提示

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

評論

0/150

提交評論