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

下載本文檔

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

文檔簡介

2021-2022年湖北省宜昌市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-′a′+′A′;

s++;}}

main()

{charstr1[100]="abcddfefdbd",c=′d′;

ss(str1,c);printf("%s\n",str1);}

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

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

2.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運行后的輸出結(jié)果是(選項D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No

3.有如下程序#include<stdio.h>main(){FILE*fpl;fpl=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有內(nèi)容為:good,則運行以上程序后文件f1.txt中的內(nèi)容為

A.goodabcB.abcdC.abcD.abcgood

4.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運行后的輸出結(jié)果是()。

A.18,34,100B.24,34,92C.24,34,100D.18,34,92

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

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

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

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

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

6.以下對于C語言的描述中,正確的是:()

A.C語言調(diào)用函數(shù)時,值傳遞方式只能將實參的值傳給形參,形參的值不能傳遞給實參

B.C語言中函數(shù)既可以嵌套定義,也可以遞歸調(diào)用

C.函數(shù)必須有返回值

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一源程序文件中

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

A.在C程序中,每行中只能寫一條語句

B.若a是實型變量,C程序中允許賦值a=10,因此實型變量中允許存放整型數(shù)

C.在C程序中,無論是整數(shù)還是實數(shù),都能被準確無誤地表示

D.在C程序中,%是只能用于整數(shù)運算的運算符

8.判斷一個棧ST(最多元素為Maxsize)為滿的條件是()。

A.ST->top!==-1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

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.

11.C語言中的變量只能由字母、數(shù)字和下劃線組成,且第一個字符()。

A.必須是字母B.必須是下劃線C.必須是下劃線和字母D.可以是字母.數(shù)字或下劃線中任一一種

12.有以下程序

#include<stdio.h>

structS

{inta,b;}data[2]={10,100,20,200};

main()

{struetSp=data[l];

printf(“%d\n”,++(P.a(chǎn))):

}

程序運行后的輸出結(jié)果是A.10B.11C.20D.21

13.有以下程序#include<stdio.h>main(){inta=5,b=l;t=(a<<2)|b;printf("%d\n",t);}程序運行后的輸出結(jié)果是______。A.21B.11C.6D.1

14.結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括A.順序結(jié)構(gòu)B.GOTO跳轉(zhuǎn)C.選擇(分支)結(jié)構(gòu)D.重復(循環(huán))結(jié)構(gòu)

15.下列不屬于軟件工程的3個要素的是

A.工具B.過程C.方法D.環(huán)境

16.下列關(guān)于棧的敘述中,正確的是()。

A.棧底元素一定是最后入棧的元素B.棧操作遵循先進后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對

17.以下敘述中錯誤的是A.gets函數(shù)用于從終端讀入字符串

B.getchar函數(shù)用于從磁盤文件讀入字符

C.fputs函數(shù)用于把字符串輸出到文件

D.fwrite函數(shù)用于以二進制形式輸出數(shù)據(jù)到文件

18.設(shè)a和b均為double型變量,且a=5.5,b=2.5,則表達式(int)a+b/b的值是A.6.5B.6C.5.5D.6

19.下列選項中,能夠滿足“只要字符串s1等于字符串S2,則執(zhí)行ST”要求的是()。

A.if(s1-s2==0)ST;

B.if(s1==s2)ST;

C.if(strcpy(s1,s2)==1)ST;

D.if(strcmp(s2,s1)==0)ST;

20.有以下程序:#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<9)printf("%d\n",a);clscprintf("%d\n",a--);}程序運行時從鍵盤輸入9<回車>,則輸出結(jié)果是()。A.10B.11C.9D.8

二、2.填空題(20題)21.以下程序的運行結(jié)果為【】。

main()

{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];

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

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

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

printf("%-3d",b[i][j]);

printf("\n");

}

}

22.一棵二叉樹第6層(根結(jié)點為第一層)的結(jié)點最多為______個。

