2022-2023年安徽省安慶市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第1頁
2022-2023年安徽省安慶市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第2頁
2022-2023年安徽省安慶市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第3頁
2022-2023年安徽省安慶市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第4頁
2022-2023年安徽省安慶市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年安徽省安慶市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.在有序表(12,24,36,48,60,72,84)中二分查找關(guān)鍵字72時所需進行的關(guān)鍵字比較次數(shù)是()

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

2.有以下程序:#include<stdio.h>#include<strin9.h>main(){printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}程序運行后的輸出結(jié)果是()。A.3B.8C.4D.9

3.

4.具有10個葉子結(jié)點的二叉樹中有()個度為2的結(jié)點。

A.8B.9C.10D.11

5.有如下定義#defineD2intx=5;floaty=3.83;charC='D';則下面選項中錯誤的是

A.x++;B.y++;C.c++;D.D++;

6.在一個有頭結(jié)點的鏈隊列中,假設(shè)f和r分別為隊首和隊尾指針,則隊頭出隊的運算是()。

A.q=f->next;f->next=f->next->next;free(q);

B.q=f;f->next=f->next->next;free(q);

C.f->next=f->next->next;q=f->next;free(q);

D.q=f->next->next;f=f->next;free(q);

7.

有以下程序:

main

{intx=102,y=012;

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

}

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

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

8.堆的形狀是一棵_______。

A.二叉排序樹B.滿二叉樹C.完全二叉樹D.平衡二叉樹

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

#include<stdio.h>

main()

{intx=5,a=1,b=2,C=5,d=0;

if(a<B)

if(b!=3)

if(!C)

x=1;

else

if(D)x=1;

elsex=-1;

printf("%d",x);

}

A.-1B.0C.1D.不確定的值

10.樹最適合用來表示()。

A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分層次關(guān)系的數(shù)據(jù)D.元素間無聯(lián)系的數(shù)據(jù)

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

A.C語言比其他語言高級

B.C語言可以不用編譯就被計算機識別并執(zhí)行

C.C語言以接近英語國家的自然語言和數(shù)學(xué)語言作為語言的表達形式

D.C語言出現(xiàn)最晚,具有其他語言的一切優(yōu)點

12.有以下程序:#include<string.h>inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t++=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序運行后的輸出結(jié)果是()。

A.24B.28C.32D.36

13.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為()。

A.對應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系

14.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

15.以下敘述中錯誤的是()。A.C程序在運行過程中所有計算都以二進制方式進行

B.C程序在運行過程中所有計算都以十進制方式進行

C.所有C程序都需要編譯鏈接無誤后才能運行

D.C程序中整型變量只能存放整數(shù),實型變量只能存放浮點數(shù)

16.以下不合法的字符常量是()。

A.‘\\’B.‘\”’C.‘\018’D.‘\xcc’

17.人們提出了用______的原理來設(shè)計軟件,這就是軟件工程學(xué)誕生的基礎(chǔ)。

A.計算機科學(xué)B.數(shù)學(xué)C.工程學(xué)D.運籌學(xué)

18.如果最常用的操作是取第i個結(jié)點及其前驅(qū),最節(jié)省時間的存儲方式是()。

A.單鏈表B.雙向鏈表C.單循環(huán)鏈表D.順序表

19.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內(nèi)說明語句后的復(fù)合語句中定義了一個變量,則該變量().

A.為全局變量,在本程序文件范圍內(nèi)有效

B.為局部變量,只在該函數(shù)內(nèi)有效

C.為局部變量,只在該復(fù)合語句中有效

D.定義無效,為非法變量

20.以下關(guān)于字符串的敘述中正確的是()。

A.C語言中有字符串類型的常量和變量

B.兩個字符串中的字符個數(shù)相同時才能進行串符串大小的比較

C.可以用關(guān)系運算符對字符串的大小進行比較

D.空串一定比空格打頭的字符串小

二、2.填空題(20題)21.以下程序段中,錯誤的行號是【】。①#include<stdio.h>②main()③{charstr[14];str[]={"IloveChina!"};④printf("%s",str);⑤}

22.當(dāng)運行以下程序時,輸入abcd,程序的輸出結(jié)果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

23.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

24.下面程序的功能是實現(xiàn)變量x、y內(nèi)容交換,請?zhí)羁铡?/p>

#defineEXCHANGE(a,b,c){a=b;b=c;c=a;}

main()

