2021年湖北省黃岡市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021年湖北省黃岡市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021年湖北省黃岡市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021年湖北省黃岡市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021年湖北省黃岡市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2021年湖北省黃岡市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有定義“inta=3;doubleb=0.1263;charch=‘a(chǎn)’;”,則以下選項中敘述有錯的是()。

A.逗號表達式的計算結(jié)果是最后一個表達式的運算結(jié)果

B.運算符“%”只能對整數(shù)類型的變量進行運算

C.語句“ch=(unsignedint)a+b;”是對a與b之和進行強制類型轉(zhuǎn)換,結(jié)果賦值給變量ch

D.復(fù)合運算“a*=b+ch”是將變量b、ch之和與a相乘,結(jié)果再賦值給a

2.設(shè)一棵二叉樹共有50個葉子結(jié)點(終端結(jié)點),則共有___個度為2的結(jié)點。

A.25B.49C.50D.51

3.有以下程序main()inta[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3],*q=p+2;printf("%d\n",*p+*q);程序運行后輸出結(jié)查是

A.16B.10C.8D.6

4.以下程序運行后的輸出結(jié)果是()。

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

5.某線性表中最常用的操作是在最后一個元素之后插入一個元素和刪除第一個元素,則采用()存儲方式最節(jié)省運算時間。

A.單鏈表B.僅有頭指針的單循環(huán)鏈表C.雙鏈表D.僅有尾指針的單循環(huán)鏈表

6.下面程序的運行結(jié)果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

7.

8.

9.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

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

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

11.已知char**s,下面正確的語句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

12.隊和棧的主要區(qū)別是________

A.邏輯結(jié)構(gòu)不同B.存儲結(jié)構(gòu)不同C.所包含的運算個數(shù)不同D.限定插入和刪除的位置不同

13.以下敘述正確的是

A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時,只能使用goto語句

14.(7-6-3-5-4-1-2)堆排序,升序排列,3的位置改變幾次()

A.1B.2C.3D.4E.5F.6

15.

16.設(shè)有定義:int?x=2,以下表達式中,值不為6的是()。

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

17.以下敘述中錯誤的是()。

A.在同一源文件中,函數(shù)名必須唯一

B.凡是帶有返回值的庫函數(shù),都不能通過加分號而作為獨立的語句出現(xiàn)

C.不同函數(shù)中的形式參數(shù)可以同名

D.返回基本數(shù)據(jù)類型的庫函數(shù)的調(diào)用,均可以出現(xiàn)在賦值號右邊的表達式中

18.程序設(shè)計的任務(wù)包括()。

A.編寫程序代碼并上機調(diào)試B.確定所用數(shù)據(jù)結(jié)構(gòu)C.確定所用算法D.以上選項均正確

19.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

20.已知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);

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

22.程序的功能是將文件filel.c的內(nèi)容輸出到屏幕上并復(fù)制到文件file2.c中,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE【】;

fp1=fopen("filel.c","r");

fp2=fopen("file2.c","w");

while(!feof(fp1))putchar(getc(fp1));

rewind(fp1);

while(!feof(fp1))putc(【】);

fclose(fp1);

fclose(fp2);

}

23.下列程序的輸出結(jié)果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

24.【】是數(shù)據(jù)庫設(shè)計的核心。

25.下列程序的輸出結(jié)果是______。

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

26.C語言用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是______、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

27.下列程序的運行結(jié)果是_______。

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

primf("%d,",z<y?x++:y++);

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

}

28.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達【】。

29.下列程序執(zhí)行后輸出的結(jié)果是【】。

main()

{intarr[10],i,k=0);

fot(i=0;i<10;i++)art[i]=i;

for(i=1:i<4;i++)k+=arr[i]+i;

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

}

30.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨立性一般可分為物理獨立性和______。

31.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。

32.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

33.在宏定義#definePI3.14159中,用宏名PI代替一個______。

34.以下程序運行后的輸出結(jié)果是______。

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

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

36.以下程序運行后的輸出結(jié)果是【】。

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

37.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許刪除的一端稱作()。

38.對軟件是否能達到用戶所期望的要求的測試稱為【】。

39.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{structstru

{inta;

floatb;

chard[4];

};

printf("%d\n",sizeof(structstru));}

40.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(S);

for(i=j(luò)0;s[i]!'\0';i++)

if(s[i]!='c')______;

s[j]='\0;

puts(S);

}

三、1.選擇題(20題)41.算法一般都可以用______控制結(jié)構(gòu)組合而成。

A.循環(huán)、分支、遞歸B.順序、循環(huán)、嵌套C.循環(huán)、遞歸、選擇D.順序、選擇、循環(huán)

