2022-2023年河南省鶴壁市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第1頁
2022-2023年河南省鶴壁市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第2頁
2022-2023年河南省鶴壁市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第3頁
2022-2023年河南省鶴壁市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第4頁
2022-2023年河南省鶴壁市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年河南省鶴壁市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有定義“intw[3][5];”,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。

A.*(&w[0][0]+1)B.*(*w+3)C.*(*(w+1))D.*(w+1)[4]

2.對于下述說明,不能使變量p->b的值增1的表達(dá)式是______。structexm{inta;intb;floatc}*p;

A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++

3.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

4.

5.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.4321098765B.5678901234C.0987654321D.0987651234

6.在說明語句:int*f();中,標(biāo)識符f代表的是

A.一個用于指向整型數(shù)據(jù)的指針變量

B.一個用于指向一維數(shù)組的行指針

C.一個用于指向函數(shù)的指針變量

D.一個返回值為指針型的函數(shù)名

7.

有以下程序:

main

{intx=102,y=012;

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

}

執(zhí)行后輸出結(jié)果是()。

A.10,01B.02,12C.102,10D.02,10

8.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

9.執(zhí)行下面程序中的輸出語句后,輸出結(jié)果是()。A.65B.20C.15D.10

10.若串S=,software,其子串的數(shù)目是()。

A.8B.37C.36D.9

11.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結(jié)果是()。

A.s1的內(nèi)容更新為abcdefghi

B.s1的內(nèi)容更新為defghi\0

C.s1的內(nèi)容更新勾defghiabc\0

D.s1的內(nèi)容更新為abcdefghi\0

12.字符(char)型數(shù)據(jù)在微內(nèi)存中的存儲形式是______。

A.反碼B.補(bǔ)碼C.EBCDIC碼D.ASCII碼

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

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

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

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

D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能

14.為了使模塊盡可能獨(dú)立,要求_____。A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

15.需求分析的主要任務(wù)是()。

A.確定軟件系統(tǒng)的功能B.確定軟件開發(fā)方法C.確定軟件開發(fā)工具D.確定軟件開發(fā)入員

16.下列程序的輸出結(jié)果是()。main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}

A.22B.76C.72D.62

17.有以下程序:#include<stdio.h>voidfun(char*a,charB){while(*(a++)!=‘0’);while(*(a-1)<B)*(a--)=*(a-1);*(a--)=b;}main(){chars[8]=“pmfc”,r,c;c=getchar();fun(s,c);puts(s);}程序運(yùn)行時輸入k并按<Enter>鍵,則輸出結(jié)果為()。

A.pmfkcB.pmfckC.kpmfcD.pmkfc

18.下列定義數(shù)組的語句中,正確的是()。A.#defineN10;intx[N];

B.intN=10;intx[N];

C.int:x[0.10];

D.intx[];.

19.下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件

B.文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件

C.文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

D.文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

20.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。已知指針q所指結(jié)點(diǎn)是指針結(jié)點(diǎn)p的直接前驅(qū),若在*q與*p之間插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列()操作。

A.s->next=p->next;p->next=s;

B.q->next=s;s->next=p;

C.p->next=s->next;s->next=p;

D.p->next=s;s->next=q;

二、2.填空題(20題)21.按照“先進(jìn)先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

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

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

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

main()

inta.b,c;

a=10;b=20;c=(a%b<)||{a/b>1);

printf("%d%d%dn",a,b,c);

}

24.若有以下定義和語句:

intw[10]={23,54,10,33,47,98,72,80,61},*p;

p=w;

則通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。

25.以下函數(shù)用以求x的y次方。補(bǔ)足所缺語句。

Doublefun(doublex,inty)

{inti;doublez=1;

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

z=【】;

returnz;

}

26.為了列出當(dāng)前盤當(dāng)前目錄中所有第三個字符為C的文件名的有關(guān)信息,應(yīng)該使用命令【】。

27.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

28.數(shù)據(jù)模型是用來描述數(shù)據(jù)庫的結(jié)構(gòu)和語義的,數(shù)據(jù)模型有概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,E-R模型是【】

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

