2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩103頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.

3.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達(dá)式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

4.下面程序的輸出結(jié)果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

5.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實現(xiàn)一種算法

C.程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一一個c程序文件存在

6.

7.下列標(biāo)識符不是關(guān)鍵字的是()。

A.breakB.charC.SwithchD.return

8.當(dāng)輸入為"hello?"時,下面程序的執(zhí)行結(jié)果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello

9.二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序線索化二叉樹,節(jié)點E的線索化指向節(jié)點()

A.BCB.ACC.DFD.CF

10.有以下程序段:charstr[4][12]={“aaa”,“bbb”,“ccc”,“ddd”},*p[4];inti;for(i=0;i<4;i++)p[i]=str[i];以下選項中不能正確引用字符串的是()。

A.*p[3]B.p[3]C.str[2]D.*p

11.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a(chǎn)’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的運行結(jié)果是()。

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

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

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

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

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

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

13.樹是結(jié)點的集合,它的根結(jié)點數(shù)目是()。

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

14.下面程序輸出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,

15.圖的深度優(yōu)先遍歷類似于二叉樹的_______。

A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷

16.CPU能夠直接訪問的存儲器是

A.軟盤B.硬盤C.RAMD.CD-ROM

17.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}從第一列開始輸入數(shù)據(jù)(<CR>代表…個回車符):3845<CR>,則狴序輸出結(jié)果為()。

A.77889B.77868C.776810D.7.78866e+007

18.C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。

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

19.

20.有以下程序:#includemain(){inty=9;for(;y>0;y--)If?y%3==0)printf("%d",---y);}程序的運行結(jié)果是()。A.852B.963C.741D.875421

二、2.填空題(20題)21.下列程序的輸出結(jié)果是16.00,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

22.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

23.以下程序的運行結(jié)果是【】。

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

main()

{inti=6,j=8;

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

}

24.表示條件;10<x<100或x<0的C語言表達(dá)式是【】。

25.x、y、x均為int型變量,描述"x、y和z中至少有兩個為正數(shù)"的表達(dá)式是______。

26.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

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

main()

{inti;

for(i=1;i=1;i++)

{if(i>4)

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

break;}

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

28.若intx=1,y=2;則計算表達(dá)式y(tǒng)+=y-=x*=y后的y值是()。

29.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。

30.“printf("%d\n",strlen("\t\"023\xABC\n");”語句的輸出結(jié)果是______。

31.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,這稱為______。

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

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

}

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

}

33.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。

34.下列程序的功能是對輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

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

}

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

36.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

37.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,j,x;

for(j=4;j【】;j--)

{for(i=1;i<=4;i++)

[x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

38.mysulen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

39.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

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

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk

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

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

三、1.選擇題(20題)41.請選出可用作C語言用戶標(biāo)識符的一組()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

42.下列程序的輸出結(jié)果是_______。fun(){staticintx=5;if(x++>5)printf("%d",x);elseprintf("%d",x++);}main(){fun();fun();}

A.67B.69C.68D.78

43.已知形成鏈表的存儲結(jié)構(gòu)如下圖所示,則下述類型描述中的空白處應(yīng)填______。struct1ink{chardata;}node;

A.structlinknext

B.link*next

C.sluctnextlink

D.structlink*next

44.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。

A.實體完整性和參照完整性

B.參照完整性和用戶自定義完整性

C.實體完整性和用戶自定義完整性

D.實體完整性、參照完整性和用戶自定義完整性

45.若有以下定義和語句,且0<=I<10,則對數(shù)組元素的錯誤引用是()

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

int*p,I

p=a;

A.*(a+I(xiàn))B.a[p-a]C.p+I(xiàn)D.*(&a[I])

46.已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}

A.表達(dá)式非法,輸出零或不確定值

B.因輸出項過多,無輸出或輸出不確定值

C.輸出結(jié)果為20,141

D.輸出結(jié)果為20,141,20

47.循環(huán)鏈表的主要優(yōu)點是______。

A.不再需要頭指針了

B.己知某個結(jié)點的位置后,能夠容易找到它的直接前驅(qū)

C.在進(jìn)行插入、刪除運算時,能更好地保證鏈表不斷開

D.從表中任一結(jié)點出發(fā)都能掃描到整個鏈表

48.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是A.#defineN10inta[N];B.#definen5inta[2*n];C.inta[5+5];

D.intn=10,a[n];

49.下列敘述中正確的是A.數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)

C.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問題

D.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

50.下列所述中,是軟件調(diào)試技術(shù)的是()。

A.錯誤推斷B.集成測試C.回溯法D.邊界值分析