42.以下程序的輸出結(jié)果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

43.下列選項中合法的賦值語句是()。

A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

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

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

45.棧和隊列的共同點是()。

A.都是先進后出B.都是先進先出C.只允許在端點處插入和刪除元素D.沒有共同點

46.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作

B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作

C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作

D.以上三種說法都不正確

47.在一棵二叉樹上,第5層的結(jié)點數(shù)最多是()A.8B.9C.15D.16

48.有以下程序:#include<stdio.h>main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)pfintf("%s\n",p);}

A.ABCDBCDCDDB.ABCC.BCDD.BCDCDD

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

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

50.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\b",i,j);}程序運行后的輸出結(jié)果是

A.9,9B.8,9C.1,8D.9,8

51.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++;){for(j=1;j<=4-i;j++)printf("");for(j=1;;j<=________;j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是______。

A.iB.2*i-1C.2*i+1D.i+2

52.若函數(shù)調(diào)用時,參數(shù)為基本數(shù)據(jù)類型的變量,下列敘述中正確的是()。

A.實參與其對應(yīng)的形參共占存儲單元

B.只有當(dāng)實參與其對應(yīng)的形參同名時才共占存儲單元

C.實參與其對應(yīng)的形參分別占用不同的存儲單元

D.實參將數(shù)據(jù)傳遞給形參后,立即釋放原先占用的存儲單元

53.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a+b);

54.定義如下變量和數(shù)組:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};則下面語句的輸出結(jié)果是()。for(k=0;k<3;k++)printf("%d",a[k][k]);

A.753B.951C.963D.741

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

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

56.若有定義血b[8],*p=b;則p+6表示()。

A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6

57.C語言結(jié)構(gòu)體類型變量在程序運行期間

A.TC環(huán)境在內(nèi)存中僅僅開辟一個存放結(jié)構(gòu)體變量地址的單元

B.所有的成員一直駐留在內(nèi)存中

C.只有最開始的成員駐留在內(nèi)存中

D.部分成員駐留在內(nèi)存中

58.軟件詳細設(shè)計的主要任務(wù)是確定每個模塊的()。

A.算法和使用的數(shù)據(jù)結(jié)構(gòu)B.外部接口C.功能D.編程

59.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()

A.便于用戶,開發(fā)人員進行理解和交流

B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)

C.作為確認測試和驗收的依據(jù)

D.便于開發(fā)人員進行需求分析

60.下列關(guān)系運算中,能使經(jīng)運算后得到的新關(guān)系中元組個數(shù)少于原來關(guān)系中元組個數(shù)的是()。

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

四、選擇題(20題)61.以下選項中,能用作數(shù)據(jù)常量的是______。A.o115B.0118C.1.5e1.5D.115L

62.以下選項中,能表示邏輯值“假”的是()

A.1B.0.000001C.0D.100.0

63.

64.下列關(guān)于C語言的敘述錯誤的是()。

A)大寫字母和小寫字母的意義相同

B)不同類型的變量可以在一個表達式中

C)在賦值表達式中等號(=)左邊的變量和右邊的值可以是不同類型

D)同一個運算符號在不同的場合可以有不同的含義

65.有以下程序

66.

67.

68.設(shè)變量已正確定義并賦值,以下正確的表達式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

69.

70.(24)對建立良好的程序設(shè)計風(fēng)格,下面描述正確的是()

A.程序應(yīng)簡單、清晰、可讀性好

B.符號名的命名要符合語法

C.充分考慮程序的執(zhí)行效率

D.程序的注釋可有可無

71.有以下函數(shù)intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下關(guān)于aaa函數(shù)的功能敘述正確的是()。A.求字符串S的長度B.比較兩個串的大小C.將串S復(fù)制到串tD.求字符串S所占字節(jié)數(shù)

72.

73.以下程序的輸出結(jié)果是()。

A.1B.7C.9D.13

74.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷e中的字符是否為大寫字母的表達式是()。

A.isupper(c)

B.A<=c<=Z

C.A<=cc<=Z

D.c<=(z-32)(a-32)<=c

75.

76.

77.以下關(guān)于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

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

B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

79.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。A.A.無輸出B.結(jié)果是不確定C.-1D.1

80.

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:求出如下分數(shù)序列的前n項之和,結(jié)果通過函數(shù)值返回。例如,若n=5,則應(yīng)輸出8.391667。請改正程序中的錯誤,使其得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.編寫函數(shù)fun(),其功能是:求出1~1000中能被7或11整除,但不能同時被7和ll整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C逗號表達式的計算結(jié)果是最后一個表達式的運算結(jié)果,選項A正確;運算符“%”是求余運算符,只能對整數(shù)類型的變量進行運算,選項B正確;在語句“ch=(unsignedint)a+b”中,圓括號優(yōu)先級最高,所以首先將a強制轉(zhuǎn)換成無符號整型,再與b相加,結(jié)果賦值給ch,選項C錯誤;復(fù)合運算“a*=b+ch”,先計算“b+ch”的值,再將a與b、ch之和相乘,結(jié)果再賦值給a,選項D正確。故本題答案為C選項。