{intx=10,y=8,z;

【】

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

25.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結(jié)果是【】。

26.下列程序的運行結(jié)果為【】。

main()

{inti;

chara[]="Ilovechina!",b[20],*p1,*p2;

p1=a;

p2=b;

while(*p1)

{*p2=*p1;

p1++;

p2++;

}

*p2='\0';

printf("stringbis:%s\n",b);

}

27.假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為【】。

28.語句:x++;++x;x=1/x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

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

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

}

30.測試用例包括輸入值集和【】值集。

31.下面程序的運行結(jié)果是______。

#defineDOUBLE(x,y)x/y

main()

{intx=4,y=2,t;

t=DOUBLE(x+y,x-y);

printf("%d",t);

}

32.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;

33.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

34.下面函數(shù)的功能是將一個字符串的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

voidfun(charstr[])

{inti,j,k;

for(i=0,j=【】;i<j;i++,j--)

{k=str[i];

str[i]=str[j];

str[j]=k;}}

35.以下程序中用戶由鍵盤輸入一個文件名,然后輸入一串字符(用#結(jié)束輸入)存放到此文件中,形成文本文件,并將字符的個數(shù)寫到文件的尾部。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

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

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

36.設(shè)有以下定義

struetss

{intinfo;struetss*link;}x,y,z;

且已建立如下圖所示鏈表結(jié)構(gòu):

請寫出刪除結(jié)點y的賦值語句【】。

37.性結(jié)構(gòu)中,隊列的操作順序是先進先出,而棧的操作順序是______。

38.由計算機、操作系統(tǒng)、DBMS、數(shù)據(jù)庫、應(yīng)用程序及用戶組成的一個整體叫做【】。

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

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{inti-2,j=3;

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

}

40.下面程序的運行結(jié)果是()。

#include<stdio.h>

#defineSlZE12

main()

{chars[SIZE];inti;

for(i=0;i<SIZE;i++)s[i]='A'+i+32;

sub(s,5,SIZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,intt1,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;

}

}

三、1.選擇題(20題)41.有以下程序段:intx=3;do{printf("%d",x-=2);}while(!(--x));其輸出結(jié)果是______。

A.1B.30C.1-2D.死循環(huán)

42.以下不能正確定義二維數(shù)組的選項是

A.inta[2][2]={{1},{2)};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};

D.inta[2][]={{1,2},{3,4)};

43.若有定義語句:intk[2][3],*pk[3];,則以下語句中正確的是A.pk=k;B.pk[0]=&k[1][2];C.pk=k[0];D.pk[1]=k;

44.下面程序的輸出結(jié)果是______。#include<stdio.h>main(){charch[7]={"12ab56"};inti,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}

A.1B.1256C.12ab56D.1256

45.設(shè)計軟件結(jié)構(gòu)是在軟件生命周期的()。

A.軟件定義期B.軟件開發(fā)期C.軟件維護期D.以上3個都不是

46.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

47.下面的程序在編澤時產(chǎn)生錯誤,其出錯原因是()。#include<stdio.h>main(){int1_case;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}

A.定義語句出錯,1_case不能作為變量名

B.定義語句出錯,printF不能用作用戶自定義標(biāo)識符

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出1_case的值

48.有以下程序main(){intc=35;printf("%d\n",c&c);}程序運行后的輸出結(jié)果是______。

A.0B.70C.35D.1

49.讀下面程序段(字符串內(nèi)沒有空格字符):printf("%d\n",strlen("ATS\n012\1\\"));其輸出結(jié)果是()。

A.11B.10C.9D.8

50.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}

A.10B.18C.6D.數(shù)組元素引用不合法,輸出結(jié)果不定

51.以下能正確定義二維數(shù)組的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

52.下面結(jié)構(gòu)體的定義語句中,不正確的是______。

A.structdate{intmonth;intday;intyear;}Structdatedatel;

B.stmctdate{intmonth;intday;intyear;}datel;

C.struct{intmonth;intday;intyear;}date1;

D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;

53.有以下程序:#include<stdio.h>#include<string.h>main(){charp[]={'a','b','c'],q[10]={'a','h','c'}prinff("%d%d\n",strlen(p),strlen(q));以下敘述中正確的是()。

A.在給p和q數(shù)組賦初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3

B.由于P數(shù)組中沒有字符串結(jié)束符,長度不能確定;q數(shù)組中字符串長度為3

C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;p數(shù)組中字符長度為3

D.由于p和q數(shù)組中沒有字符串結(jié)束符,故長度都不能確定