51.下列選項中不屬于算法的特性的是

A.確定性B.可行性C.有輸出D.無窮性

52.在設(shè)計程序時,應(yīng)采納的原則之一是______。

A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好

53.下面函數(shù)調(diào)用語句含有實參的個數(shù)為func((exp1,exp2),(exp3,exp4,exp5));

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

54.以下敘述中錯誤的是A.算法正確的程序最終一定會結(jié)束

B.算法正確的程序可以有零個輸出

C.算法正確的程序可以有零個輸入

D.算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果

55.在結(jié)構(gòu)化設(shè)計方法中,生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示______。A.A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

56.以下程序的輸出結(jié)果是()。main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=O;i<4;i+2)printf("%d",p[i]);}

A.52B.51C.53D.97

57.關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是()。

A.實體完整性約束B.參照完整性約束C.屬性完整性約束D.用戶自定義的完整性約束

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

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值.

D.當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL

59.設(shè)有定義:inta=2,b=3,c=4;,則下列選項中值為0的表達(dá)式是()。

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

60.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

四、選擇題(20題)61.

62.下列描述中不正確的是()。

A.字符型數(shù)組中可能存放字符串。

B.可以對字符型數(shù)組進(jìn)行整體輸入、輸出。

C.可以對整型數(shù)組進(jìn)行整體輸入、輸出。

D.不能在賦值語句中通過賦值運算符“=”對字符型數(shù)組進(jìn)行整體賦值。

63.

64.有以下程序

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));

}

程序的運行結(jié)果是

A.9B.編譯出錯

C.21D.9.0

65.對于一個正常運行的C程序,以下敘述中正確的是()。

A.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束.

C.程序的執(zhí)行總是從main函數(shù)開始、

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

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

main

{intx=0.5;charz='a';

printf("%d\n",(x&1)&&(z<'2'));}A.A.0B.1C.2D.3

67.

68.

69.一些重要的程序設(shè)計語言(inC語言和Pascal語言)允許過程的遞歸調(diào)用,而實現(xiàn)遞歸調(diào)用中的存儲分配通常用()。

A.棧B.堆C.數(shù)組D.鏈表

70.

71.

若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結(jié)果為()。

cb=b;

k=10;

printf("%X,%o,”,ch,ch,k);

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

A.因變量類型與格式描述符的類型不匹配,輸出無定值

B.輸出項與格式描述符個數(shù)不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

72.(54)在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序

B.選擇排序

C.快速排序

D.歸并排序

73.

74.

75.

76.若有語句:Char*line[5];,以下敘述中正確的是()。

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為Char的指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符

D.定義line是一個指向字符型函數(shù)的指針

77.以下正確的字符串常量是()。A.A."\\\"

B.'abc'

C.OlympicGames

D.""

78.

79.有以下程序:

程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果()。

A.不等于10的整數(shù)

B.大于3且不等于l0的整數(shù)

C.大于3或等于l0的整數(shù)

D.小于3的整數(shù)

80.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

五、程序改錯題(1題)81.寫出下列程序的運行結(jié)果。

#include“stdio.h”

Main

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

intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);

printf(“%d%d%d”,*p,m,n);}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將s所指字符串中ASCII值為奇數(shù)的字符刪除,將剩余字符形成的新字符串放在t所指數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符A的ASCII值為奇數(shù),字符1的ASCII值也為奇數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF24”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

參考答案

1.D

2.B

3.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達(dá)式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達(dá)式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達(dá)式,(p+9)來引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。

4.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串的第—個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。

5.B[解析]在一個C語言程序中可以進(jìn)行多種算法的實現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。

6.B

7.C在C語言中,字母區(qū)分大小,所以break、char、return、switch都是C語言中的關(guān)鍵字,而Swithch不是。

8.A本題考查getchar函數(shù)與putchar函數(shù),通過9etchar函數(shù)讀入字符,并通過putchar函數(shù)將字符逐個輸出,當(dāng)用戶輸入“?”時停止輸出,且c是一個字符變量只占一個字節(jié)。

9.D

10.A“*P[3]”是一個字符,也就是str[3][0],不是字符串,選項A錯誤。“P[3]”“str[2]”和“*p”分別代表了ddd、ccc、aaa。故本題答案為A選項。

11.B程序首先給字符數(shù)組s賦值為“012xy”。for循環(huán)語句的功能是遍歷字符串,通過if條件語句對字符串中的小寫字母進(jìn)行計數(shù),字符串中小寫字母個數(shù)為2,即n=2。故本題答案為B選項。

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