2.B難易程度:易

3.B解析:本題考查的是指針的簡單應(yīng)用。題目中首先定義了一個int型數(shù)組a并初始化了,然后定義了兩個指針變量p和q,并分別初始化p為指向數(shù)組元素a[3]、q指向p后面的第2個元素即指向a[5]。所以最終輸出的值為a[3]+a[5]的值10。應(yīng)該選B。

4.A參數(shù)r的傳遞是地址傳遞,函數(shù)調(diào)用會改變其值。函數(shù)f的功能是:判斷n是否為3或5的倍數(shù),如果是,則將指針r所指的內(nèi)存空間賦值為n除以3或5的商;否則n遞減,直到它可以被3或5整除。初始時調(diào)用函數(shù)f(7,&r);n=7,執(zhí)行else子句,調(diào)用f(6,&r1);后n=6,執(zhí)行語句if(n%3==0)r1=n/3;,此后執(zhí)行語句*r=rl;。所以r=6/3=2。

5.D

6.C

7.D

8.D

9.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側(cè)表達式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。

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

11.C

12.D

13.B解析:continue是結(jié)束本次循環(huán),直接進入到下次循環(huán)中,break用于循環(huán)語句中的作用是直接跳出本層循環(huán),能從多層循環(huán)中退出的語句除了goto語句,exit,return等語句也能直接跳出多層循環(huán)。注意:continue和break語句在while語句中的作用。

14.B

15.B

16.A?A)選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選A)。B)選項中首先計算逗號表達式中第一一個表達式x++,此時x為3,再執(zhí)行第二個表達式2*x=2*3=6,所以逗號表達式為第二個表達式的值6。C)選項的賦值表達式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項中的表達式可以表示為x=x*(x+1)=2*3=6。

17.B在同一源文件中,函數(shù)名必須唯一,選項A正確。函數(shù)的調(diào)用有兩種形式:①出現(xiàn)在表達式中,可以出現(xiàn)在賦值號右邊的表達式中;②作為獨立的語句完成某種操作。因此選項B錯誤,選項D正確。不同函數(shù)中的形參可以同名,它們的作用域都限制在各自的函數(shù)體內(nèi),選項C正確。故本題答案為B選項。

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

19.B

20.C

21.3131解析:在函數(shù)調(diào)用時,形參值和改變,不會改變實參的值。

22.*fp1*fp2getc(fp1)fp2*fp1,*fp2\r\ngetc(fp1),fp2解析:本題主要考查函數(shù)intputc(intch,FILE*fp)的功能,把ch中的字符輸出到fp所指文件,以及intgetc(FILE*fp),從fp所指文件中讀取一個字符。

23.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

24.數(shù)據(jù)模型數(shù)據(jù)模型

25.88解析:本程序定義了3個指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(P)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。

26.順序結(jié)構(gòu)順序結(jié)構(gòu)解析:結(jié)構(gòu)化程序有3種摹本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)(包括if語句和switch語句)和循環(huán)結(jié)構(gòu)(包括for語句、while語句、do…while語句)。

27.22132,2,1,3解析:本題考查++,--運算符和條件運算符的使用。

“表達式1?表達式2:表達式3”的功能是:表達式1的值若非0,則計算表達式2的值,且表達式2的值為最終結(jié)果;若表達式1的值為0,則計算表達式3的值,且為最終結(jié)果。

本題中,x=1,y=2時,x<y成立,輸出y的值2;y=2,z=3時,z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個輸出x的值不變?yōu)?,y的值為增加后的3。

28.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或不為0。本題具體做法如下:Y%2=1或Y%2!=0。

29.1212解析:本題的第一個for循環(huán)用于給數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

30.邏輯獨立性邏輯獨立性解析:數(shù)據(jù)的獨立性一般可分為物理獨立性和邏輯獨立性。

31.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標記形式有abe.a和p_abc->a。

32.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。

33.字符串字符串解析:本題考查字符替換格式:#define標識符字符串。

34.136136解析:本題考核的知識點是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。

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

36.98768769876\r\n876解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:

類型說明符*指針變量名;

37.隊頭隊頭解析:隊列是只允許在一端刪除,在另一端插入的順序表,在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。

38.有效性測試有效性測試

39.14