54.設(shè)有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name<回車>name1<回車>,則程序運行后的輸出結(jié)果是()

A.$8B.@10C.$9D.@9

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

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

56.若有如下程序段,其中s、a、b、c均已定義為整型變量,且a、c均已賦值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;則與上述程序段功能等價的賦值語句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

57.軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括軟件開發(fā)技術(shù)和()。

A.消除軟件危機B.軟件工程管理C.程序設(shè)計自動化D.實現(xiàn)軟件可重用

58.有以下程序

#include<stdio.h>

main()

{inti,j,m=55;

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

for(j=3;j<=i;j++)m=m%j;

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

}

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

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

59.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

60.若有如下說明,則______的敘述是正確的。structst{inta;intb[2];}a;

A.結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義是非法的

B.程序只在執(zhí)行到該定義時才為結(jié)構(gòu)體st分配存儲單元

C.程序運行時為結(jié)構(gòu)體st分配6個字節(jié)存儲單元

D.類型名structst可以通過extern關(guān)鍵字提前引用(即引用在前,說明在后)

四、選擇題(20題)61.

62.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進行需求分析的方法

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

63.

64.

65.若有定義和語句:inta,b;scanf("%d,%d",&a,&b);以下選項中的輸人數(shù)據(jù),不能把值3賦給變量a、5賦給變量b的是()。

A.3,5,

B.3,5,4

C.3,5

D.35

66.C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,()。

A.所有成員一直駐留在內(nèi)存中B.沒有成員駐留在內(nèi)存中C.部分成員駐留在內(nèi)存中D.只有一個成員駐留在內(nèi)存中

67.

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

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

C.how'are'you

D.ahow'are'y\bou

69.若調(diào)用fputc函數(shù)輸出字符成功,則其返回值是()。

A.EOFB.1C.0D.輸出的字符

70.

71.

72.

73.(75)下列不屬于結(jié)構(gòu)化分析的常用工具的是()

A.數(shù)據(jù)流圖

B.數(shù)據(jù)字典

C.判定樹

D.PAD圖

74.若有下面的程序段

#include"stdio.h"

main()

{inti=6;

while(i--)

printf("%d",--i);

printf("\n");

}

那么程序的輸出結(jié)果為

A.531B.420

C.654321D.死循環(huán)

75.若變量x、y已正確定義并賦值,以下符合C語言語法的表達式是()。

A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10

76.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

執(zhí)行程序時,給變量x輸入10,程序的輸出結(jié)果是()。

A.55B.54C.65D.45

77.(33)分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是______。

A.分布式

B.數(shù)據(jù)冗余

C.數(shù)據(jù)分布性和邏輯整體性

D.位置透明性和復(fù)制透明性

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

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結(jié)束

D.軟件維護是指修復(fù)程序中被破壞的指令

79.(23)在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。

A.32

B.31

C.16

D.15

80.

對兩個數(shù)組a和b進行下列初始化:

charm[]="1234567";

charn[]={1,2,3,4,5,6,7};

則下列敘述正確的是()。

A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長度相同C.數(shù)組m比數(shù)組n長1D.數(shù)組m與數(shù)組n中都存放字符串

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:將str所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(Z轉(zhuǎn)換A,z轉(zhuǎn)換a),其他字符不變。

請修改函數(shù)fun()中的錯誤,得出正確的結(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.B

2.B本題考查strlen函數(shù)和轉(zhuǎn)移字符,strlen函數(shù)的功能是求字符串的長度,在本題中有“\”,C語言中“\”是轉(zhuǎn)義字符,在計算長度時會將轉(zhuǎn)義符以及后面的第一個字符作為1個長度進行計算,所以答

3.B

4.B

5.D解析:C語言中++運算符的對象可以是整型、實型和字符型,但不可是常量,本題中D為常量。

6.A

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

8.C

9.A解析:本題考查ifelse語句。第1個if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,執(zhí)行下列的語句;第2個if語句,先判斷條件,發(fā)現(xiàn)b!=3條件成立,執(zhí)行下列的語句:第3個if語句,先判斷條件,c=5,則!c條件不成立,執(zhí)行與其配對的else語句:第4個if語句,先判斷條件,d=0,條件不成立,則x=-1,結(jié)束循環(huán)。

10.C

11.C解析:計算機語言分為低級語言和高級語言,C語言屬于高級語言,但并非比其他語言高級,選項A)錯誤;除了機器語言外,其他各種語言都必須編譯成能被計算機識別的機器代碼才能執(zhí)行,選項B)錯誤;C語言出現(xiàn)于1972年至1973年,并不是出現(xiàn)最晚的語言,選項D)錯誤。