30.結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)分別是順序、選擇和______。

31.函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù),且要求m>n。

例如:m=12,n=8時,運(yùn)行結(jié)果應(yīng)該是495.000000。請?jiān)陬}目的空白處填寫適當(dāng)?shù)某绦蛘Z句,將該程序補(bǔ)充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

32.fseek函數(shù)的正確調(diào)用形式是【】。

33.軟件定義時期主要包括______和需求分析兩個階段。

34.常用的黑箱測試有等價分類法、【】、因果圖法和錯誤推測法4種。

35.將以下程序段寫成三目運(yùn)算表達(dá)式:【】。

if(a>b)max=a;

elsemax=b;

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

main()

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

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

}

37.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

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

intmystden(char*str)

{inti;

fo,(i=0;【】!='\0';i++);

return(i);

39.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。

40.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

三、1.選擇題(20題)41.若x是整型變量,pb是基本類型為整型的指針變量,則正確的賦值語句是()

A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x;

42.設(shè)有定義:floata=2,B=4,h=3;,以下C語言表達(dá)式中與代數(shù)式計(jì)算結(jié)果不相符的是______。

A.(a十B)*h/2B.(1/2)*(a+B)*hC.(a+B)*h*1/2D.h/2*(a+B)

43.以下程序(程序左邊的數(shù)字為符加的行號)。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.沒有錯B.第1行有錯C.第6行有錯D.第7行有錯

44.下列程序的輸出結(jié)果是()。#include<stdio.h>intf(inta,intb);main(){inti=2,p,j,k;j=i;k=++i;p=f(j,k);printf("%d",p);}intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}

A.-1B.1C.2D.編譯出錯,無法運(yùn)行

45.有定義語句:"inta=1,b=2,c=3,x;",則以下選項(xiàng)中各程序段執(zhí)行后,x的值不為3

A.if(c<a)x=1;elseif(b<a)x=2:elsex=3;

B.if(a<3)x=3:elseif(a<2)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<l)x=1;

D.if(a<b)x=b;if(b<c)x=cif(c<a)x=a;

46.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。

A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)

47.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是______。

A.可行性分析B.需求分析C.詳細(xì)設(shè)計(jì)D.程序編碼

48.程序設(shè)計(jì)方法要求在程序設(shè)計(jì)過程中()。

A.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

D.以上三種說法都不對

49.下列程序的輸出結(jié)果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}

A.55B.56C.程序錯誤,沒有輸出D.循環(huán)條件永遠(yuǎn)為真,死循環(huán)

50.有以下程序:#include<stdio.h>main(){charcl='1',c2='2';cl=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

51.以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

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

A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值

53.有以下程序point(char*p){p+=3;}main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}程序運(yùn)行后的輸出結(jié)果是______。

A.aB.bC.cD.d

54.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()

A.每個元素都有一個直接前件和直接后件

B.線性表中至少要有一個元素

C.表中諸元素的排列順序必須是由小到大或由大到小

D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件

55.若要用函數(shù)fopen打開一個新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

56.下列選項(xiàng)中不符合良好程序設(shè)計(jì)風(fēng)格的是A.源程序要文檔化B.數(shù)據(jù)說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設(shè)計(jì)要保證高耦合、高內(nèi)聚

57.有以下程序:#include<stdioh>intfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,C)));}程序運(yùn)行后的輸出結(jié)果是()。

A.3B.6C.8D.12

58.變量a已被定義為整型,下列表達(dá)式有錯的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

59.在下列字符序列中,不可用做C語言標(biāo)識符的是()

A.student___numB.classC.#88D.month___12

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

A.在模塊化程序設(shè)計(jì)中,一個模塊應(yīng)該盡量多的包括與其他模塊聯(lián)系的信息

B.在自頂向下、逐步細(xì)化的設(shè)計(jì)過程中,首先應(yīng)設(shè)計(jì)解決問題的第一個細(xì)節(jié)

C.在模塊化程序設(shè)計(jì)中,一個模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則

D.在程序設(shè)計(jì)過程中,不能同時采用結(jié)構(gòu)化程序設(shè)計(jì)方法與模塊化程序設(shè)計(jì)方法