23.函數(shù)ssbc叩()的功能是對兩個字符申進行比較。當s所指字符串和t所指字符申相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp())。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{

while(*s&&*t&&*s==)

{s++;t++;}

return

}

24.結(jié)構(gòu)化分析方法是面向______進行分析的方法。

25.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

26.若要說明一個新類型名ArrInt,使得定義語句ArrIntx;等價于定義語句Intx[4][10];,正確的說明語句形式為【】。

27.以下程序運行后的輸出結(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);

}

28.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara='A';

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

29.以下函數(shù)的功能是計算s=1+1/21+1/3!+…+1/n!,請?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

30.以下程序由終端鍵盤輸入一個文件名,然后把從終端鍵盤輸入的字符依次放到該文

件中,用井作為結(jié)束輸入的標志。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if((fp=【】)==NULL)

{printf("Cannotope\n");exit(O);}

printf("Enterdata\n");

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

fputc(【】,fp);

fclose(fp);

}

31.以下程序?qū)?shù)組a的4個元素和數(shù)組b的6個元素寫到名為letter.dat的二進制文件中,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

chara[4]="1234",b[6]="abcdef";

if((fp=fopen("【】","wb"))==NULL)exit(0);

fwrite(a,sizeof(char),4,fp);

fwrite(b,【】,1,fp);

fclose(fp);

}

32.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

33.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

34.由25人圍坐成圓圈,先從任意一人出發(fā)用1到25順時針依次編號,然后從1號開始順時針報數(shù)(1、2、3…),凡報5的倍數(shù)者出圈,剩下者繼續(xù)報數(shù),求出最后出圈者的編號。

#include<stdio.h>

【】

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=【】;

do

{if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

35.設(shè)有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

36.以下程序的功能是:求出數(shù)組x中各相鄰兩個元素的和依次存放到a數(shù)組中,然后輸出。請?zhí)羁铡?/p>

main()

{intx[10],a[9],I;

for(I=0;I<10;I++)scanf("%d",&x[I]);

for(【】;I<10;I++)

a[I-1]=x[I]+【】;.

for(I=0;I<9;I++)printf("%d",a[I]);

printf("");

}

37.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);

38.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當字符串是回文時,函數(shù)返回字符串“yes!”,否則函數(shù)返回字符串“no!”,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adsda。請?zhí)羁铡?/p>

#include<stdio,h>

#include<string,h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*pl++!=*p2--){t=1;break

if(【】)return("yes!");

elsereturn("no!");

}

main(){charstr[50];

printf("Iaput:");scanf("%s",str);

printf("%s\n",【】);

39.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。

40.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。

三、1.選擇題(20題)41.標準庫函數(shù)fgets(s,n,file)的功能是()。

A.從文件file中讀取長度為n的字符串存入字符數(shù)組s中

B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數(shù)組s中

C.從文件file中讀取n個字符串存入字符數(shù)組s中

D.從文件file中讀取長度為n-1個字符的字符串存入字符數(shù)組s中

42.以下程序的輸出結(jié)果是()。main(){inta=5,b=4,c=6,d;printf("%d\n",d=a>b?(a>c?a:C):(B));}

A.5B.4C.6D.不確定

43.設(shè)有如下定義:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正確的賦值語句是

A.p=&data.n;

B.*p=data.n;

C.p=(structsk*)&data.n;

D.p=(structsk*)data.n:

44.下列選項中錯誤的說明語句是

A.chara[]={'t','o','y','o','u','\0'};

B.chara[]={"toyou\0"};

C.chara[]="toyou\0";

D.chara[]='toyou\0';

45.設(shè)x、y、t均為血型變量,則執(zhí)行語句x=y=3;t=++x||++y;后,y的值為______。

A.不定值B.4C.3D.1

46.下列敘述錯誤的是()。

A.函數(shù)名是屬于用戶標識符,需符合C語言對標識符的規(guī)定

B.形參只能是變量

C.為保證程序的正常運行,函數(shù)中定義的變量不能與其他函數(shù)中的變量同名

D.函數(shù)中定義的變量可以與其他函數(shù)中的變量同名

47.以下敘述十正確的是

A.全局變量的作用域一定比局部變量的作用域范圍大

B.靜態(tài)(static)類別變量的生存期貫穿于整個程序的運行期間

C.函數(shù)的形參都屬于全局變量

D.未在定義語句中賦初值的auto變量和static變量的初值都是隨機值

48.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]=\goodmorning';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d');