12.B解析:本題考查的是外部變量的應(yīng)用。因為程序的初始inta=4;語句定義了外部變量a,在以后的執(zhí)行過程中,當(dāng)i=0時,調(diào)用f(0)函數(shù),執(zhí)行的語句是else{inta=7;t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=7,返回值語句returnt+a++;處,外部變量a起作用,返回值為7+5=12:當(dāng)i=1時,調(diào)用f(1)函數(shù),執(zhí)行的是語句else{inta=6:t+=a++;},此處程序中又定義了變量a,所以原來定義的外部變量在此不起作用,得到t=6,返回值語句

13.C解析:在關(guān)系模型數(shù)據(jù)庫中,基本結(jié)構(gòu)是二維表,這種二維表稱為關(guān)系。關(guān)系的列稱為屬性,一個具有N個屬性的關(guān)系稱為N元關(guān)系。注意:各種關(guān)系查詢語言與過程性語言和非過程性語言的關(guān)系,過程性語言的特點。

14.A函數(shù)fgete()從文件讀入一個字符到指定變量。函數(shù)fputc()將指定字符寫入審文件中,函數(shù)fprinff(),fwrite()均是寫入文件操作函數(shù)。因此選項B,c。D錯誤。答案為A選項。

15.B所有的C程序都必須經(jīng)過編譯鏈接無誤之后才能運行。在運行過程中,由計算機完成程序中的所有運算。由于計算機只能識別二進制,所以所有的運算都以二進制方式進行,而不是十進制。

16.C轉(zhuǎn)義字符中,八進制的表示形式為\\ddd,但是八進制中不能包含數(shù)字8,所以C選項不合法。故本題答案為C選項。

17.C

18.D

19.C

20.D解析:C語言中只有字符串常量而沒有字符串變量,故選項A不正確:字符串比較大小是以第1個不相同字符的大小為標(biāo)準(zhǔn)的,跟長度沒有關(guān)系,故選項B不正確:字符串比較大小除了使用庫函數(shù)stremp()以外,就只能靠自己寫代碼來實現(xiàn)了,而不能通過關(guān)系運算符來比較大小,因為字符串在表達式中相當(dāng)于coostchar*,即常字符指針,代表的是字符串的首地址,關(guān)系運算符會將兩個字符串的首地址值比較大小,這是毫無意義的。所以選項C也不正確。空串的長度為0,而以空格打頭的字符串的長度至少為1,故選項D正確,本題應(yīng)該選擇D。

21.③數(shù)組可以在定義時整體賦初值,但不能在賦值語句中整體賦初值。因此,可將第三行改為charstr[14]={"IloveChina!"};

22.a*b*c*d*a*b*c*d*解析:程序中的變量i用于存放字符串str的長度,執(zhí)行while語句,通過分析可知,字符串第2*i項的值可由第i項的值得到;第2*i-1項直接賦值為。號,i減1,如此反復(fù)直到不滿足i>0的條件時,輸出運行后的字符串。

23.101,0解析:與運算兩邊的語句必須同時為真時,結(jié)果才為真,當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。

24.EXCHANGE(zxy)或EXCHANGE(zxy);EXCHANGE(z,x,y)或EXCHANGE(z,x,y);

25.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

26.stringbis:Ilovechina!

27.n(n-1)/2

28.x+=1x+=1解析:本題考查'++'、'--'運算符。'++'、'--'只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

29.2121解析:外層switch語句后面括號里的x的值為1,所以執(zhí)行從case1:后面的語句開始執(zhí)行,而case1:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執(zhí)行即執(zhí)行a++,這時a的值變?yōu)?,執(zhí)行完畢,遇到break語句,退出內(nèi)層switch語句,又回到外層switch語句,繼續(xù)執(zhí)行case1:下面的語句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變1。所以最后輸出的a和b的值為21。

30.輸出輸出解析:測試用例曲測試輸入數(shù)據(jù)(輸入值集)和與之對應(yīng)的預(yù)期輸出結(jié)果(輸出值集)兩部分組成。

31.2

32.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。

33.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

34.strlen(str)-1strlen(str)-1解析:程序中的for循環(huán)就是用來完成串反序的,所以應(yīng)該對循環(huán)的條件進行初始化,所以在[18]應(yīng)該填入strlen(str)-1。注意,在串反序的時候,不應(yīng)該把串結(jié)束符‘\\0’也反序。