四、選擇題(20題)61.執(zhí)行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

62.

63.以下關(guān)于return語句的敘述中正確的是()。

A.一個自定義函數(shù)中必須有一條return語句

B.一個白定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句

C.定義成void類型的函數(shù)中可以有帶返回值的return語句

D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處

64.

65.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

66.設(shè)有二元關(guān)系R和三元關(guān)系s,下列運(yùn)算合法的是()。

A.R∩SB.R∪SC.R-SD.R×S

67.

68.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

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

69.

70.以下有4組用戶標(biāo)識符,其中合法的一組是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

71.(62)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是()

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

72.有以下結(jié)構(gòu)體說明、變量定義和賦值語句:

則以下scanf函數(shù)調(diào)用語句有錯誤的是()。

A.scanf(”%s”,s[0].name);

B.scanf(”%d”,&s[0].a(chǎn)ge);

C.scanf(”%c”,&(ps一>sex));

D.scanf(”%d”,ps一>age):

73.

74.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結(jié)果是()。

A.s1的內(nèi)容更新為abcdefghi

B.s1的內(nèi)容更新為defghi\0

C.s1的內(nèi)容更新勾defghiabc\0

D.s1的內(nèi)容更新為abcdefghi\0

75.有以下程序:

#include<stdio.h>

voidmain()

{fILE*fp;inti,a[4]={1,2,3,4},b;

fp=fopen("data.dat","wb");

for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);

fclose(fp)

fp=fopen("data.dat","rb");