D.charc[]={"goodmorning");

49.下列說法正確的是()。

A.main函數(shù)必須放在C程序的最后面

B.main函數(shù)必須放在C程序的最前面

C.main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從程序開頭執(zhí)行的

D.main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從main函數(shù)開始的

50.下面的程序ASCⅡ。main(){intx=3,y=0,z=0;if(x==y+z)printf("****");elseprintf("####");}

A.有語法錯誤不能通過編譯B.輸出****C.可以通過編譯,但是不能通過連接,因而不能運行D.輸出####

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

A.程序就是軟件

B.軟件開發(fā)不受計算機系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體

D.軟件是程序、數(shù)據(jù)和相關(guān)文檔的集合

52.數(shù)據(jù)庫的故障恢復一般是由()

A.數(shù)據(jù)流圖完成的B.數(shù)據(jù)字典完成的C.DBA完成的D.PAD圖完成的

53.下面程序的輸出結(jié)果是_______。#defineP1(x)printf(x)main(){chard[]="p";P1(d);P1("d");}

A.pdB.d"d"C.pdD.p"d

54.按照“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

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

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

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

56.若有說明chars1[30]="Thecity",s2[]="isbeautiful";,則在使用函數(shù)strcat(s1,s2)后,結(jié)果是()。

A.s1的內(nèi)容更新為Thecityisbeautiful\0

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

C.s1的內(nèi)容更新為Thecity\0isbeautiful\0

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

57.命令“DIRA:*.*/W”的功能是()

A.寬行顯示A盤當前目錄的所有文件

B.寬行顯示A盤所有目錄的所有文件

C.寬行顯示A盤的所有目錄

D.顯示A盤中的文件名,每滿一屏后停頓一下

58.在下列關(guān)于二叉樹的敘述中,正確的一項是

A.在二叉樹中,任何一個結(jié)點的度都是2

B.二叉樹的度為2

C.在二叉樹中至少有一個結(jié)點的度是2

D.一棵二叉樹的度可以小于2

59.下面程序的功能是輸出以下形式的金字塔圖案:****************#include<stdio.h>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");}}在下劃線處應填入的是()。

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

60.有以下結(jié)構(gòu)體說明和變量定義,相應的鏈表如圖所示:

struetnode{intdata;struetnode*next;*p,*q,*r;現(xiàn)將q所指結(jié)點多鏈表中刪除,同時要保持鏈表的連續(xù),以下不能完成指定操作的語句是()。

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

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

C.p->next=r;

D.p=q->next

四、選擇題(20題)61.

62.以下程序的輸出結(jié)果為

main()

{

char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char**p;

inti;

p=alpha;

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

printf("%s",p[i]);

printf("\n");

}

A.ABCDEFGHIJKLB.ABCD

C.ABCDEFGHIJKLMNOPD.AEIM

63.

設(shè)變量已正確定義,則以下能正確計算f=n!的程序是()。

A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=l;i<2n;i++)f*=i:

C.f=l:for(i=n;i>1;i++)f*=i:

D.f=1;for(i=n;i>=2;i--)f*=i:

64.有以下程序(說明:字母A的ASCIl碼值是65):

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

A.BTB.YEC.YTD.BY

65.已知數(shù)據(jù)表A中每個元素距其最終位置不遠,為了節(jié)省時間,應采用的算法是()。

A.堆排序B.直接插入排序C.快速排序D.直接選擇排序

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