35.fnamefpfname\r\nfp解析:fopen()函數(shù)實現(xiàn)打開文件的功能,通常的調(diào)用方式為:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一個橫線處要求填寫要打開文件的名字fname。fprintf()函數(shù)的—般調(diào)用方式為:fprintf(文件指針,格式字符串,輸出表列),所以第二個橫線處應(yīng)填寫fp。

36.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:鏈表中結(jié)點的刪除,要刪除結(jié)點y,只需要讓結(jié)點x的指針域指向y結(jié)點的指針域所指向的后續(xù)結(jié)點就可,因此只需把結(jié)點z的地址賦給x的指針域就可以了,即讓結(jié)點x的指針域指向結(jié)點z。而結(jié)點z的地址保存在結(jié)點y的指針域中,因此只需把結(jié)點y的指針域賦值給結(jié)點x的指針域即可。

37.先進后出先進后出解析:隊列和棧都是線性結(jié)構(gòu),但是不同之處在于隊列的操作順序是先進先出,而棧的操作順序是先進后出。

38.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)

39.1616解析:首先將程序中宏替換掉,先把“MCRA(i)”替換成“2*i”,然后把“MCRA(j,2*i)”替換成“2*2*j+2*i”,經(jīng)計算該表達式的值為16,所以最后輸出為16。

40.abcdelkjihgfabcdelkjihgf解析:本題先給字符型數(shù)組s的12個元素賦值a到1共12個字母,函數(shù)sub(char*a,intt1,intt2)的功能是將數(shù)組a的從第t1+1個元素到t2+1個元素進行逆置,在主函數(shù)中調(diào)用sub(s,5,SIZE-1)函數(shù),是將數(shù)組s的第6個元素到第12個元素進行逆置,其他元素位置不變。

41.C解析:在程序中,首先定義了一個整型變量x并賦初值為3,接著執(zhí)行do-while循環(huán)。在do-while循環(huán)中,先執(zhí)行循環(huán)體,即執(zhí)行printf語句(輸出表達式X-=2;的值,這個表達式相當(dāng)于x=x-2=3-2=1,所以第一次輸出值為1),接著判斷while后面括號里的條件表達式是否為真。這個表達式!(--X)等價于!(0)為真(這里--X是先自減,再進行判斷,此時x自減1,值為0),繼續(xù)執(zhí)行循環(huán)體,即執(zhí)行printf語句(輸出表達式x-=2;的值,這個表達式相當(dāng)于x=x-2=0-2=-2,所以第二次輸出值為-2),接著判斷while后面括號里的條件表達式是否為真,顯然,表達式!(--x)等價于(!(-3))為假,退出循環(huán),所以其最終的輸出結(jié)果為1-2。所以,4個選項中選項C符合題意。

42.D解析:本題考核的知識點是二維數(shù)組的定義和初始化。在定義中如果對所有元素賦初值,其第1維的長度可以省略,故選項B正確;二維數(shù)組初始化也可以只對每行或前若干個行的前若干個元素賦初值,故選項A和選項C正確;在二維數(shù)組定義時不能省略第二維的長度,故選項D錯誤。所以,4個選項中選項D符合題意。

43.B答案B

解析:*pk[3]表示的是一個共有3個元素的一維指針數(shù)組。pk[0]=&k=[1][2]表示把二維數(shù)組中下標(biāo)為k[1][2]的值賦予pk[0],也就是pk[0]指向k[1][2]這個元素。

44.A解析:for語句中的條件表達式?jīng)Q定了循環(huán)體只執(zhí)行一次。因此s=0*10+1,于是輸出結(jié)果為1。

45.BB?!窘馕觥吭O(shè)計軟件結(jié)構(gòu),是在軟件概要設(shè)計階段進行的,而概要設(shè)計屬于軟件開發(fā)期。

46.C解析:本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運算符比較兩個字符串的大小)。

47.A解析:C語言變量名可由數(shù)字,字母,下劃線構(gòu)成,但首字符不能為數(shù)字。

48.C解析:位與運算是將兩個運算分量看作兩個二進制數(shù),然后對兩個二進制數(shù)的相應(yīng)位進行與運算,若同時為1則結(jié)果相應(yīng)位為1,否則結(jié)果相應(yīng)位為0。因此,當(dāng)兩個運算分量相同時,它們的相應(yīng)位肯定也相同,即不同為1就同為0。所以得到的結(jié)果和運算分量也相同。所以,4個選項中選項C)符合題意。