fseek(fp,-2L*sizeof(int),1,fp);/*文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/

fclose(fp);

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

}

程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是()。

A.使位置指針從文件末尾向前移2*sizeof(int)字節(jié)

B.使位置指針從文件末尾向前移2字節(jié)

C.使位置指針向文件末尾向前移懂2*sizeof(int)字節(jié)

D.使位置指針向文件末尾移動2字節(jié)

76.以下正確的字符串常量是()。

A."\\\"B.abcC.OlympicGamesD.""

77.

78.

79.下面描述中,符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是()。

A.使用順序、選擇和重復(fù)(循環(huán).三種基本控制結(jié)構(gòu)表示程序的控制邏輯

B.模塊只有一個入口,可以有多個出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語句

80.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

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

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:判斷字符ch是否與sir所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.請編寫一個函數(shù)proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。

例如,若傳給m的值為70,則程序輸出:

7111421222833354244495556636670

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+1)%20==0)//每行輸出20個數(shù)

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}

參考答案

1.DA選項(xiàng)中,“*(&w[0][0]+1)”表示“w[0][1]”;B選項(xiàng)中,“*(*w+3)”表示“w[0][3]”;C選項(xiàng)中,“*(*(w+1))”表示“w[1][0]”;D選項(xiàng)中,“*(w+1)[4]”的正確寫法是“(*(w+1))[4]”,表示“w[1][4]”。故本題答案為D選項(xiàng)。

2.D解析:p->b應(yīng)作為一個整體看待,++p->b和p->b++都使變量b增1,++(p++)->b先使b增1,再使p后移,D中表達(dá)式的含義是使p+1所指結(jié)構(gòu)體變量中的成員b的值增1。

3.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項(xiàng)A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨(dú)的變量,故選項(xiàng)A不正確;選項(xiàng)B在p=data.a表達(dá)式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,故選項(xiàng)B不正確;選項(xiàng)D表達(dá)式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項(xiàng)D不正確:4個選項(xiàng)中只有C正確。

4.B本題考查標(biāo)準(zhǔn)輸入輸出函數(shù)和循環(huán)語句。gets(s)函數(shù)的作用是將輸入的字符讀入字符串s,直到遇到回車。而scanf函數(shù)接收字符串時的結(jié)束標(biāo)志為回車或者空格。因此選項(xiàng)B)不能,選項(xiàng)C)和選項(xiàng)D)中按字符逐個讀入字符串s中,直到讀入的字符是換行符為止,因此B正確。

5.B該程序首先給一維數(shù)組賦值,然后三次調(diào)用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中第1個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a.O,9);功能是將將一維數(shù)組中第l個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項(xiàng)正確。

6.D解析:帶回指針值的函數(shù),其一般定義形式為:

類型標(biāo)識符*函數(shù)名(參數(shù)表);

例如;int*f(x,y);

其中,f是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運(yùn)算符和()運(yùn)算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。

7.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個十進(jìn)制整數(shù),每個整數(shù)域?qū)捠?。而在C語言中規(guī)定:當(dāng)域?qū)捫∮趯?shí)際寬度時域?qū)挷黄鹱饔?,按?shí)際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進(jìn)制整數(shù)12,等于十進(jìn)制的10)。所以,4個選項(xiàng)中選項(xiàng)C符合題意。

8.B本題考查for循環(huán)的使用。對于第1個for循環(huán),任何一個i,內(nèi)層j的循環(huán)都要使j~0到3,j=4時不符合,所以退出j循環(huán);然后i減1,J仍然要從0~3,j=4時退出J循環(huán)直到i變成0,退出i循環(huán)。第一條for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內(nèi)循環(huán)體執(zhí)行6*4=24次。

9.B

10.B

11.Dstrcat(s1,s2)函數(shù)的功能是把s2字符串連接到s1字符串的末尾,要保證s1有足夠的空間容納下連接后的字符串。

12.D解析:將一個字符常量放到一個字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的ASCII碼值放到存儲單元中。

13.A預(yù)處理命令是以“#”號開頭的命令,它們不是C語言的可執(zhí)行命令,這些命令應(yīng)該在函數(shù)之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、c錯誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯等功能,所以D錯誤。

14.B解析:模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。本題答案為B。

15.A需求分析是軟件開發(fā)之前必須要做的準(zhǔn)備工作之一。需求是指用戶對目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的期望。故需求分析的主要任務(wù)是確定軟件系統(tǒng)的功能。本題答案為A選項(xiàng)。

16.C解析:函數(shù)slzeof(a)的功能是求出字符串a(chǎn)中的字符占用存儲空間的大小,由于字符數(shù)組a有長度為7,所以i=7;函數(shù)strlen(a)的功能是:求出字符串a(chǎn)的長度。而每個字符串都以'\\0'為字符串的結(jié)束標(biāo)記,所以j的值等于2。

17.Dmain函數(shù)定義一個字符數(shù)組s,使用字符串“pmfc”初始化;然后通過getchar讀取一個字符k到字符變量c;再將字符串s和字符c傳入fun函數(shù)。函數(shù)fun首先通過while循環(huán)遍歷字符串s,直到指針a指向字符串結(jié)束標(biāo)識‘\\0’后的一個字符,如下圖所示。接著通過while循環(huán)逆序遍歷字符串s,首先a-1的字符位‘\\0’,它的ASCII值為0,小于b(字符‘k’)的ASCII值107,那么將‘\\0’賦給下標(biāo)為5的元素位置。接著繼續(xù)向前遍歷,同理,將‘c’(ASCII值為99)賦給下標(biāo)為4的元素位置,將‘f’(ASCII值為102)賦給下標(biāo)為3的元素位置。由于‘m’(ASCII值為109)大于b,因此循環(huán)結(jié)束,將b(字符‘k’)賦給下標(biāo)為2的元素位置,此時str字符串如下。故本題答案為D選項(xiàng)。

18.A[解析]數(shù)組說明的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]。B)中N是變量,不能用變量定義數(shù)組長度。C)選項(xiàng)中數(shù)組長度是非法的一串?dāng)?shù)字。定義數(shù)組時必須為其指明長度,D)選項(xiàng)中數(shù)組長度為空,所以非法。\u3000\u3000

19.D解析:C語言把文件看成是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))的數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII文件和二進(jìn)制文件。ASCII文件又稱文本文件,它的每一個字節(jié)放一個ASCII代碼,代表一個字符。二進(jìn)制文件是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。

20.B

21.隊(duì)列隊(duì)列解析:隊(duì)列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊(duì)尾”,刪除元素的一端叫做“隊(duì)頭”,先插入的元素先被刪除,是按先進(jìn)先出的原則組織數(shù)據(jù)的。

22.str[i]或str+iistr[i]或str+i\r\ni

23.1020010200解析:本題的關(guān)鍵在于求表達(dá)式(a%b<1)‖a/b>1)的值。已知a=10,b=20,所以a%b=10,因此(a%b<1)為“假”。而a/b=0,因此(a/b>1)亦為“假”。,D運(yùn)算的兩邊同時為“假”,所以整個表達(dá)式的值為。“假”,即c等于0。所以,本題最終輸出為:10200。

24.*(p+5)

25.<y+1z*x

26.DIR??C*.*

27.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時,仍然光遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹。

28.概念數(shù)據(jù)模型概念數(shù)據(jù)模型

29.3232解析:while(表達(dá)式)的功能是:首先計(jì)算表達(dá)式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計(jì)算表達(dá)式的值,若仍為真,則重復(fù)執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假時,結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。

30.重復(fù)(循環(huán))重復(fù)(循環(huán))解析:結(jié)構(gòu)化程序設(shè)計(jì)包括3種基本的結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)(循環(huán)結(jié)構(gòu)),利用這3種結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。其中利用循環(huán)結(jié)構(gòu),可以簡化大量的程序執(zhí)行。

31.p=p*ip=p/ip=p*ip=p/i解析:本題中,欲求p的值,需要先求m!,n!,(m-n)!,可分別用循環(huán)語句實(shí)現(xiàn)。

32.fseek(文件指針位移量起始點(diǎn))fseek(文件指針,位移量,起始點(diǎn))解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調(diào)用形式為:

fseek(文件指針,位移量,起始點(diǎn))

“起始點(diǎn)”用0,1或2代替,其中,0代表“文件開始”;1為“當(dāng)前位置”;2為“文件末尾”?!拔灰屏俊敝敢浴捌鹗键c(diǎn)”為基點(diǎn),向前移動的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當(dāng)文件的長度大于64k時不致出現(xiàn)問題。ANSIC標(biāo)準(zhǔn)規(guī)定在數(shù)字的末尾加一個字母L,就表示long型。

33.可行性研究可行性研究解析:軟件生命周期一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測試、交付使用及維護(hù)等,還可以將軟件生命周期分為三個階段:①軟件定義階段:可行性研究和需求分析;②軟件開發(fā)階段:設(shè)計(jì)、實(shí)現(xiàn)和測試;③軟件運(yùn)行維護(hù)階段:交付使用和維護(hù)。

34.邊值分析法邊值分析法解析:本題考查了黑箱測試的方法。黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法。

35.max=(a>b)?a:bmax=(a>b)?a:b解析:本題考查三目運(yùn)算符的用法,條件表達(dá)式的一般形式為:

表達(dá)式1?表達(dá)式2:表達(dá)式3

所以,本題可以寫成(a>b)?a:b,它是一個條件表達(dá)式,執(zhí)行順序是:如果條件(a>b)為真,則條件表達(dá)式取值a,否則取值b。

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

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

37.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為ap[0][0]、a[0][1]、a[0][2]、a[0][3]。

38.*(str+i)或str[i]*(str+i)或str[i]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,用*(str+i)或str[i]來訪問字符串的第i個元素,判斷是否是結(jié)束標(biāo)志,如果不是,i=i+1,繼續(xù)取下一個元素進(jìn)行判斷,直到*(str+i)的值為'\\0'為止。

39.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進(jìn)行測試。

40.“filea.dat”“r”“filea.dat”,“r”解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。

41.A

42.B解析:選項(xiàng)B錯誤,不符合題意。

43.B解析:字符串復(fù)制函數(shù)strcpy包含在頭文件string.h中,因此,程序中的第1行文件包含命令是錯誤的。

44.A解析:函數(shù)調(diào)用相當(dāng)于f(2,3),程序運(yùn)算結(jié)果為-1。

45.C解析:本題考核的知識點(diǎn)是if-else語句的程序分析。

選項(xiàng)A首先判斷if語句條件中表達(dá)式的值“3<1”為假,然后執(zhí)行最近的else后面的語句,該else后面又為if-else語句,在這個if-else語句中首先判斷該if語句條件中表達(dá)式的值“2<1”為假,程序執(zhí)行其最近的else后面的語句,將3賦值給x。

選項(xiàng)B中首先判斷if語句條件中表達(dá)式的值“1<3”為真,然后執(zhí)行最近的else后面的語句“x=3”,后面的else不再執(zhí)行,最后x的值為3。

選項(xiàng)C中,首先選執(zhí)行第一條if,由于“1<3”為真,執(zhí)行此if后面的語句“x=3”,接著執(zhí)行第二條if語句,由于“1<2”為真,執(zhí)行此if后面的語句“x=2”,接著執(zhí)行第三條語句,由于“1<1”為假,后面的語句不執(zhí)行,所以最后的x值為2不為3。

選項(xiàng)D中,首先選執(zhí)行第一條if語句,由于“a<b”為真,執(zhí)行此if后面的語句“x=b”;接著執(zhí)行第二條if語句,由于“b<c”,為真,執(zhí)行此if后面的語句“x=c”,接著執(zhí)行第三條if語句,由于“c<a”為假,后面的語句不執(zhí)行,所以最后的x值為c即為3.所以,4個選項(xiàng)中選項(xiàng)c符合題意。

46.D解析:數(shù)據(jù)流圖有4種成分:源點(diǎn)或終點(diǎn)、處理、數(shù)據(jù)存儲和哦數(shù)據(jù)流。數(shù)據(jù)存儲是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運(yùn)動中的數(shù)據(jù)。

47.B[答案]B

[考點(diǎn)]軟件工程基礎(chǔ)

[評析]

分析員對用戶的要求作出分析,并畫出數(shù)據(jù)流程圖,該圖通俗易懂,不涉及到如何在計(jì)算機(jī)上實(shí)現(xiàn),這是需求分析階段。

軟件工程中的瀑布模型:

問題定義,可行性研究,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測試,運(yùn)行和維護(hù)

相關(guān)鏈點(diǎn):

層次圖和HIPO圖是概要設(shè)計(jì)中的工具圖;程序流程圖、N-S圖、問題分析PAD圖、設(shè)計(jì)程序語言PDL是詳細(xì)設(shè)計(jì)中的工具圖

48.D解析:在程序設(shè)計(jì)過程中,一個很重要的環(huán)節(jié)是首先確定實(shí)現(xiàn)各種功能的算法,并且用某種工具將它精確地表達(dá)出來。流程圖是其中的工具之一。因此,程序設(shè)計(jì)的過程應(yīng)是先畫出流程圖,然后根據(jù)流程圖編制出程序。因此,選項(xiàng)A中的說法是錯誤的。程序中的注釋是為了提高程序的可讀性,使程序易于理解、易于維護(hù),注釋必須在編制程序的同時加入。因此,選項(xiàng)B和C中的說法也都是錯誤的。

49.B解析:本程序中有個for循環(huán),但注意到for循環(huán)的條件是“i+1”,也就是只要i+1的值為真(非零值均為真),就執(zhí)行循環(huán)。當(dāng)i=1的時候,i+1的值為真,判斷if條件不成立,執(zhí)行i++,輸出i的值為5。

50.A解析:函數(shù)getchar()的作用是從終端(或系統(tǒng)隱含的輸入沒備)輸入一個字符,且只能接收一個字符(回車符也算一個字符)。所以本題中c1被賦值字符a,c2被賦予回車符。

51.C解析:選項(xiàng)A中定義了一個字符型數(shù)組并賦初值,故選項(xiàng)A正確;選項(xiàng)B定義了一個字符型數(shù)組t并初始化,然后定義了一個指針變量s并讓它指向t,故選項(xiàng)B正確;選項(xiàng)C先定義?一個長度為10的字符型數(shù)組,然后在給它賦值,這時應(yīng)該分別給數(shù)組中的每個元素賦值,故選項(xiàng)C不正確;選項(xiàng)D中先定義了一個長度為10的字符型數(shù)組s,然后通過字符串拷貝函數(shù)將字符串“abedefs”賦值給它,選項(xiàng)D正確。所以,4個選項(xiàng)中選項(xiàng)C符合題意。

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

53.A解析:本題是一個陷阱,看似考查函數(shù)的傳址調(diào)用,其實(shí)考的是傳值調(diào)用。在C語言中,不管你給函數(shù)傳遞的參數(shù)是什么,指針也好數(shù)組名也罷,系統(tǒng)都是嚴(yán)格的將實(shí)參的值復(fù)制了一份作為函數(shù)的形參,即傳值調(diào)用。在函數(shù)中,對形參中的值怎么改變都不會影響到實(shí)參。那傳址調(diào)用又是怎么實(shí)現(xiàn)的呢?那是因?yàn)樵诤瘮?shù)中改變的不是形參指針變量中的值,而是形參指針變量所指內(nèi)存中的值。其實(shí)骨子里還是將實(shí)參指針的值復(fù)制?一份給形參指針變量,它們是兩個獨(dú)立的互不相干的變量,只不過指向的內(nèi)存地址值一模一樣罷了。本題的函數(shù)只是改變了形參指針變量p的值,這對程序沒有任何影響,主函數(shù)中p一開始就是指向b[0],最后輸出時還是b[0]的值'a'。所以應(yīng)該選擇A。

54.D解析:線性表可以為空表,排除選項(xiàng)B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項(xiàng)A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項(xiàng)C也有誤,只有D項(xiàng)是正確的。

55.B解析:本題考查文件使用方式標(biāo)識符。方式“wb”為輸出打開一個二進(jìn)制文件;方式“wb+”為讀寫建立一個新的二進(jìn)制文件;方式“rb+”為讀寫打開一個二進(jìn)制文件:方式“rb”為輸入打開一個二進(jìn)制文件。

56.D解析:編程風(fēng)格是在不影響性能的前提下,有效地編排和組織程序,以提高可讀性和可維護(hù)性。更直接地說,風(fēng)格就是意味著要按照規(guī)則進(jìn)行編程。這些規(guī)則包括:(1)程序文檔化。就是程序文檔包含恰當(dāng)?shù)臉?biāo)識符、適當(dāng)?shù)淖⒔夂统绦虻囊曈X組織等。(2)數(shù)據(jù)說明。出于閱讀理解和維護(hù)的需要,最好使模塊前的說明語句次序規(guī)范化。此外,為方便查找,在每個說明語句的說明符后,數(shù)據(jù)名應(yīng)按照字典順序排列。(3)功能模塊化。即把源程序代碼按照功能劃分為低耦合、高內(nèi)聚的模塊。(4)注意goto語句的使用。合理使用goto語句可以提高代碼的運(yùn)行效率,但goto語句的使用會破壞程序的結(jié)構(gòu)特性。因此,除非確實(shí)需要,否則最好不使用goto語句。因此,本題的正確答案是D。

57.B

58.C

59.C

60.CC。【解析】在模塊化程序設(shè)計(jì)中,模塊之間的聯(lián)系可以通過程序的控制結(jié)構(gòu)來實(shí)現(xiàn),在自頂向下、逐步細(xì)化的設(shè)計(jì)過程中,首先要考慮全局目標(biāo),而不是細(xì)節(jié)。在程序設(shè)計(jì)中模塊化和結(jié)構(gòu)化可以同時使用,一個模塊的內(nèi)部結(jié)構(gòu)也要符合結(jié)構(gòu)化設(shè)計(jì)原則。

61.D本題考查continue的用法,continue語句的作用是結(jié)束本次循環(huán),直接進(jìn)行下次循環(huán)。所以在程序中,只有當(dāng)a=10時,才退出循環(huán),故選擇D選項(xiàng)。

62.A

63.Breturn語句又稱為返回語句。該語句的格式如下:“return;”和“return(<表達(dá)式>);”。其中,return是關(guān)鍵字。該語句有兩種格式:不帶返回值格式和帶返回值格式。該語句用在被調(diào)用函數(shù)中,在被調(diào)用函數(shù)中執(zhí)行到該語句時,將結(jié)束對被調(diào)用

溫馨提示

  • 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

提交評論