A.3,5,3,5B.3,5,5,3C.5,3,3,5D.5,3,5,3

67.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的輸出結(jié)果是

68.若有說明:inta[3][4]={0};,則下面正確的敘述是

A.只初始化了第一個元素,即a[0][0]可得到初值0

B.此初始化語句不正確

C.數(shù)組a中各元素都可得到初值,但其值不一定為0

D.數(shù)組a中每個元素均可得到初值0

69.

70.關(guān)系表中的每一橫行稱為一個()。A.元組B.字段C.屬性D.碼

71.

72.有以下定義:

73.合法的數(shù)組定義是()。

A.

B.

C.

D.

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

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

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

C.改變函數(shù)形參的值,不會改變對應實參的值

D.當在程序的開頭包含頭文件stdi0.h時,可以給指針變量賦NULL、、、

75.

76.以下不能輸出字符A的語句是()。(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)

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

A.在賦值表達式中,賦值號的左邊既可以是變量,也可以是任意表達式

B.實型變量中允許存放整型數(shù)

C.若a和b類型相同,在執(zhí)行賦值a=b后,b中的值將放入a中,但b中的值不變

D.在C程序中,求余算符“%”兩邊的類型相同時才能進行運算

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

main

{intx=0.5;charz='a';

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

79.

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從大到小的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入前2個字符中,插人后前3個字符依然有序,再把第4個字符插入前3個字符中,待排序的字符串已在主函數(shù)中賦予。例如,原始字符串為“goodluck”,則排序后的字符串為“uoolkgdc”。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串數(shù)組中的M個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。例如,若字符串數(shù)組中的M個字符串為:ABCDBCDEFGCDEFGHI則合并后的字符串內(nèi)容應該是ABCDBCDEFGCDEFGHl。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidproc(chararr[M][N],char*b){}voidmain{charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;chararr[100]={"##################"};printf(”Thestrin9:kn”);for(i=0;i<M;i++)puts(str[i]);printf("\n");proc(str,arr);printf("TheAstring:\n");printf("%S",arr);printf("\n\n");}

參考答案

1.B解析:在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式與整數(shù)的存儲形式類似。C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以對字符型數(shù)據(jù)進行算術(shù)運算,此時相當于對它們的ASCII碼進行算術(shù)運算,在本題中,s++相當于s=s+1,即讓s指向數(shù)組中的下一個元素。

2.B本題考核的知識點是puts()函數(shù)的應用。主函數(shù)中定義了一個字符數(shù)組s并賦初值,一個字符串指針變量ps并讓它指向s。程序中p+4的地址為數(shù)組第5個元素的地址,而調(diào)用put(str_adr)函數(shù)時,將從str_adr這一地址開始,依次輸出存儲單元中的字符,遇到第一個“\\0”時結(jié)束輸出,并自動輸出一個換行符。所以put(p++4)將輸出n/No,put(s)將從s第一個元素開始輸出到第3個元素結(jié)束(因為執(zhí)行*(p4)c0語句后s中的第5個元素的值為0,而s中的第4個元素為“\\”,puts將遇到“\\0”,結(jié)束輸出),即輸出yes。所以,4個選項中選項B符合題意。

3.C解析:主函數(shù)中定義了一個文件指針fp1,然后通過fopen()函數(shù),以寫的方式打開文件“fl.txt”,并讓指針fp1指向它,接著調(diào)用fpfintf()函數(shù)將“abc”寫到文件fp1所指的文件里,由于開始fp1指向文件的“fl.txt”的開始位置,因此“abc”將把文件“fl.txt”里原來的內(nèi)容“good”覆蓋掉,故文件“fl.txt”里最后的內(nèi)容為“abc”。

4.D程序中S1和S2都是宏定義。S1(a+b)宏展開后的表達式為4*a+b+4*(a+b),即4*1+2+4*(1+2),結(jié)果為18;S2(a,b)宏展開后的表達式為4*(a)*(b)+b*a,即4*(1)*(2)+2*1,結(jié)果為10;S1(3)宏展開后的表達式為4*3+4*(3),結(jié)果為24;32(3+a,b+3)宏展開后的表達式為4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,結(jié)果為92。最終輸出:18,34,92。故本題答案為D選項。

5.C

6.A

7.D

8.D

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.A

11.C

12.D

13.A解析:本題主要考查了C語言的邏輯運算符,先將變量a,b的值轉(zhuǎn)換為2進制數(shù),a=00000101,b=00000001,a先左移2位結(jié)果為00010100,再與b按位或運算,結(jié)果為00010101,轉(zhuǎn)換為十進制數(shù)為21,因此,選項A是正確的。

14.BB【解析】1966年Boehm和JaCopini證明了程序設(shè)計語言僅僅使用順序、選擇和重復三種基本控制結(jié)構(gòu)就足以表達出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。

15.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術(shù)手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

16.B棧是先進后出,因此,棧底元素是先入棧的元素,棧頂元素是后入棧的元素。

17.B其中B選項的getchar函數(shù)用于從終端讀入字符。故本題答案為B選項。

18.D解析:本題考查的知識點是運算符的優(yōu)先級。在這個表達式中,優(yōu)先級最高的是(int)a,也就是對5.5取整,結(jié)果是5,其次是b/b,即2.5/2.5,結(jié)果是1.000000,最后相加結(jié)果為6.000000(表達式的最終結(jié)果為實型),所以4個選項中D正確。

19.D在C語言中,對兩個字符串進行比較,使用字符串比較函數(shù)strcmp。如果這個函數(shù)的返回值等于0,說明兩個字符串相等。故本題答案為D選項。

20.A本題考查簡單的運算符操作.當輸入9時,(a++<9)為假,所以執(zhí)行else語句中的printf("%d\n",a--),在執(zhí)行時此時a經(jīng)過a++操作a=10,所以答案為A。

21.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。

22.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結(jié)點。第6層的結(jié)點數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點最多數(shù)”和“某一層的結(jié)點最多數(shù)”。前者的計算是深度為m的二叉樹最多有2m-1個結(jié)點。

23.*t或t[0)*s-*t或*s-t[0]或s[0]-*t或s[0]t[0]*t或t[0)*s-*t或*s-t[0]或s[0]-*t或s[0]t[0]解析:本題考查的知識點是字符型指針變量作為函數(shù)的參數(shù)以及序符串大小的比較.函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應的字符相等則接著比較下一個字符,一直到兩個字符串中對應字符不等,或者有一個為'\\0',此對應字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為'\\0'。且*s和*t相同,第一處應填“*t”或其他等價形式。根據(jù)題意可知第二處應填“*s-*t”或其等價形式。

24.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

25.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。

26.typedefintArrInt[4][10];

27.21

28.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實現(xiàn)的是在字符“A”的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。

29.k=k*ik=k*i解析:本題中遺過for循環(huán)求s表達式中每一項的和,表達式“fac=fac/k;”求的是每—項的值,所以k的值應為n!,在求n!的時候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故本題填k=k*i。

30.fopen(fname:"w")

31.letter.dat6*sizeof(char)letter.dat\r\n6*sizeof(char)解析:本題主要考查函數(shù)fwrite(char*pt,unsignedsize,unsignedn,FILE*fp),把pt所指向的n*size個字節(jié)輸出到fp所指文件中。

32.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個;維表代表一種關(guān)系。

33.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

34.main()0a[j]=0count<25

35.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標識符'\\0'所以題中數(shù)組str有6個元素。②ptr指向數(shù)組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

36.I=1x[I-1]I=1,x[I-1]解析:對于10個數(shù),相臨的兩個數(shù)相加取和,總共要進行9次加法運算,所以空14處應填入I=1。相臨的兩個數(shù)相加取和,放在數(shù)組a中,x[0]與x[1]的和存放在a[0]中,所以空15處應填入x[I-1]。

37.11解析:本題考查的是基本賦值運算符和賦值表達式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。

38.p1+(stfien(str)-1)或str+(strlen(str)-1)t==0或!thuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+strp1+(stfien(str)-1)或str+(strlen(str)-1)\r\nt==0或!t\r\nhuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+str解析:回文字符串是指正向與反向拼寫都一樣。由huiwen函數(shù)可知,第三處應該填寫調(diào)用函數(shù)huiwen(str)。在函數(shù)huiwen中,執(zhí)行P1=str;使p1指向字符串str中第一個字符的地址,則第一處應該使p2指向字符串str中最后一個字符的地址,故填p1+(stden(str)-1)或str+(strlen(str)-1)。本題要求如果是回文,則返回'yes!',否則,返回'no!',故當t=0時,說明字符串str為回文,所以第二處應填t==0或!t。

39.邏輯關(guān)系邏輯關(guān)系

40.相鄰相鄰

41.B解析:字符串輸入函數(shù)fgets()的調(diào)用形式為:fgets(s,n,fp)。fgets函數(shù)參數(shù)說明:“s”可以是一個字符數(shù)組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數(shù);“fp”是指向該文件的文件型指針。fgets函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數(shù)組s中;讀入字符串后會自動在字符串末尾加入“'\\0'”結(jié)束符,表示字符串結(jié)束。

42.C解析:本題考核的知識點是條件表達式的使用.在C語言中問號表達式(如:a>c?a:c;)的計算規(guī)則為:如果a>c為真,那么表達式的值為a的值;否則表達式的值為C的值。本題中的printf()函數(shù)中的輸出表達式,首先計算括號內(nèi)的條件表達式,它的值為6(a>c?a:c中a>c即5>6為假故該表達式的值為c的值即為6),然后再計算外面表達式(等價于a>b?6:b)的值,同理可得該表達式的值為6,將值6賦值給d,因此最后輸出該表達式的值為6,所以,4個選項中C為所選。

43.C解析:本題主要考查了結(jié)構(gòu)體變量引用成員數(shù)據(jù)的方法,主要有以下幾種:結(jié)構(gòu)體變量名.成員名或結(jié)構(gòu)體指針->成員名的方法來引用結(jié)構(gòu)體成員。

44.D解析:通過賦初值的方式給一維數(shù)組賦字符串,可以用給一般數(shù)組賦初值的相同方式給一維字符數(shù)組賦字符串,也可以在賦值時直接賦字符串常量。選項B)和C)后面的'\\0'是多余的,不過也不錯,在C語言中,系統(tǒng)會自動在字符串的結(jié)尾處加上一個字符'\\0'作為串的結(jié)束標記。