40.s[j++]=s[i]s[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當(dāng)前值;如果不相同,則將當(dāng)前值賦予數(shù)組指定位置,并通過.j++將下標加1,指向下一元素要存儲的位置。

41.D解析:算法的控制結(jié)構(gòu)給出了算法的基本框架,不僅決定了算法中各操作的執(zhí)行順序,也直接反映了算法的設(shè)計是否符合結(jié)構(gòu)化原則。一個算法一般都可以用順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組合而成。

42.D解析:本題中是一個含有兩個結(jié)點的循環(huán)鏈表。

C語言中結(jié)構(gòu)體的定義為:

struct結(jié)構(gòu)題類型名

{

成員項表;

};

43.D解析:選項A)是一個合法的賦值表達式,但結(jié)尾沒加分號,所以它不是一個賦值語句;選項B)是一個逗號表達式,也因為結(jié)尾沒有加分號而不是合法的賦值語句,選項C)是一個算術(shù)表達式,雖然有分號,但這個表達式?jīng)]有賦值操作,因此,也不是一條賦值語句。

44.B解析:需求分析是軟件定義時期的最后一個階段??梢愿爬?個方面:①需求獲取;②需求分析;⑧編寫需求規(guī)格說明書;④需求評審。

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

46.A解析:本題考查文件使用方式標識符,以“a+”方式打開一個已存在的文件,則表示保留文件中原有的數(shù)據(jù),文件的位置指針在文件末尾,此時,可以進行追加或讀操作。

47.DD)根據(jù)二叉樹的性質(zhì):二叉樹第i(i≥1)層上至多多有2i-1個結(jié)點。得到第5層的結(jié)點數(shù)最多是16個。

48.D解析:p=s+1是指將s(1)的地址賦給p,循環(huán)的終止條件是p<s+4,s+4表示的是s[4]的地址,總共3次循環(huán),因為程序中是按“%s”格式符輸出,所以應(yīng)該輸出3個字符串,而且每次輸出字符串的字符個數(shù)減少1。由此可得選項D)正確。

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

50.D解析:本題首先定義了字符數(shù)組a,由于它的長度省略,所以其長度由初值個數(shù)確定,為9。接著將sizeof()函數(shù)返回的值賦給i(sizeof()函數(shù)的作用是返回運算對象占用的字符數(shù)),所以i值為9。然后將strlen()函數(shù)的返回值賦給j(strlen()函數(shù)的作用是返回字符串的長度,不包括字符串的結(jié)束標記'\\0'),所以j值為8,故最后輸出的i,j值為9,8。4個選項中D正確。

51.B解析:根據(jù)題意可知第二個j循環(huán)結(jié)束的條件是第i行打印出的'*'的個數(shù)。

52.C解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)的形參是函數(shù)定義時由用戶定義的形式上的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在函數(shù)調(diào)用時,實參和其所對應(yīng)的形參分別占用不同的存儲單元,彼此之間不影響。

53.B解析:選項A的結(jié)尾沒用‘;’,所以不是一條語句:選項C中的表達式不會改變?nèi)魏巫兞康膬?nèi)容,也不是合法的賦值語句;選項D有語法錯誤,int應(yīng)該加上括號。所以,4個選項中只有選項B符合題意,運行后d的內(nèi)容被減一。

54.B解析:本題中的二維數(shù)組的每個元素就是一個由3個元素構(gòu)成的一維數(shù)組,根據(jù)條件for(k=0;k<3;++)和要求的a[k][k]可以得出本題的答案應(yīng)該是951。

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

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

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

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

56.B解析:指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中將p+6指的是將指針向后移動了6個存儲單元,指向b[6],存放的是b[6]的地址。

57.B解析:結(jié)構(gòu)體類型的變量在程序運行期間要作為一個整體占用連續(xù)的內(nèi)存單元。

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

59.D解析:軟件需求規(guī)格說明書SRS,SoftwareRequirementSpecification)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它有以下幾個方面的作用,①便于用戶、開發(fā)人員進行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù);③作為確認測試和驗收的依據(jù)。

60.A解析:選擇運算是在指定的關(guān)系中選取所有滿足給定條件的元組,構(gòu)成一個新的關(guān)系,而這個新的關(guān)系是原關(guān)系的一個子集。因此,一個關(guān)系經(jīng)選擇運算后得到的新關(guān)系中,元組個數(shù)少于原來關(guān)系中元組個數(shù)。

61.D在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。整型常量和實型常量又稱數(shù)值型常量?;菊统A恐荒苡脭?shù)字表示,不帶小數(shù)點,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—個字母l(L的小寫)或L;實型常量必須用帶小數(shù)點的數(shù)表示,例如3.14159、-2.71828、0.0等;選項A中字母o不符合要求,選頂B中超出八進制的范圍,選項C中e后面的不為整數(shù),因此選頂D是正確的。