13.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點的集合,對應(yīng)任意一棵非空樹,它具有以下幾點重要的性質(zhì)。

①有且僅有一個特定的稱為根的結(jié)點。

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

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

14.D本題考查雙重函數(shù)調(diào)用及for循環(huán)使用,fun函數(shù)中第一個for循環(huán)語句的作用是給數(shù)組a賦值。當(dāng)?shù)谝淮握{(diào)用fun函數(shù)時,把實參1傳給形參,輸出a數(shù)組的元素為1,3,5;第二次調(diào)用fun函數(shù)時,由于數(shù)組a為靜態(tài)局部變量,故輸出a數(shù)組的元素為一1,3,7。

15.A

16.C解析:CPU讀取和寫人數(shù)據(jù)都是通過內(nèi)存來完成的。

17.A

18.CChar類型數(shù)據(jù)占1個字節(jié)。

19.D

20.A答疑:[解析]第一次for循環(huán),y的值為9.y%3的值為0.滿足條件打印-y,即先減一-后打印,所以打印8;第二次for循環(huán),y的值為7.y%3的值為1.不執(zhí)行打印語句;第三次for循環(huán),y的值為6.y%3的值為0.滿足條件打印--y,即先減-后打印,所以打印5;第四次for循環(huán),y的值為4.不滿足條件,不執(zhí)行打印語句;第五次for循環(huán),y的值為3.滿足條件,打印輸出2;第六次for循環(huán),y的值為1.不滿足條件,不執(zhí)行打印語句。

解析:本題以浮點格式輸出z值,寬度為5,有2位小數(shù)。應(yīng)該注意的是,兩個整數(shù)運算結(jié)果仍為整數(shù),如1/2的結(jié)果為0。本題可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值為6.6。

22.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。

23.99解析:用i和j替換宏MAL(a,b)小的參數(shù)a和b,(a>b?a:b)+1等價于(i>j?i:j)+1。因為6>8為假,則關(guān)系表達(dá)式i>j?i:j的值就是j的值,j=8,8+1=9,最后輸出9。

24.(x>10&&x<100)||x<0

25.((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))解析:題目要求“x、y和z中至少有兩個為正數(shù)”,即x、y和z這3個數(shù)中必須有兩個是正數(shù),且這3個數(shù)中的哪兩個數(shù)都有可能是正數(shù),所以它們之間是或的關(guān)系。

26.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標(biāo),需先預(yù)設(shè)1個臨時最大元素的下標(biāo),并順序逐一考查數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時最大元素更大時,就用當(dāng)前元素的下標(biāo)更新臨時最大元素下標(biāo)。直至考查了數(shù)組的全部元素后,這臨時最大元素下標(biāo)就是數(shù)組的最大元素下標(biāo)。通常預(yù)設(shè)的最大元素下標(biāo)是數(shù)組的首元素下標(biāo),考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標(biāo)的變量是k,變量p控制順序考查的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時最大元素s[k)更大時,應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。

27.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用在本題中是結(jié)束for循環(huán)直接跳出循環(huán)體外。當(dāng)i=1時,因為if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出1,同時i自加1;執(zhí)行第二次for循環(huán)時,i:3;同樣的if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出3,同時i自加1執(zhí)行第三次for循環(huán)時,i=5,訌語句條件滿足,所以執(zhí)行printf('%d\\n',i)輸出5,然后break語句跳出了for循環(huán)。

28.0

29.測試實例測試實例解析:進(jìn)行軟件測試時,應(yīng)精心設(shè)計測試實例和選擇測試數(shù)據(jù),以對系統(tǒng)進(jìn)行全面測試。

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

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

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

31.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應(yīng)用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式)改變時,不需要修改應(yīng)用程序。而邏輯獨立性是指當(dāng)邏輯結(jié)構(gòu)改變時,不需要修改應(yīng)用程序。

32.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因為y=0,所以執(zhí)行case0:a++;break;此時a=1執(zhí)行case2:a++;b++;這時a=2,b=1;最后輸出結(jié)果是21。

33.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量;算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

34.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析題目可知,程序中運用函數(shù)c=getchar()從標(biāo)準(zhǔn)輸入設(shè)備讀取下一個字符,而且是一行的字符(即沒有換行),所以條件為(c=getchar())!='\\n'。

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

36.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

37.>=1或>0i>=1或>0\r\ni解析:程序的外層for循環(huán)控制輸出數(shù)據(jù)的行數(shù),故第一處填“>=1”或“>0”;內(nèi)層循環(huán)控制每行輸出的個數(shù)。在內(nèi)層for循環(huán)中,語句x=(j-1)*4+______;用于控制輸出方陣中的具體數(shù)據(jù),由于這些數(shù)據(jù)與其所在的行、列(j,i)具有x=(j-1)*4+i的關(guān)系,故第二處填i。