45.C解析:C語言中在做邏輯或運算時,自左向右判斷各個參加或運算的表達式,一旦運算到某式的值為非零時,表明整個表達式一定為真,余下的語句則不再進行運算。本題中,++x的值為真,則++y并沒有進行運算,所以y值不變。

46.C解析:本題考查函數(shù)調(diào)用時參數(shù)的作用域。在函數(shù)調(diào)用時,函數(shù)體內(nèi)定義的變量的作用域連函數(shù)體內(nèi),因而在不同函數(shù)體內(nèi)定義的變量可以相同,不影響各個變量的使用。

47.B解析:若在函數(shù)中定義與全局變量名字相同局部變量,則全局變量在該函數(shù)中將不起作用,因此全局變量的作用域并不一定比局部變量的作用域大,故選項A不正確;靜態(tài)變量一旦定義,將在整個程序的運行期間都存在,故選項B正確:函數(shù)的形參只在函數(shù)調(diào)用的時候分配存儲空間,在退出函數(shù)時收回存儲空間,因此是局部的,故選項C不正確;沒有賦值的auto型變量的初值是隨機的,沒有賦值的static型變量的初值是0,故選項D不正確。所以,B選項為所選。

48.A解析:本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②C語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。

選項A)中一個單引號內(nèi)放了若干個字符是錯誤的;選項B)和選項D)選項中將一個字符串賦值給一個字符數(shù)組是允許的。