49.C解析:本題考查字符串的長度。printf的功能是輸出'ATS\\n012\\1\\\\'這個字符串的長度,在字符串中“\\\\”代表一個“\\”,僅為一個字符,而“\\1”代表數(shù)字1,占一個字符,“\\n”是回車換行符,也占一個字符,加上A、T、S、0、1、2,一共是9個字符。

50.B解析:第一個for循環(huán),給數(shù)組a的20個元素分別賦值0~19;第二個for循環(huán),給數(shù)組p賦值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三個for循環(huán),將數(shù)組p中元素的值進行累加,k=1+2+5+10=18。

51.B解析:(1)二維數(shù)組的定義

二維數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達式][常量表達式]。

二維數(shù)組在內(nèi)存中是按行優(yōu)先的順序存放的,即先存放第一行的元素,再存放第二行的元素,依次類推。

(2)二維數(shù)組元素的引用

二維數(shù)組元素的表示形式為:數(shù)組名[下標(biāo)][下標(biāo)],下標(biāo)可以是整型常量或整型表達式其范圍為:0~(常量表達式-1)。

(3)二維數(shù)組的初始化

可以用以下方法對二維數(shù)組元素初始化:

①分行給二維數(shù)組賦初值

例如:inta[2][2]={{1,2},{3,4}};

這種賦值方式比較直觀,把第1個大括號內(nèi)的數(shù)據(jù)賦給第1行的元素,第2個大括號內(nèi)的數(shù)據(jù)賦給第2行的元素,即按行賦值。

②可以將所有數(shù)據(jù)寫在一個大括號內(nèi),按數(shù)組排列的順序?qū)Ω鱾€元素賦初值。

③可以對部分元素賦初值,沒有初始化的元素值為0。

④如果對全部數(shù)組元素賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省略。

52.A

53.B解析:strlen函數(shù)用于計算以,'\\0'結(jié)束的字符串的長度,函數(shù)值為字符串的實際長度,長度中不包括,'\\0'。q數(shù)組定義的數(shù)組大小為10,而初始化時字符串只占用了前3個存儲單元,其余存儲單元系統(tǒng)自動加'\\0',故數(shù)組q的長度為3;而p數(shù)組定義時沒有指定大小,其大小根據(jù)初始化所賦值確定為3,沒有字符串結(jié)束符,故字符串的長度不能確定。

54.D

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

56.B解析:本題考核的知識點是for循環(huán)次數(shù)的計算.本程序中for循環(huán)的次數(shù)為c-1+1共循環(huán)了c次,而每循環(huán)一次s的值加1,所以s的值為s+c.而最開始s的值為a,故4個選項中選項B符合題意.

57.B軟件工程的目標(biāo)是,在給定的成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。基于這一目標(biāo),軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。

58.B解析:本題考查循環(huán)語句的嵌套以及條件的判斷問題。在程序中,內(nèi)層循環(huán)判斷條件為'\ue008j<=i\ue009',而j的初值為3,故當(dāng)i的值為1和2時,內(nèi)層循環(huán)體都不會被執(zhí)行。只有當(dāng)i和j都等于3時才會執(zhí)行一次。m的值為55對3取模,計算結(jié)果為1。

59.D解析:在格式輸入中,要求給出的是編譯的地址,而D)答案中給出的s[1]是一個值的表達式。

60.D解析:結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名是合法的定義,引用成員a的方法是a.a,變量a處于不同的“層次”上,系統(tǒng)完全能夠分情。st是—個結(jié)構(gòu)體名,不會為結(jié)構(gòu)體名分配存儲空間,應(yīng)該是在運行時為結(jié)構(gòu)體變量a分配6個字節(jié)的存儲單元,故選項B和選項C錯誤。

61.Afwrite函數(shù)將數(shù)組a寫入文件,寫入兩遍,讀出后為選項A)的值,所以選擇A)。

62.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

63.A

64.B

65.C在輸入3和5之間除逗號外不能有其他字符。

66.A解析:C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間所有成員一直駐留在內(nèi)存中。

67.A

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

69.Dfputc函數(shù)的一般調(diào)用形式為fputc(ch,fp),其中ch是要輸出的字符,它可以是一個字符常量,也可以是一個字符變量,fp是文件指針變量。函數(shù)的作用是將字符(ch的值)輸出到fp所指向的文件中。

溫馨提示

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

最新文檔

評論

0/150

提交評論