62.C\n本題考查邏輯值假,在程序中非0字符表示邏輯真,0表示邏輯假,所以答案選擇C。

\n

63.D

64.AC語言中,大小寫代表不同的兩個標識符。

65.Ap->x值為l,p->y值為2,前置自增表達式分別為23,所以選擇A)。

66.B

67.C

68.A?B)與D)選項中取模運算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B)、D)錯誤。C)選項中不能將x+z的值賦給表達式y(tǒng)*5,所以C)錯誤。

69.B

70.A

71.A在while循環(huán)開始前,指針t和s都指向字符串的起始位置。while循環(huán)的判斷條件中,判斷t所指位置是否為字符串的結(jié)束標志,同時讓t右移一位。當(dāng)while循環(huán)結(jié)束時,t自減1,此時t指向的位置是字符串的結(jié)束標志,故t-s的值是字符串的長度。

72.B

73.C1題中用動態(tài)存儲分配函數(shù)mMloc分配了一個int型數(shù)據(jù)長度大1小的內(nèi)存,然后指針p指向了這段內(nèi)存,函數(shù)f中對P所指1向的數(shù)據(jù)進行了賦值,P[1][1]為二維數(shù)組第二行第二列的元素,對應(yīng)于實參a的元素9,所以輸出結(jié)果為9。

74.B解析:在本題中,選項B,實際是先計算關(guān)系表達式“‘A<=c’”的值是0還是1,再比較該值與字符‘Z’之間的大小關(guān)系,顯然不能實現(xiàn)題目所要求的功能,而選項A,C,D都可以。

75.D

76.C

77.A用typedef沒有增加新類型,所以選擇A)。

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

79.D因為在邏輯表達式中,兩邊的賦值表達式都成立,即值為1,故選擇D選項。

80.C

81.(1)錯誤:fun(intn)

正確:doublefun(intn)

(2)錯誤:s=s+(Double)a/b;

正確:s=s+(double)a/b;

【解析】本題考查函數(shù)的定義規(guī)則。函數(shù)定義的一般形式為類型標識符函數(shù)名(形式參數(shù)表列){函數(shù)體}。fun()函數(shù)中,最后返回的是變量s,由變量s的定義可知,返回值是double型,所以fun()函數(shù)定義時應(yīng)明確注明標識符double類型。Double為書寫問題,寫程序時切記書寫格式。

82.

【解析】根據(jù)題意,所寫函數(shù)要用for循環(huán)實現(xiàn)對整數(shù)1~1000的遍歷;通過if語句找出能被7或11整除,但不能同時被7和11整除的所有整數(shù),因為同時被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除,可得出表達式“(i%7==0||i%11==O)&&i%77!=0”;再按題目要求,將找出來的整數(shù)放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)即可。

2021年湖北省黃岡市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有定義“inta=3;doubleb=0.1263;charch=‘a(chǎn)’;”,則以下選項中敘述有錯的是()。

A.逗號表達式的計算結(jié)果是最后一個表達式的運算結(jié)果

B.運算符“%”只能對整數(shù)類型的變量進行運算

C.語句“ch=(unsignedint)a+b;”是對a與b之和進行強制類型轉(zhuǎn)換,結(jié)果賦值給變量ch

D.復(fù)合運算“a*=b+ch”是將變量b、ch之和與a相乘,結(jié)果再賦值給a

2.設(shè)一棵二叉樹共有50個葉子結(jié)點(終端結(jié)點),則共有___個度為2的結(jié)點。

A.25B.49C.50D.51

3.有以下程序main()inta[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3],*q=p+2;printf("%d\n",*p+*q);程序運行后輸出結(jié)查是

A.16B.10C.8D.6

4.以下程序運行后的輸出結(jié)果是()。

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

5.某線性表中最常用的操作是在最后一個元素之后插入一個元素和刪除第一個元素,則采用()存儲方式最節(jié)省運算時間。

A.單鏈表B.僅有頭指針的單循環(huán)鏈表C.雙鏈表D.僅有尾指針的單循環(huán)鏈表

6.下面程序的運行結(jié)果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

7.

8.

9.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

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

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

11.已知char**s,下面正確的語句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

12.隊和棧的主要區(qū)別是________

A.邏輯結(jié)構(gòu)不同B.存儲結(jié)構(gòu)不同C.所包含的運算個數(shù)不同D.限定插入和刪除的位置不同

13.以下敘述正確的是

A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時,只能使用goto語句

14.(7-6-3-5-4-1-2)堆排序,升序排列,3的位置改變幾次()