49.D解析:每個C程序有且只有一個主函數(shù)(main),且程序必須從main()函數(shù)開始執(zhí)行。別外main()函數(shù)可以放在程序中的任意位置。

50.D解析:對于printf()函數(shù),若有格式控制字符,則在格式控制字符的位置輸出變量i的值;否則,直接輸出雙引號內(nèi)的內(nèi)容。

51.D解析:軟件是運行在計算機硬件之上的邏輯實體,包括程序、數(shù)據(jù)和相關(guān)的文檔,軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制。

52.C解析:數(shù)據(jù)庫管理員DBA(DataBaseAdministrator)對數(shù)據(jù)庫進行統(tǒng)一管理、包括數(shù)據(jù)庫故障恢復,數(shù)據(jù)更新、維護優(yōu)化等操作。

53.A解析:帶參數(shù)的宏定義的一般形式為:#define宏名(參數(shù)表)字符串程序中的P1(d);經(jīng)宏置換后為printf(d);,所以輸出字符串p;程序中的P1('d');經(jīng)宏置換后printf('d')。

54.BB.【解析】棧是一種特殊的線性表,其插入和刪除運算都只在線性表的一端進行,而另一端是封閉的。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元索是最后被插入的元素,也是最后被刪除的元素。棧是按先進后出的原則組織數(shù)據(jù)的。