38.*(srt+i)或str[i]i*(srt+i)或str[i]\r\ni解析:求str指向的字符串長度的算法是:用一個變量i表示字符串中字符的位置,一開始賦值為0,取出i位置的字符,判斷是否為'\\0',若不是則i的值加1,如此循環(huán)直到取出的字符是'\\0'為止,此時i的值就是字符串的長度。由此可知,第一個空處應(yīng)填第i位置上的字符*(str+i);第二個空格應(yīng)該填字符串的長度i。

39.軟件開發(fā)

40.

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

42.C解析:模塊的代碼開始運行后,使用static語句聲明的變量會—直保持其值,直至該模塊復(fù)位或重新啟動。在第1次調(diào)用fun函數(shù)時,x的初值為5,if語句的條件不成立,執(zhí)行elseprintf('%d'x++);語句,輸出6,執(zhí)行后x的值變?yōu)?,由于x是靜態(tài)局部變量,在函數(shù)調(diào)用結(jié)束后,它并不釋放,仍保留x=7。在第2次調(diào)用fun函數(shù)時,if語句的條件成立,執(zhí)行printf('%d',x);語句,輸出8。

43.D解析:在單向鏈表中,由于每個結(jié)點需要存儲下—個結(jié)點的地址,且下—個結(jié)點的數(shù)據(jù)類型與前—個結(jié)點的數(shù)據(jù)類型完全相同,故應(yīng)為strectlink*next。

44.D解析:關(guān)系模型中包括關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性。關(guān)系完整性即數(shù)據(jù)完整性,包括實體完整性、參照完整性、用戶自定義完整性。

45.C

46.C解析:本題中首先輸出逗號表達(dá)式“a=a+a,a+b,b”的值,即20。然后以八進(jìn)制的形式輸出a+'a'-'A'的值為97對應(yīng)的八進(jìn)制數(shù)141,由于最后一個表達(dá)式b沒有對應(yīng)輸出格式的輸出項表列就不會輸出。

47.D

48.D答案D

解析:在選項D中,n是一個整型的變量。C語言規(guī)定,在一維數(shù)組的定義中,其下標(biāo)只能是常量表達(dá)式,不能包含變量。

49.C解析:數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持,這一點必不可少,故選項A敘述不正確。選項B錯誤,數(shù)據(jù)庫設(shè)計是指設(shè)計一個能滿足用戶要求,性能良好的數(shù)據(jù)庫。選項D也不對,數(shù)據(jù)庫應(yīng)該具有物理獨立性和邏輯獨立性,改變其中的一個而不影響另一個。正確答案為選項C。

50.C解析:軟件調(diào)試技術(shù)包括強(qiáng)行排錯法、回溯法和原因排除法。邊界值分析、錯誤推斷都是黑盒測試的方法。

51.D解析:一個算法必須具有五個特性,即有窮性、確定性、可行性,有輸入、有輸出.其中有窮性是指算法必須總是在執(zhí)行完有窮步之后結(jié)束,而且每步都在有窮時間內(nèi)完成。D選項不是算法的特性。

52.A解析:程序設(shè)計的風(fēng)格主要強(qiáng)調(diào)程序的簡單、清晰和可理解性,以便讀者理解。因此選項A是正確答案。程序濫用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應(yīng)減少或取消;程序的長短要依照實際需要而定,并不是越短越好。因此選項B、C、D都是錯誤的。

53.B解析:函數(shù)調(diào)用的一般形式為:函數(shù)名(形參表)若函數(shù)無形參,調(diào)用形式為:函數(shù)名(),當(dāng)所調(diào)用的函數(shù)用于求出某個值時,函數(shù)的調(diào)用可作為表達(dá)式出現(xiàn)在允許表達(dá)式出現(xiàn)的任何地方,本題中調(diào)用語句的參數(shù)個數(shù)為2個。

54.B(45)B)解析:算法應(yīng)該具有下列五個特性:

①有窮性:一個算法必須在執(zhí)行有窮步之后結(jié)束。

②確定性:算法中的每一步,必須有確切的含義,在他人理解時不會產(chǎn)生二義性。

③動態(tài)性:算法中描述的每一步操作都可以通過已有的基本操作執(zhí)行有限次實現(xiàn)。

④輸入:一個算法應(yīng)該有零個或多個輸入。

⑤輸出:一個算法應(yīng)該有一個或多個輸出。這里所說的輸出是指與輸入有某種特定關(guān)系的量。