A.1B.2C.3D.4E.5F.6

15.

16.設(shè)有定義:int?x=2,以下表達式中,值不為6的是()。

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

17.以下敘述中錯誤的是()。

A.在同一源文件中,函數(shù)名必須唯一

B.凡是帶有返回值的庫函數(shù),都不能通過加分號而作為獨立的語句出現(xiàn)

C.不同函數(shù)中的形式參數(shù)可以同名

D.返回基本數(shù)據(jù)類型的庫函數(shù)的調(diào)用,均可以出現(xiàn)在賦值號右邊的表達式中

18.程序設(shè)計的任務(wù)包括()。

A.編寫程序代碼并上機調(diào)試B.確定所用數(shù)據(jù)結(jié)構(gòu)C.確定所用算法D.以上選項均正確

19.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

20.已知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);

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

22.程序的功能是將文件filel.c的內(nèi)容輸出到屏幕上并復(fù)制到文件file2.c中,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE【】;

fp1=fopen("filel.c","r");

fp2=fopen("file2.c","w");

while(!feof(fp1))putchar(getc(fp1));

rewind(fp1);

while(!feof(fp1))putc(【】);

fclose(fp1);

fclose(fp2);

}

23.下列程序的輸出結(jié)果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

24.【】是數(shù)據(jù)庫設(shè)計的核心。

25.下列程序的輸出結(jié)果是______。

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

26.C語言用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是______、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

27.下列程序的運行結(jié)果是_______。

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

primf("%d,",z<y?x++:y++);

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

}

28.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達【】。

29.下列程序執(zhí)行后輸出的結(jié)果是【】。

main()

{intarr[10],i,k=0);

fot(i=0;i<10;i++)art[i]=i;

for(i=1:i<4;i++)k+=arr[i]+i;

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

}

30.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨立性一般可分為物理獨立性和______。

31.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。

32.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

33.在宏定義#definePI3.14159中,用宏名PI代替一個______。

34.以下程序運行后的輸出結(jié)果是______。

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

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

36.以下程序運行后的輸出結(jié)果是【】。

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

37.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許刪除的一端稱作()。

38.對軟件是否能達到用戶所期望的要求的測試稱為【】。

39.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{structstru

{inta;

floatb;

chard[4];

};

printf("%d\n",sizeof(structstru));}

40.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(S);

for(i=j(luò)0;s[i]!'\0';i++)

if(s[i]!='c')______;

s[j]='\0;

puts(S);

}

三、1.選擇題(20題)41.算法一般都可以用______控制結(jié)構(gòu)組合而成。

A.循環(huán)、分支、遞歸B.順序、循環(huán)、嵌套C.循環(huán)、遞歸、選擇D.順序、選擇、循環(huán)

42.以下程序的輸出結(jié)果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

43.下列選項中合法的賦值語句是()。

A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

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

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

45.棧和隊列的共同點是()。

A.都是先進后出B.都是先進先出C.只允許在端點處插入和刪除元素D.沒有共同點

46.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作

B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作

C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作

D.以上三種說法都不正確

47.在一棵二叉樹上,第5層的結(jié)點數(shù)最多是()A.8B.9C.15D.16

48.有以下程序:#include<stdio.h>main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)pfintf("%s\n",p);}

A.ABCDBCDCDDB.ABCC.BCDD.BCDCDD

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

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

50.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\b",i,j);}程序運行后的輸出結(jié)果是

A.9,9B.8,9C.1,8D.9,8

51.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++;){for(j=1;j<=4-i;j++)printf("");for(j=1;;j<=________;j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是______。

A.iB.2*i-1C.2*i+1D.i+2

52.若函數(shù)調(diào)用時,參數(shù)為基本數(shù)據(jù)類型的變量,下列敘述中正確的是()。

A.實參與其對應(yīng)的形參共占存儲單元

B.只有當(dāng)實參與其對應(yīng)的形參同名時才共占存儲單元

C.實參與其對應(yīng)的形參分別占用不同的存儲單元

D.實參將數(shù)據(jù)傳遞給形參后,立即釋放原先占用的存儲單元

53.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a+b);

54.定義如下變量和數(shù)組:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};則下面語句的輸出結(jié)果是()。for(k=0;k<3;k++)printf("%d",a[k][k]);

A.753B.951C.963D.741

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

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

56.若有定義血b[8],*p=b;則p+6表示()。

A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6

57.C語言結(jié)構(gòu)體類型變量在程序運行期間

A.TC環(huán)境在內(nèi)存中僅僅開辟一個存放結(jié)構(gòu)體變量地址的單元

B.所有的成員一直駐留在內(nèi)存中