【知識拓展】“?!钡男问饺缡謽尩膹椣?,最后壓入的子彈總是最先被彈出,而最先壓人的子彈最后才被彈出,也就是“先進后出”。

55.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。

56.D解析:該函數(shù)用來使兩個字符串連接成為一個字符串。strcat(str1,str2)將str2中的字符連接到str1的字符后面,并在最后加一個“\\0”。連接后新的字符串存放在strl中。注意:用于字符串處理的函數(shù)。

57.A

58.D解析:本題考查了二叉樹的基本概念。在二叉樹中,葉子節(jié)點的度是1;當該二叉樹為空樹時,根節(jié)點的度為零;為非空樹時,根節(jié)點的度為2。

59.B解析:本題是找出打印“*”號的條件,從圖中我們可以找到規(guī)律,第一行1個“*”,第二行3個“*”,第三行5個*,……,即每行中。的個數(shù)恰好是行數(shù)的2倍減一個,由此不難得出,橫線處應當填入2*i-1。

60.D解析:本題定義了結(jié)構(gòu)體類型的指針變量p,q,r,并各自有兩個成員變量data和next,data用于存放數(shù)據(jù),next用于存放下一個結(jié)點的地址,所以,要想將q所指結(jié)點從鏈表中刪除,同時保持鏈表的連續(xù),必須使P結(jié)點的next指向r,選項D)不對。

61.B

62.C指針數(shù)組*alpha[6]實際上相當于一個二維數(shù)組,而p是一個指向指針的指針,p=alpha后,引用p[x]便是引用數(shù)組*alpha[6]中的第x個數(shù)組元素的首地址,所以打印的結(jié)果應當為ABCDEFGHIJKLMNOP。

63.D由i"11的數(shù)字定義可知n!=n*(n-1)*(n-2)*…*1。在選項A中,由于f的初值為0,在for循環(huán)語句中,f依次乘以1,2,3,…,n,最后計算得到f=n!一0,所以選項A不正確。在選項B中,f的初值為1,在for循環(huán)語句中,f依次乘以1,2,3,…,(n-1),最后計算得到f=(n-1)!,所以選項B不正確。在選項C中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項c不正確。在選項D中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n-1,n-2,…,2,最后計算得到f=n!,所以選項D正確。

64.B本題中執(zhí)行fun(a)時,會

溫馨提示

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

評論

0/150

提交評論