55.A解析:讓考生對常用的軟件結(jié)構(gòu)設(shè)計工具要有較深入的了解。常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC-structureChart),也稱程序結(jié)構(gòu)圖。其中,矩形內(nèi)用于注明模塊的功能和名字;箭頭表示模塊間的調(diào)用關(guān)系,帶實心圓的箭頭表示傳遞的是控制信息,帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。注意:根據(jù)結(jié)構(gòu)圖設(shè)計思想,了解結(jié)構(gòu)圖構(gòu)成的基本形式。

56.C解析:執(zhí)行for循環(huán),輸出p[0]、p[2]的值。P的初值為數(shù)組元素x[1][1]的地址,即5的地址,因此p[0]為5,p[2]為3。

57.C詳細(xì)解答:

關(guān)系模型允許3類數(shù)據(jù)約束,它們是:

實體完整性約束

該約束要求關(guān)系的主鍵中屬性值不能為空值,這是數(shù)據(jù)庫完整性的最基本要求。

參照完整性約束

該約束是關(guān)系之間相關(guān)聯(lián)的基本約束,它不允許關(guān)系引用不存在的元組:即在關(guān)系中的外鍵要么是所關(guān)聯(lián)關(guān)系中實際存在的元組,要么就為空值。

用戶定義的完整性約束

用戶定義的完整性就是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。cC

58.C解析:函數(shù)形參和實參分別占用不同的內(nèi)存單元,改變形參的值不會影響對應(yīng)實參的值,選項A)正確。指針類型的函數(shù)可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數(shù),選項C)錯誤。

59.A解析:在選項A)中,因為!a=0,所以關(guān)系表達(dá)式!a==1的值為0,又因為邏輯與運算符“&&”兩邊的表達(dá)式只要一個等于零,則整個表達(dá)式為零,所以選項A)正確。在選項B)中,關(guān)系表達(dá)式a<b為真,表達(dá)式(a<b)&&!c為假,而表達(dá)式(a<b)&&!c‖1為真,所以整個表達(dá)式的值為真。選項C)中,a&&b的結(jié)果為真。在選項D)中,a‖(b+b)&&(c-a)的結(jié)果為真。

60.C解析:“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b'’格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號字符;“\\\\”格式符表示輸出反斜線字符。

61.B

62.C

63.C

64.A本題主要考查函數(shù)的嵌套調(diào)用。在本題中,首先定義了函數(shù)fun,該函數(shù)的返回類型為浮點型,函數(shù)帶有兩個整型形參,函數(shù)的作用不難看出是返回兩個形參的和。

在主函數(shù)中,定義了三個整型變量a,b,c,并分別賦初值為2,5,8,然后嵌套調(diào)用fun函數(shù)。輸出語句fun((int)fun(a+c,b),a-c)首先調(diào)用嵌套的fun函數(shù),即(int)fun(a+c,b),按照前面對fun函數(shù)的介紹,它應(yīng)該返回的值為a+c+b=15,由于函數(shù)在前面加了強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換,將本來的返回結(jié)果浮點型轉(zhuǎn)換為了整型,并作為函數(shù)的參數(shù),與函數(shù)定義的參數(shù)類型匹配,程序編譯不報錯,然后執(zhí)行fun函數(shù),它返回的結(jié)果為15+a-c=9,此時的結(jié)果應(yīng)該是浮點型,即為9.0,但輸出語句的輸出格式是“%3.0f”,說明無須輸出小數(shù)部分,因此,最終的輸出結(jié)果是9。

65.C任何一個C語言程序的執(zhí)行都是從主函數(shù)main開始,至主函數(shù)main結(jié)束。故本題答案為C選項。

66.B(x&1)&&(z<'2')=(0.5&1)&&('a'<'z')=1&&1=1,故選擇B選項。

67.C

68.B

69.A在允許過程的遞歸調(diào)用的程序設(shè)計語言中,由于C語言中棧的特性為先進(jìn)后出,因此用棧來實現(xiàn)遞歸調(diào)用中的存儲分配。

70.D

71.C

\n第1個printf函數(shù),格式說明的個數(shù)是2,而輸出項的個數(shù)是3,所以對于多余的輸出項k不予輸出;第2個printf函數(shù),有兩個%說明,第1個%后面的字符要原樣輸出。本題考查printf函數(shù)的格式。①“%x”和“%0”分別表示以十六進(jìn)制和八進(jìn)制無符合型輸出整型數(shù)據(jù)(不帶前導(dǎo)ox或0);②printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出;③格式說明與輸出項的個數(shù),也要相等,如果格式說明的個數(shù)少于輸出項的個數(shù),則對于多余的輸出項不予輸出。