C.只有最開始的成員駐留在內(nèi)存中

D.部分成員駐留在內(nèi)存中

58.軟件詳細設(shè)計的主要任務(wù)是確定每個模塊的()。

A.算法和使用的數(shù)據(jù)結(jié)構(gòu)B.外部接口C.功能D.編程

59.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()

A.便于用戶,開發(fā)人員進行理解和交流

B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)

C.作為確認測試和驗收的依據(jù)

D.便于開發(fā)人員進行需求分析

60.下列關(guān)系運算中,能使經(jīng)運算后得到的新關(guān)系中元組個數(shù)少于原來關(guān)系中元組個數(shù)的是()。

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

四、選擇題(20題)61.以下選項中,能用作數(shù)據(jù)常量的是______。A.o115B.0118C.1.5e1.5D.115L

62.以下選項中,能表示邏輯值“假”的是()

A.1B.0.000001C.0D.100.0

63.

64.下列關(guān)于C語言的敘述錯誤的是()。

A)大寫字母和小寫字母的意義相同

B)不同類型的變量可以在一個表達式中

C)在賦值表達式中等號(=)左邊的變量和右邊的值可以是不同類型

D)同一個運算符號在不同的場合可以有不同的含義

65.有以下程序

66.

67.

68.設(shè)變量已正確定義并賦值,以下正確的表達式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

69.

70.(24)對建立良好的程序設(shè)計風(fēng)格,下面描述正確的是()

A.程序應(yīng)簡單、清晰、可讀性好

B.符號名的命名要符合語法

C.充分考慮程序的執(zhí)行效率

D.程序的注釋可有可無

71.有以下函數(shù)intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下關(guān)于aaa函數(shù)的功能敘述正確的是()。A.求字符串S的長度B.比較兩個串的大小C.將串S復(fù)制到串tD.求字符串S所占字節(jié)數(shù)

72.

73.以下程序的輸出結(jié)果是()。

A.1B.7C.9D.13

74.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷e中的字符是否為大寫字母的表達式是()。

A.isupper(c)

B.A<=c<=Z

C.A<=cc<=Z

D.c<=(z-32)(a-32)<=c

75.

76.

77.以下關(guān)于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

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

B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

79.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。A.A.無輸出B.結(jié)果是不確定C.-1D.1

80.

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:求出如下分數(shù)序列的前n項之和,結(jié)果通過函數(shù)值返回。例如,若n=5,則應(yīng)輸出8.391667。請改正程序中的錯誤,使其得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.編寫函數(shù)fun(),其功能是:求出1~1000中能被7或11整除,但不能同時被7和ll整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C逗號表達式的計算結(jié)果是最后一個表達式的運算結(jié)果,選項A正確;運算符“%”是求余運算符,只能對整數(shù)類型的變量進行運算,選項B正確;在語句“ch=(unsignedint)a+b”中,圓括號優(yōu)先級最高,所以首先將a強制轉(zhuǎn)換成無符號整型,再與b相加,結(jié)果賦值給ch,選項C錯誤;復(fù)合運算“a*=b+ch”,先計算“b+ch”的值,再將a與b、ch之和相乘,結(jié)果再賦值給a,選項D正確。故本題答案為C選項。

2.B難易程度:易

3.B解析:本題考查的是指針的簡單應(yīng)用。題目中首先定義了一個int型數(shù)組a并初始化了,然后定義了兩個指針變量p和q,并分別初始化p為指向數(shù)組元素a[3]、q指向p后面的第2個元素即指向a[5]。所以最終輸出的值為a[3]+a[5]的值10。應(yīng)該選B。

4.A參數(shù)r的傳遞是地址傳遞,函數(shù)調(diào)用會改變其值。函數(shù)f的功能是:判斷n是否為3或5的倍數(shù),如果是,則將指針r所指的內(nèi)存空間賦值為n除以3或5的商;否則n遞減,直到它可以被3或5整除。初始時調(diào)用函數(shù)f(7,&r);n=7,執(zhí)行else子句,調(diào)用f(6,&r1);后n=6,執(zhí)行語句if(n%3==0)r1=n/3;,此后執(zhí)行語句*r=rl;。所以r=6/3=2。

5.D

6.C

7.D

8.D

9.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側(cè)表達式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。

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

11.C

12.D

13.B解析:continue是結(jié)束本次循環(huán),直接進入到下次循環(huán)中,break用于循環(huán)語句中的作用是直接跳出本層循環(huán),能從多層循環(huán)中退出的語句除了goto語句,exit,return等語句也能直接跳出多層循環(huán)。注意:continue和break語句在while語句中的作用。

14.B

15.B