\n

72.D

73.D

74.A

75.D

76.A解析:理解復(fù)雜定義要掌握兩點:一、右結(jié)合原則.本題中的定義char*line[5];等價于char*(line[5]);;二、自外向內(nèi)分解成typedef語句。char*(line[5]);等價于typedefchar*A;Aline[5];其中A被typedef定義成字符指針的別名,然后line被定義成A的一維數(shù)組,即字符指針的一維數(shù)組。再來看看行指針的定義char(*line)[5];它應(yīng)該被分解成typedefcharB[5];B*line;其中B被定義成包含5個元素的一維字符數(shù)組,然后line被定義成指向B的指針,即指向包含5個元素的一維字符數(shù)組的指針。所以兩者切不可混淆了,后者的括號不能省略。故本題應(yīng)該選擇A。

77.D選項A中“\\\”為轉(zhuǎn)義字符,故選項A錯誤,選項B和C顯然不是字符串常量。選項D是一個字符串常量,稱為空串。

78.A

79.Bif-else控制結(jié)構(gòu)中,else總是與最近的未配對的if匹配。本題的執(zhí)行過程為:如果輸入整數(shù)小于3則不進(jìn)行任何操作,否則判斷該整數(shù)是否不等于l0,若為真則進(jìn)行輸出。因此程序輸出的數(shù)據(jù)為大于3且不等于l0的整數(shù)。

80.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達(dá)式對字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個字符放到數(shù)組str1中,除了逐個輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個字符串復(fù)制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)

其中,需要注意的是,字符數(shù)組1的長度不應(yīng)小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

81.

82.voidfun(char*s,chart[]){ inti,j=0,n; n=strlen(s);/*遍歷整個數(shù)組*/ for(i=0;i<=""p="">/*如果元素的ASCII值為偶數(shù)*/ if(s[i]%2==0) {/*將元素保存到t中*/ t[j]=s[i]; j++; } t[j]=-‘\0’;}要刪除ASCII值為奇數(shù)的字符,也就是要保留ASCII值為偶數(shù)的字符,將ASCII值為偶數(shù)的字符保存到新字符串。所以本題的算法是對原字符串從頭到尾進(jìn)行掃描,找出ASCII值為偶數(shù)的字符并依次存入數(shù)組。2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.

3.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達(dá)式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

4.下面程序的輸出結(jié)果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

5.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實現(xiàn)一種算法

C.程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一一個c程序文件存在

6.

7.下列標(biāo)識符不是關(guān)鍵字的是()。

A.breakB.charC.SwithchD.return

8.當(dāng)輸入為"hello?"時,下面程序的執(zhí)行結(jié)果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello

9.二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序線索化二叉樹,節(jié)點E的線索化指向節(jié)點()

A.BCB.ACC.DFD.CF

10.有以下程序段:charstr[4][12]={“aaa”,“bbb”,“ccc”,“ddd”},*p[4];inti;for(i=0;i<4;i++)p[i]=str[i];以下選項中不能正確引用字符串的是()。

A.*p[3]B.p[3]C.str[2]D.*p

11.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a(chǎn)’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的運行結(jié)果是()。

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

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

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

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

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

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

13.樹是結(jié)點的集合,它的根結(jié)點數(shù)目是()。

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

14.下面程序輸出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,

15.圖的深度優(yōu)先遍歷類似于二叉樹的_______。

A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷

16.CPU能夠直接訪問的存儲器是

A.軟盤B.硬盤C.RAMD.CD-ROM

17.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}從第一列開始輸入數(shù)據(jù)(<CR>代表…個回車符):3845<CR>,則狴序輸出結(jié)果為()。

A.77889B.77868C.776810D.7.78866e+007

18.C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。

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

19.

20.有以下程序:#includemain(){inty=9;for(;y>0;y--)If?y%3==0)printf("%d",---y);}程序的運行結(jié)果是()。A.852B.963C.741D.875421

二、2.填空題(20題)21.下列程序的輸出結(jié)果是16.00,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

22.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

23.以下程序的運行結(jié)果是【】。

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

main()

{inti=6,j=8;

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

}

24.表示條件;10<x<100或x<0的C語言表達(dá)式是【】。

25.x、y、x均為int型變量,描述"x、y和z中至少有兩個為正數(shù)"的表達(dá)式是______。

26.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

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

main()

{inti;

for(i=1;i=1;i++)

{if(i>4)

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

break;}

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

28.若intx=1,y=2;則計算表達(dá)式y(tǒng)+=y-=x*=y后的y值是()。

29.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實現(xiàn)。

30.“printf("%d\n",strlen("\t\"023\xABC\n");”語句的輸出結(jié)果是______。

31.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,這稱為______。

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

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

}

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

}

33.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。

34.下列程序的功能是對輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

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

}

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

36.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

37.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,j,x;

for(j=4;j【】;j--)

{for(i=1;i<=4;i++)

[x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

38.mysulen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

39.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

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

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk

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

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

三、1.選擇題(20題)41.請選出可用作C語言用戶標(biāo)識符的一組()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

42.下列程序的輸出結(jié)果是_______。fun(){staticintx=5;if(x++>5)printf("%d",x);elseprintf("%d",x++);}main(){fun();fun();}

A.67B.69C.68D.78

43.已知形成鏈表的存儲結(jié)構(gòu)如下圖所示,則下述類型描述中的空白處應(yīng)填______。struct1ink{chardata;}node;

A.structlinknext

B.link*next

C.sluctnextlink

D.structlink*next

44.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。

A.實體完整性和參照完整性

B.參照完整性和用戶自定義完整性

C.實體完整性和用戶自定義完整性

D.實體完整性、參照完整性和用戶自定義完整性

45.若有以下定義和語句,且0<=I<10,則對數(shù)組元素的錯誤引用是()

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

int*p,I

p=a;

A.*(a+I(xiàn))B.a[p-a]C.p+I(xiàn)D.*(&a[I])

46.已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}

A.表達(dá)式非法,輸出零或不確定值

B.因輸出項過多,無輸出或輸出不確定值

C.輸出結(jié)果為20,141

D.輸出結(jié)果為20,141,20

47.循環(huán)鏈表的主要優(yōu)點是______。

A.不再需要頭指針了

B.己知某個結(jié)點的位置后,能夠容易找到它的直接前驅(qū)

C.在進(jìn)行插入、刪除運算時,能更好地保證鏈表不斷開

D.從表中任一結(jié)點出發(fā)都能掃描到整個鏈表

48.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是A.#defineN10inta[N];B.#definen5inta[2*n];C.inta[5+5];

D.intn=10,a[n];

49.下列敘述中正確的是A.數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)

C.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問題

D.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

50.下列所述中,是軟件調(diào)試技術(shù)的是()。

A.錯誤推斷B.集成測試C.回溯法D.邊界值分析

51.下列選項中不屬于算法的特性的是

A.確定性B.可行性C.有輸出D.無窮性

52.在設(shè)計程序時,應(yīng)采納的原則之一是______。

A.程序結(jié)構(gòu)應(yīng)有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好

53.下面函數(shù)調(diào)用語句含有實參的個數(shù)為func((exp1,exp2),(exp3,exp4,exp5));

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

54.以下敘述中錯誤的是A.算法正確的程序最終一定會結(jié)束

B.算法正確的程序可以有零個輸出

C.算法正確的程序可以有零個輸入

D.算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果

55.在結(jié)構(gòu)化設(shè)計方法中,生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示______。A.A.模塊之間的調(diào)用關(guān)系B.程序的組成成分C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

56.以下程序的輸出結(jié)果是()。main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=O;i<4;i+2)printf("%d",p[i]);}

A.52B.51C.53D.97

57.關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是()。

A.實體完整性約束B.參照完整性約束C.屬性完整性約束D.用戶自定義的完整性約束

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

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值.

D.當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL

59.設(shè)有定義:inta=2,b=3,c=4;,則下列選項中值為0的表達(dá)式是()。

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

60.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

四、選擇題(20題)61.

62.下列描述中不正確的是()。

A.字符型數(shù)組中可能存放字符串。

B.可以對字符型數(shù)組進(jìn)行整體輸入、輸出。

C.可以對整型數(shù)組進(jìn)行整體輸入、輸出。

D.不能在賦值語句中通過賦值運算符“=”對字符型數(shù)組進(jìn)行整體賦值。

63.

64.有以下程序

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));

}

程序的運行結(jié)果是

A.9B.編譯出錯

C.21D.9.0

65.對于一個正常運行的C程序,以下敘述中正確的是()。

A.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束.

C.程序的執(zhí)行總是從main函數(shù)開始、

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

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

main

{intx=0.5;charz='a';

printf("%d\n",(x&1)&&(z<'2'));}A.A.0B.1C.2D.3

67.

68.

69.一些重要的程序設(shè)計語言(inC語言和Pascal語言)允許過程的遞歸調(diào)用,而實現(xiàn)遞歸調(diào)用中的存儲分配通常用()。