16.A?A)選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選A)。B)選項中首先計算逗號表達式中第一一個表達式x++,此時x為3,再執(zhí)行第二個表達式2*x=2*3=6,所以逗號表達式為第二個表達式的值6。C)選項的賦值表達式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項中的表達式可以表示為x=x*(x+1)=2*3=6。

17.B在同一源文件中,函數(shù)名必須唯一,選項A正確。函數(shù)的調(diào)用有兩種形式:①出現(xiàn)在表達式中,可以出現(xiàn)在賦值號右邊的表達式中;②作為獨立的語句完成某種操作。因此選項B錯誤,選項D正確。不同函數(shù)中的形參可以同名,它們的作用域都限制在各自的函數(shù)體內(nèi),選項C正確。故本題答案為B選項。

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

19.B

20.C

21.3131解析:在函數(shù)調(diào)用時,形參值和改變,不會改變實參的值。

22.*fp1*fp2getc(fp1)fp2*fp1,*fp2\r\ngetc(fp1),fp2解析:本題主要考查函數(shù)intputc(intch,FILE*fp)的功能,把ch中的字符輸出到fp所指文件,以及intgetc(FILE*fp),從fp所指文件中讀取一個字符。

23.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

24.數(shù)據(jù)模型數(shù)據(jù)模型

25.88解析:本程序定義了3個指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(P)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。

26.順序結(jié)構(gòu)順序結(jié)構(gòu)解析:結(jié)構(gòu)化程序有3種摹本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)(包括if語句和switch語句)和循環(huán)結(jié)構(gòu)(包括for語句、while語句、do…while語句)。

27.22132,2,1,3解析:本題考查++,--運算符和條件運算符的使用。

“表達式1?表達式2:表達式3”的功能是:表達式1的值若非0,則計算表達式2的值,且表達式2的值為最終結(jié)果;若表達式1的值為0,則計算表達式3的值,且為最終結(jié)果。

本題中,x=1,y=2時,x<y成立,輸出y的值2;y=2,z=3時,z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個輸出x的值不變?yōu)?,y的值為增加后的3。

28.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或不為0。本題具體做法如下:Y%2=1或Y%2!=0。

29.1212解析:本題的第一個for循環(huán)用于給數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

30.邏輯獨立性邏輯獨立性解析:數(shù)據(jù)的獨立性一般可分為物理獨立性和邏輯獨立性。

31.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標記形式有abe.a和p_abc->a。

32.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。

33.字符串字符串解析:本題考查字符替換格式:#define標識符字符串。

34.136136解析:本題考核的知識點是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。

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

36.98768769876\r\n876解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:

類型說明符*指針變量名;

37.隊頭隊頭解析:隊列是只允許在一端刪除,在另一端插入的順序表,在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。

38.有效性測試有效性測試

39.14

40.s[j++]=s[i]s[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當(dāng)前值;如果不相同,則將當(dāng)前值賦予數(shù)組指定位置,并通過.j++將下標加1,指向下一元素要存儲的位置。

41.D解析:算法的控制結(jié)構(gòu)給出了算法的基本框架,不僅決定了算法中各操作的執(zhí)行順序,也直接反映了算法的設(shè)計是否符合結(jié)構(gòu)化原則。一個算法一般都可以用順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組合而成。

42.D解析:本題中是一個含有兩個結(jié)點的循環(huán)鏈表。

C語言中結(jié)構(gòu)體的定義為:

struct結(jié)構(gòu)題類型名

{

成員項表;

};

43.D解析:選項A)是一個合法的賦值表達式,但結(jié)尾沒加分號,所以它不是一個賦值語句;選項B)是一個逗號表達式,也因為結(jié)尾沒有加分號而不是合法的賦值語句,選項C)是一個算術(shù)表達式,雖然有分號,但這個表達式?jīng)]有賦值操作,因此,也不是一條賦值語句。

44.B解析:需求分析是軟件定義時期的最后一個階段??梢愿爬?個方面:①需求獲??;②需求分析;⑧編寫需求規(guī)格說明書;④需求評審。

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

46.A解析:本題考查文件使用方式標識符,以“a+”方式打開一個已存在的文件,則表示保留文件中原有的數(shù)據(jù),文件的位置指針在文件末尾,此時,可以進行追加或讀操作。

47.DD)根據(jù)二叉樹的性質(zhì):二叉樹第i(i≥1)層上至多多有2i-1個結(jié)點。得到第5層的結(jié)點數(shù)最多是16個。

48.D解析:p=s+1是指將s(1)的地址賦給p,循環(huán)的終止條件是p<s+4,s+4表示的是s[4]的地址,總共3次循環(huán),因為程序中是按“%s”格式

溫馨提示

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

評論

0/150

提交評論