A.棧B.堆C.數(shù)組D.鏈表

70.

71.

若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結(jié)果為()。

cb=b;

k=10;

printf("%X,%o,”,ch,ch,k);

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

A.因變量類型與格式描述符的類型不匹配,輸出無定值

B.輸出項與格式描述符個數(shù)不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

72.(54)在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序

B.選擇排序

C.快速排序

D.歸并排序

73.

74.

75.

76.若有語句:Char*line[5];,以下敘述中正確的是()。

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為Char的指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符

D.定義line是一個指向字符型函數(shù)的指針

77.以下正確的字符串常量是()。A.A."\\\"

B.'abc'

C.OlympicGames

D.""

78.

79.有以下程序:

程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果()。

A.不等于10的整數(shù)

B.大于3且不等于l0的整數(shù)

C.大于3或等于l0的整數(shù)

D.小于3的整數(shù)

80.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

五、程序改錯題(1題)81.寫出下列程序的運行結(jié)果。

#include“stdio.h”

Main

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

intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);

printf(“%d%d%d”,*p,m,n);}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將s所指字符串中ASCII值為奇數(shù)的字符刪除,將剩余字符形成的新字符串放在t所指數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符A的ASCII值為奇數(shù),字符1的ASCII值也為奇數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF24”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

參考答案

1.D

2.B

3.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達(dá)式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達(dá)式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達(dá)式,(p+9)來引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。

4.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串的第—個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。

5.B[解析]在一個C語言程序中可以進(jìn)行多種算法的實現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。

6.B

7.C在C語言中,字母區(qū)分大小,所以break、char、return、switch都是C語言中的關(guān)鍵字,而Swithch不是。

8.A本題考查getchar函數(shù)與putchar函數(shù),通過9etchar函數(shù)讀入字符,并通過putchar函數(shù)將字符逐個輸出,當(dāng)用戶輸入“?”時停止輸出,且c是一個字符變量只占一個字節(jié)。

9.D

10.A“*P[3]”是一個字符,也就是str[3][0],不是字符串,選項A錯誤。“P[3]”“str[2]”和“*p”分別代表了ddd、ccc、aaa。故本題答案為A選項。

11.B程序首先給字符數(shù)組s賦值為“012xy”。for循環(huán)語句的功能是遍歷字符串,通過if條件語句對字符串中的小寫字母進(jìn)行計數(shù),字符串中小寫字母個數(shù)為2,即n=2。故本題答案為B選項。

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

13.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點的集合,對應(yīng)任意一棵非空樹,它具有以下幾點重要的性質(zhì)。

①有且僅有一個特定的稱為根的結(jié)點。

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

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

14.D本題考查雙重函數(shù)調(diào)用及for循環(huán)使用,fun函數(shù)中第一個for循環(huán)語句的作用是給數(shù)組a賦值。當(dāng)?shù)谝淮握{(diào)用fun函數(shù)時,把實參1傳給形參,輸出a數(shù)組的元素為1,3,5;第二次調(diào)用fun函數(shù)時,由于數(shù)組a為靜態(tài)局部變量,故輸出a數(shù)組的元素為一1,3,7。

15.A

16.C解析:CPU讀取和寫人數(shù)據(jù)都是通過內(nèi)存來完成的。

17.A

18.CChar類型數(shù)據(jù)占1個字節(jié)。

19.D

20.A答疑:[解析]第一次for循環(huán),y的值為9.y%3的值為0.滿足條件打印-y,即先減一-后打印,所以打印8;第二次for循環(huán),y的值為7.y%3的值為1.不執(zhí)行打印語句;第三次for循環(huán),y的值為6.y%3的值為0.滿足條件打印--y,即先減-后打印,所以打印5;第四次for循環(huán),y的值為4.不滿足條件,不執(zhí)行打印語句;第五次for循環(huán),y的值為3.滿足條件,打印輸出2;第六次for循環(huán),y的值為1.不滿足條件,不執(zhí)行打印語句。

解析:本題以浮點格式輸出z值,寬度為5,有2位小數(shù)。應(yīng)該注意的是,兩個整數(shù)運算結(jié)果仍為整數(shù),如1/2的結(jié)果為0。本題可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值為6.6。

22.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。

23.99解析:用i和j替換宏MAL(a,b)小的參數(shù)a和b,(a>b?a:b)+1等價于(i>j?i:j)+1。因為6>8為假,則關(guān)系表達(dá)式i>j?i:j的值就是j的值,j=8,8+1=9,最后輸出9。

24.(x>10&&x<

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論