2021年遼寧省營口市全國計算機等級考試C語言程序設(shè)計_第1頁
2021年遼寧省營口市全國計算機等級考試C語言程序設(shè)計_第2頁
2021年遼寧省營口市全國計算機等級考試C語言程序設(shè)計_第3頁
2021年遼寧省營口市全國計算機等級考試C語言程序設(shè)計_第4頁
2021年遼寧省營口市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩109頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年遼寧省營口市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。

A.多態(tài)性B.繼承C.封裝性D.模塊化

2.廣告系統(tǒng)為了做地理位置定向,將IPV4分割為627672個區(qū)間,并標識了地理位置信息,區(qū)間之間無重疊,用二分查找將IP地址映射到地理位置信息,請問在最壞的情況下,需要查找多少次?()

A.17B.18C.19D.20

3.若x=10010111,則表達式(3+(int)(x))&(~3)的運算結(jié)果是()。

A.10011000B.10001100C.10101000D.10110000

4.查找較快,且插入和刪除操作也比較方便的查找方法是

A.分塊查找B.二分查找C.順序查找D.折半查找

5.設(shè)有定義:“inta;floatb;”,執(zhí)行“scanf("%2d%f",&a,&b);”語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是()。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

6.有以下程序:#include<stdi0.h>#include<string.h>structA{inta;charb[10];doubleC;);voidf(structAt);main(){structAa={"1001,"ZhangDa",l098,0};f(a);printf("%d,%S,%6.1f\n",a.a(chǎn),a.b,a.c);}voidf(structAt){t.a(chǎn)=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}程序運行后的輸出結(jié)果是()。A.1001,ZhangDa,1098.0

B.1002,ChangRong,1202.0

C.1001,ChangRong,1098.0

D.1002,ZhangDa,1202.0

7.由3個結(jié)點可以構(gòu)造出______種不同形態(tài)的二叉樹。

A.3B.4C.5D.6

8.已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()

A.ABCDEB.ECABDC.EACDBD.CDEAB

9.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

輸出結(jié)果是()。

A.28

B.27

C.42

D.41

10.下面程序段的運行結(jié)果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符′C′的地址D.字符′C′

11.二叉樹的第三層最少有________個結(jié)點。

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

12.若有定義:inta=7;floatx=2.5,y=4.7;則表達式x+a%3*(int)(x+y)%2/4的值是()。

A.2.500000B.2.7500OOC.3.500000D.0.000000

13.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序

14.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

15.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

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

B.36

C.編譯出錯

D.00

16.語句int(*ptr)()的含義是()。

A.ptr是一個返回值是int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向血型數(shù)據(jù)的指針

17.每次從無序表中挑選出一個最小或最大元素,把它交換到有序表的一端,此種排序方法叫做()排序。

A.插入B.堆C.快速D.歸并排序

18.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

19.

20.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

二、2.填空題(20題)21.在一棵二叉樹中,度為0的結(jié)點的個數(shù)為n0,度為2的結(jié)點的個數(shù)為n2,則有n0=【】。

22.已知字符A的ASCⅡ代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>.則輸出結(jié)果是()。

#include

main()

{chara,b;

a=getchar();scanf("%d",&B);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,B);

}

23.設(shè)有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

24.設(shè)有以下程序,為使之正確運行,請在橫線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

25.設(shè)有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。

struct{intday;Charmonth;intyear;}a,*b;

b=&a;

26.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

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

#defineS(x)4*x*x+1

mah()

{inti=6,j=8;

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

}

28.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細設(shè)計屬于______中的一個階段。

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

30.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?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);}

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

32.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計中,常用的描述工具是【】。

33.用下面語句調(diào)用庫函數(shù)malloc,使單精度型指針p指向具有40個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡?/p>

p=(float*)【】;

34.下面程序的輸出是【】。

main()

{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

35.與結(jié)構(gòu)化需求分析方法相對應(yīng)的是【】方法。

36.在算法的4個特性中,算法必須能在執(zhí)行有限個步驟之后終止指的是算法的______特性。

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

intmystrlen(char*str)

{inti;

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

return(i);}

38.【】是一種信息隱蔽技術(shù),目的在于將對象的使用者和對象的設(shè)計者分開。

39.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

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

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

三、1.選擇題(20題)41.以下程序的輸出結(jié)果是intf(){stadcinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf(“%d\n”,A);}

A.20B.24C.25D.15

42.下面程序的輸出結(jié)果是

#include<stdio.h>

#include<string.h>

main()

{char*p1="abc",*p2="ABC",str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

43.下列二維數(shù)組初始化語句中,正確且與語句inta[][3]={1,2,3,4,5}等價的是()。

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

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

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

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

44.有以下程序:voidswapl(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2{intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(A);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其輸出結(jié)果是

A.5353B.5335C.3535D.3553

45.下列不屬于軟件調(diào)試技術(shù)的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法

46.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b=′b′;

C.floata=1,*b=&a,*c=&b;

D.doublea=00;b=1.1;

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

48.表達式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達式不合法D.字符8

49.在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。

A.inti=100;for(;;){i=i%10+1;if(i>10)break;}

B.while(1);

C.intk=0;do{++k;}while(k<=10);

D.ints=12;while(s);--s;

50.閱讀下列程序段,則程序的輸出結(jié)果為

#include"stdio.h"

#defineM(X,Y)(X)*(Y)

#defineN(X,Y)(X)/(Y)

main()

{inta=5,b=6,c=8,k;

k=N(M(a,b),c);

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

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

51.若有以下定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;則值為3的表達式是()

A.p+=2,*(pd++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p

52.有以下程序main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j];x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}程序運行后的輸出結(jié)果是

A.75310246B.1234567C.76310462D.13570246

53.有以下程序:main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后輸出結(jié)果是()。

A.70B.07C.11D.430

54.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為

A.55566.0B.566.0C.7777.0D.566777.0

55.下列敘述中正確的是()。A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率

56.以下程序的輸出結(jié)果是()main(){inta[3][3]={1,2},{3,4,},{5,6,},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<i;j++)s+=a[i][j];printf("%d\n",s);}

A.18B.19C.20D.21

57.軟件需求分析一般應(yīng)確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

58.若有定義:inta[4][10];,則以下選項中對數(shù)組元素a[i][i]引用錯誤的是______。(0<=i<4,0=i<10)

A.*(&a[0][0]十10*i+j)B.*(a+i)+jC.*(a+i)+j)D.*(a[i]+j)

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

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

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

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

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

60.以下與函數(shù)fseek(fp,0L,SEEK_SET)有相同作用的是

A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

四、選擇題(20題)61.

62.有以下程序執(zhí)行后的輸出結(jié)果是()。

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

63.有以下程序:

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

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

64.若有定義語句:A.1B.1.9C.2D.2.4

65.有如下程序段

#include"stdio.h"

typedefunion

{longx[2];

inty[4];

charz[8];

}atx;

typedefstructaa

{longx[2];

inty[4];

charz[8];

}stx;

main()

{printf("union=%d,structaa=%d\n",sizeof(atx),sizeof(stx));}

則程序執(zhí)行后輸出的結(jié)果是

A.union=8,structaa=8

B.union=8,structaa=24

C.union=24,structaa=8

D.union=24,structaa=24

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

A.32B.31C.16D.15

67.有以下程序:main{union{charch[2];intd;}s;d=0x4321;printf("%x,%x\n",S.ch[0],S.ch[l]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是()A.21,43B.43,21C.43,00D.21,00

68.有以下程序段當執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

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

A.用E—R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系

B.用E—R圖只能表示實體集之間一對一的聯(lián)系

C.用E—R圖只能表示實體集之間一對多的聯(lián)系

D.用E—R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

70.設(shè)有定義:“char*c;”,以下選項中能夠使字符型指針c正確指向一個字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

71.

72.

數(shù)字字符0的ASCII值為48,運行以下程序的輸出結(jié)果是()。

main

(chara=1,b=2;

printf("%C,",b++);printf("%d\n",b—a);}

A.3,2B.50,2C.2,2D.2,50

73.設(shè)以下變量均為int類型,表達式的值不為7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

74.有以下程序

#include<stdio.h>

#include<string.h>

main()

{chara[10]=”abcd”;

printf("%d,%d\n",strlen(a),sizeof(a));

}

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

A.7,4

B.4,10

C.8,8

D.10,10

75.若有定義語句:

76.

77.

78.當變量c的值不為2、4、6時,值為“真”的表達式是()。

79.有下列程序:

main()

{inti,j,x=0;

for(i=0,i<2;i++)

{x++;

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

{if(j%2)continue;

x++:

}

x++:

}

printf("x=%d\n"x);

}

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

A.x=4B.x=8C.x=6D.x=12

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:首先把b所指字符串中的字符按逆序存放,然后將str1所指字符串中的字符和Str2所指字符串中的字符,按排列的順序交叉合并到str所指數(shù)組中,過長的剩余字符接在str所指數(shù)組的尾部。例如,當str1所指字符串中的內(nèi)容為ABCDEFG,str2所指字符串中的內(nèi)容為1234時,str所指數(shù)組中的內(nèi)容應(yīng)該為A483C2D1EFG;而當str1所指字符串中的內(nèi)容為1234,str2所指字符串中的內(nèi)容為ABCEDFG時,str所指數(shù)組中的內(nèi)容應(yīng)該為1G2F31:4DCBA。

請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio。h>

#include<string.h>

voidproc(char*strl,char*str2,char*str){

inti,j;charch;

i=0;j=strleu(str2)-1;

//****found****

while(i>j)

{

ch=str2[i];str2[i]=str2[j];str2[j]=ch;

i++;j--;

}

while(*str1||*str2)

{

if(*str1){*str=*str1;str++;str1++;)

if(*str2){*str=*str2;str++;str2++;)

}

//****found****

*str=0:

}

voidmain

{

chars1[100],s2[100],t[200];

system("CLS");

printf("\nEnters1string:");

scanf("%s",sl);

printf("\nEnters2string:");

scanf("%s",s2);

proc(s1,s2,t);

printf("\nTheresultis:%s\n",t);

}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將a、b兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在變量c的千位和十位上,b中的十位數(shù)和個位數(shù)依次放在變量c的個位和百位上。例如,當a=45,b=12,調(diào)用該函數(shù)后c=4251。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

參考答案

1.DD?!窘馕觥棵嫦?qū)ο笤O(shè)計方法與面向過程設(shè)計方法有本質(zhì)的不同,其基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結(jié)構(gòu)化程序設(shè)計的特點。

2.D

3.A解析:本題主要考查運算表達式的運算。3+(int)(x)的結(jié)果是10011010,~3的結(jié)果是11111100,二者邏輯與得10011000。

4.A分塊查找是折半查找和順序查找的一種改進方法,分塊查找要求索引表是有序的,對塊內(nèi)節(jié)點沒有排序要求,因此查找較快,且插入和刪除操作也比較方便。

5.B本題考查scanf函數(shù),輸入格式符%2d%f表示只接收了字符,其中a輸入的值為2位的十進制整數(shù),即87,然后將緊接著的6賦給b,因為b的值為單精度數(shù)在,即6.000000,故選擇B選項。

6.A將結(jié)構(gòu)變量作為形參,通過函數(shù)間形參與實參相結(jié)合的方式將整個結(jié)構(gòu)傳遞給函數(shù),這種傳遞方式是值傳遞。在被調(diào)用函數(shù)中,對結(jié)構(gòu)形參變量值進行的任何修改都不會影啊到調(diào)凋函數(shù)中的結(jié)構(gòu)變量。

7.C難易程度:易

8.C由于后序遍歷的最后一個兒素為E,所以E為根結(jié)點,所以它的前序遍歷的首個元素為E,敞排除A)和D)選項。由于中序遍歷中,元素B在元素根結(jié)點E自:J后面,所以B為二叉樹的右子樹,并且該二叉樹右子樹只有一個兒素,所以前序遍歷的最后一個元素應(yīng)為B,故選項C)為正確選項,即該二叉塒的前序遍歷序列是EACDB。

9.C\n只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇c選鞏。

\n

10.B解析:考查指向字符串的指針變量。在該題中,指針變量p指向的應(yīng)該是該字符串中的首地址,p+3指向的是字符串結(jié)束標志'\\0'的地址,因而*(p+3)的值為0。

11.B

12.A

13.A解析:以下幾種算法的時間復雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。

14.B在第1次外層for循環(huán)中,首先x++得到x=1。進入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當退出內(nèi)層for循環(huán)時,x=3,然后執(zhí)行x++,得到x=4。在進入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進入到內(nèi)層for循環(huán),只有循環(huán)變量j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量X的值自加1兩次,當退出內(nèi)層for循環(huán)時,x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

15.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。

在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。

16.C解析:本題考查的是指向函數(shù)的指針.函數(shù)指針定義的基本格式為:類型標識符(*指針變量名)()?!邦愋蜆俗R符”為函數(shù)返回值的類型。

17.B

18.B變量J只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會被保存到浮點型變量Y中。

19.A

20.B解析:—個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是—個返回整型指針的函數(shù)。

21.n2+1

22.1B

23.1000001010000010解析:運算“&”的規(guī)則是只有當兩個相應(yīng)的二進制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進制數(shù)10000010相與。

24.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲分類的概念。如果沒有特別說明,函數(shù)的存儲范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進來。

25.52

26.調(diào)試調(diào)試

27.8181解析:本題的宏調(diào)用S(i+j)將被替換成表達式4*i+j*i+j+l等于4*6+8*6+8+1=24+48+8+1=81。所以本題輸出81。

28.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個時期共8個階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設(shè)計、詳細設(shè)計、編碼和測試)、軟件維護期(即運行維護階段)。

29.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系表達式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

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

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

32.E-R圖E-R圖解析:E-R圖是設(shè)計概念模型的有力工具。

33.malloc(40)malloc(40)解析:庫函數(shù)malloc()只有一個參數(shù),就是所需分配內(nèi)存的字節(jié)數(shù),然后返回一個void*指針。本題要求分配40個字節(jié),故直接調(diào)用malloc(40)就可以了。

34.66解析:本題變量z的值應(yīng)為最后一次給它賦的值,且最后一次for循環(huán)使prt指向a[2]

35.結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計解析:與結(jié)構(gòu)化需求分析方法相對應(yīng)的是結(jié)構(gòu)化設(shè)計方法。結(jié)構(gòu)化設(shè)計就是采用最佳的可能方法設(shè)計系統(tǒng)的各個組成部分以及各個成分之間的內(nèi)部聯(lián)系的技術(shù)。

36.有窮性有窮性解析:算法的4個基本特性包括:可靠性、確定性、有窮性和擁有足夠的情報,其中,算法的有窮性指的是算法必須在有限的時間內(nèi)完成,即算法必須在執(zhí)行有限個步驟之后終止。

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

38.封裝封裝解析:面向?qū)ο蠹夹g(shù)中包括以下幾個基本概念,即對象、類、方法、消息、繼承和封裝,其中封裝是一種信息隱蔽技術(shù),目的在于將對象的使用者對象的和設(shè)計者分開。

39.實例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應(yīng)類的一個實例。

40.2424解析:本題考查函數(shù)的循環(huán)調(diào)用。p=x*func(x-1),當x=4時,不滿足if語句的條件,p=4*func(3),x=3也不滿足條件,則func(3)=3*func(2),func(2)=2*func(1),x=1滿足條件return(1),則輸出結(jié)果為4*3*2*1-24。

41.D解析:在C語言中聲明為static型的變量,在整個程序運行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲區(qū)中占據(jù)永久性的存儲單元。即使退出函數(shù)后,下次再進入該函數(shù)時,靜態(tài)局部變量仍使用原來的存儲單元。由于并不釋放這些存儲單元,因此這些存儲單元中的值得以保留;因而可以繼續(xù)使用存儲單元中原來的值。本題中函數(shù)f()中定義了一個static型變量i,故每調(diào)用一次函數(shù)f(),i的值加1,返回s的值等于i,在主函數(shù)中用了一個for循環(huán),該循環(huán)執(zhí)行了5次,每次都調(diào)用f()函數(shù),將其返回值累加到變量a中,故最后a的值為1+2+3+4+5=15。

42.C解析:本題考查的重點是拷貝字符串──使用strcpy()函數(shù),該函數(shù)的調(diào)用方式是:strcpy(字符數(shù)組,字符串),其中'字符串'可以是字符串常量,也可以是字符數(shù)組。函數(shù)的功能是:將'字符串'完整地復制到'字符數(shù)組'中,字符數(shù)組中原有的內(nèi)容被覆蓋。

使用該函數(shù)時注意:①字符數(shù)組必須定義得足夠大,以便容納復制過來的字符串。復制時,連同結(jié)束標志\'\\0\'一起復制;②不能用賦值運算符'='將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy()函數(shù)處理。

另外,本題還考查連接字符串的strcat()函數(shù),其調(diào)用方式是:strcat(字符數(shù)組,字符串)。

功能是把'字符串'連接到'字符數(shù)組'中的字符串尾端,并存儲于'字符數(shù)組'中。'字符數(shù)組'中原來的結(jié)束標志,被'字符串'的第一個字符覆蓋,而'字符串'在操作中未被修改。

使用該函數(shù)時注意:①由于沒有邊界檢查,編程者要注意保證'字符數(shù)組'定義得足夠大,以便容納連接后的目標字符串;否則,會因長度不夠而產(chǎn)生問題;②連接前兩個字符串都有結(jié)束標志\'\\0\',連接后'字符數(shù)組'中存儲的字符串的結(jié)束標志\'\\0\'被舍棄,只在目標串的最后保留一個\'\\0\'。

43.B

44.B解析:本題考核的知識點是函數(shù)調(diào)用中值傳遞和地址傳遞。函數(shù)間的參數(shù)的傳遞有兩種情況,第1種情況變量作為形參時的參數(shù)傳遞,變量作為形參時,要求對應(yīng)的實參應(yīng)為變量或表達式,變量作為函數(shù)的參數(shù)其傳遞方式是“值傳遞”,該種情況下,形參被賦值為實參的值,然后實參與形參再無聯(lián)系。也就是說對行參的改變將不再影響實參:第2種情況是地址或數(shù)組名作為形參時的參數(shù)傳遞,該種情況下對形參的改變將對實參產(chǎn)生影響。本題中函數(shù)swap1()是傳遞的地址。所以對該形參c的改變將影響實參,分析可知該函數(shù)的作用,是使數(shù)組c的第一個元素和第二個元素的值互換。主函數(shù)中調(diào)用該函數(shù)將a作為實參傳遞給形參c,故執(zhí)行該函數(shù)后a的第一個元素和第二個元素的值將交換。分別為5和2.函數(shù)swap2()是值傳遞的,所以該函數(shù)執(zhí)行后對數(shù)組b將沒有任何改變,此時該數(shù)組的第一個和第二個元素依然為3和5,因此最后的輸出為5、3,3和5,所以,4個選項中選項B符合題意。

45.B解析:我們嚴格區(qū)分調(diào)試與測試,調(diào)試是已知有錯誤而來找錯誤,是被動的;測試有很多種,比如未發(fā)現(xiàn)錯誤但不能保證程序沒錯而來找BUG,還比如我們運行測試程序是否符合用戶的要求,是主動的。所以答案是選項B。A、C、D都是具體的程序調(diào)試方法,而B是宏觀的程序測試方法。測試有單元測試、集成測試、確認測試、系統(tǒng)測試。比如我們在進行單元測試時,發(fā)現(xiàn)程序有錯誤,我們再可以根據(jù)A、C、D的方法來找錯誤。

46.B解析:本題考查變量的定義方法。如果要一次進行多個變量的定義,則在它們之間要用逗號隔開,因此選項A)和D)錯誤。在選項C)中,變量c是一個浮點型指針,它只能指向一個浮點型數(shù)據(jù),不能指向指針變量b,故選項C)錯誤。

47.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運行中,當局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

48.A解析:在C語言中,雖然字符都是變?yōu)槠鋵?yīng)的ASCII碼值來參與算術(shù)運算的,但字符間的相對位置關(guān)系還是不變的,字符8和字符2的ASCII碼值相差仍是6。

49.C

50.A解析:帶參數(shù)的宏定義命令行形式如下:#define宏名(形參表)替換文本。首先進行M的宏替換,之后再進行N的宏替換,替換后的表達式為(a)*(b)/(c)。

51.A

52.A解析:主函數(shù)中定義了一個整型數(shù)組x,并初始化。接著執(zhí)行了一個二重for循環(huán),在該二重循環(huán)的作用是將數(shù)組的前4個元素按從大到小排序,接著用了一個二重循環(huán)(也是冒泡算法)將數(shù)組的后4個元素按從小到大的順序排序,故最后依次輸出數(shù)組各元素的值為75310246。

53.A解析:在位與運算符&中參加運算的兩位都為1時,其結(jié)果為1,否則結(jié)果為0。所以本題中的4|3:01002|00112=01112=7。位與運算符|中參加運算的兩位只要有一個為1,則結(jié)果為1,只有當相應(yīng)的兩位都為0結(jié)果才為0。所以本題中的4&3=01002&00112=00002=0。最后輸出a和b的值為7和0。故4個選項中選項A符合題意。

54.B解析:本題考查通過scanf函數(shù)輸入數(shù)據(jù)時的格式控制問題。變量j的格式控制為“%2d”,即只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項B)。

55.DD)【解析】數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),常用的存儲結(jié)構(gòu)有順序和鏈式結(jié)構(gòu)。采用不同的存儲結(jié)構(gòu),其處理的效率是不同的。

56.A

57.DD?!窘馕觥寇浖枨蠓治鲋行枰獦?gòu)造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,使用戶明確自己的任務(wù)。因此,需求分析應(yīng)確定用戶對軟件的功能需求和非功能需求。

58.B解析:本題中選項B是錯誤的引用,*(a+i)+j只代表了a[i][j]的地址。

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

60.D解析:本題考查的是文件操作函數(shù).題目中fseek(fp,0L,SEEK_SET)的作用將文件指針定位到文件開始。feof(fp)的作用是判斷文件指針是否已到文件結(jié)尾,因此選項A不對。ftell(fp)的作用是獲取當前文件指針的位置,因此選項B不對。fgetc(fp)的作用是從文件中讀取一個字節(jié),因此選項C不對。rewind(中)的作用是將文件指針重定位到文件開頭,所以應(yīng)該選擇D。

61.C

62.Ac的值為a乘以b的值,為3。所以答案選擇A)。

63.A本愿考查位運算符以及相關(guān)運算,‘為按位或,&為按位與,部么a"b為3,再與c按位與仍然為3,所以答案為A選項。

64.Ax、y為整數(shù),x/y值為l,加上o.9為1.9,賦值給整型2,接受后為1。

65.B本題主要考查結(jié)構(gòu)體和聯(lián)合體所占的存儲空間。

在本題程序中,首先定義了一個聯(lián)合體,聯(lián)合體中具有三個成員,它們的類型分別為長整型、整型和字符型。按照C語言的規(guī)定,這三種類型的變量所占的存儲空間分別為4個字節(jié)、2個字節(jié)和1個字節(jié)。但由于定義的成員都是數(shù)組,長整型數(shù)組的大小為2,那么需要的總空間為8個字節(jié);整型數(shù)組的大小為4,那么需要的總空間為8個字節(jié);字符數(shù)組的大小為8,需要的總空間也為8個字節(jié),因此,可以看出三個成員需要的存儲空間一樣,都為8。根據(jù)聯(lián)合體變量中的所有成員共享存儲空間,聯(lián)合變量的長度等于各成員中最長的長度的特點,我們可知,系統(tǒng)只需為該聯(lián)合體變量準備8個字節(jié)存儲空間即可。

然后,定義了一個結(jié)構(gòu)體,結(jié)構(gòu)體中的成員類型及數(shù)組大小與聯(lián)合體完全一致,即三個成員所需的空間都為8個字節(jié)。但是結(jié)構(gòu)體與聯(lián)合體不一樣的是,結(jié)構(gòu)體不能共享空間,一個結(jié)構(gòu)體變量的總長度是各成員長度之和。因此,該結(jié)構(gòu)體所需的存儲空間為24個字節(jié)。

綜上所述,我們可以知道程序中的聯(lián)合體和結(jié)構(gòu)體所需要的存儲空間分別為8個字節(jié)和24個字節(jié)。因此,用sizeof運算符計算這兩者的存儲空間,輸出的結(jié)果應(yīng)該為union=8,structaa=24,本題正確答案選B。

66.C根據(jù)二叉樹的性質(zhì)及定義,一棵深度為k且有2k-1個結(jié)點的二叉樹為滿二叉樹。滿二叉樹的葉子結(jié)點為最后一層的結(jié)點數(shù),又根據(jù)滿二叉樹的性質(zhì),在滿二叉樹的第i層上至多有2i-1個結(jié)點。因此深度為5的滿二叉樹的葉子結(jié)點數(shù)為25-1=16個。

67.As是一個公用體,d的值分別與ch中的兩個元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此輸出的結(jié)果為21,43。

68.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域?qū)?。在百分?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。

69.A\n兩個實體之間的聯(lián)系實際上是實體集問的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有下面幾種,即一對一的聯(lián)系、一對多(或多對一)的聯(lián)系和多對多的聯(lián)系;概念模型便于向各種模型轉(zhuǎn)換。由于概念模型不依賴于具體的數(shù)據(jù)庫管理系統(tǒng),因此,容易向關(guān)系模型、網(wǎng)狀模型和層次模型等各種模型轉(zhuǎn)換。

\n

70.A選項B是從鍵盤上輸入字符串,選項C是接收字符,選項D不正確。

71.A

72.C

\nb++是先用表達式的值然后自增l,因此表達式值為2,b為3;b-a=3-1=2,因此最后輸出的結(jié)果為2,2,前一個為字符2,后一個為數(shù)字2。

\n

73.B本題考查逗號表達式的用法。C語言中逗號“,”也是一種運算符,稱為逗號運算符,其功能是把兩個表達式連接起來組成一個表達式,稱為逗號表達式。其一般形式為:表達式1,表達式2。其求值過程是分別求兩個表達式的值,并以表達式2的值作為整個逗號表達式的值。逗號表達式的一般形式可以擴展為:表達式1,表達式2,表達式3,…,表達式n。它的值為表達式n的值。

74.B\nstrlen是求字符串的長度,結(jié)果為4,sizeof是求數(shù)組的長度,而數(shù)據(jù)在定義時已給出長度為10。

\n

75.Ab=4不能作為左值,所以本題答案為A)。

76.A

77.C

78.A(C>=2&&C<=6)ll(C!=3)||(C!=5)可以滿足題目條件,所以選擇A)。

79.B\n在第1次外層for循環(huán)中,首先x++得到x=1。進入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當退出內(nèi)層for循環(huán)時,x=3,然后執(zhí)行x++,得到x=4。在進入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進入到內(nèi)層for循環(huán),只有循環(huán)變量J的值為奇數(shù)時,變量X的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量X的值自加l兩次,當退出內(nèi)層for循環(huán)時,x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

\n

80.B

81.\n\t(1)錯誤:while(i>j)

\n正確:while(i<j)

\n(2)錯誤:*str=0;

\n正確:*str=\0;

\n【解析】由函數(shù)proc可知,變量i和j分別存放的是字符串str前面和后面第i個字符的位置,當i<j時,兩個位置的字符交換。因此,“while(i>j)”應(yīng)改為“while(i<j)”;交叉合并完成后,要為新的字符串添加結(jié)束符,因此,“*str=0;”應(yīng)改為“*str=\0;”,\n

82.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/ *c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;}本題主要考核如何取出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用c時要進行指針運算。2021年遼寧省營口市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。

A.多態(tài)性B.繼承C.封裝性D.模塊化

2.廣告系統(tǒng)為了做地理位置定向,將IPV4分割為627672個區(qū)間,并標識了地理位置信息,區(qū)間之間無重疊,用二分查找將IP地址映射到地理位置信息,請問在最壞的情況下,需要查找多少次?()

A.17B.18C.19D.20

3.若x=10010111,則表達式(3+(int)(x))&(~3)的運算結(jié)果是()。

A.10011000B.10001100C.10101000D.10110000

4.查找較快,且插入和刪除操作也比較方便的查找方法是

A.分塊查找B.二分查找C.順序查找D.折半查找

5.設(shè)有定義:“inta;floatb;”,執(zhí)行“scanf("%2d%f",&a,&b);”語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是()。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

6.有以下程序:#include<stdi0.h>#include<string.h>structA{inta;charb[10];doubleC;);voidf(structAt);main(){structAa={"1001,"ZhangDa",l098,0};f(a);printf("%d,%S,%6.1f\n",a.a(chǎn),a.b,a.c);}voidf(structAt){t.a(chǎn)=1002;strcpy(t.b,"ChangRon9");t.c=1202.0;}程序運行后的輸出結(jié)果是()。A.1001,ZhangDa,1098.0

B.1002,ChangRong,1202.0

C.1001,ChangRong,1098.0

D.1002,ZhangDa,1202.0

7.由3個結(jié)點可以構(gòu)造出______種不同形態(tài)的二叉樹。

A.3B.4C.5D.6

8.已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()

A.ABCDEB.ECABDC.EACDBD.CDEAB

9.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

輸出結(jié)果是()。

A.28

B.27

C.42

D.41

10.下面程序段的運行結(jié)果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符′C′的地址D.字符′C′

11.二叉樹的第三層最少有________個結(jié)點。

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

12.若有定義:inta=7;floatx=2.5,y=4.7;則表達式x+a%3*(int)(x+y)%2/4的值是()。

A.2.500000B.2.7500OOC.3.500000D.0.000000

13.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序

14.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

15.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

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

B.36

C.編譯出錯

D.00

16.語句int(*ptr)()的含義是()。

A.ptr是一個返回值是int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向血型數(shù)據(jù)的指針

17.每次從無序表中挑選出一個最小或最大元素,把它交換到有序表的一端,此種排序方法叫做()排序。

A.插入B.堆C.快速D.歸并排序

18.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

19.

20.定義int*swap()指的是______。

A.—個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

二、2.填空題(20題)21.在一棵二叉樹中,度為0的結(jié)點的個數(shù)為n0,度為2的結(jié)點的個數(shù)為n2,則有n0=【】。

22.已知字符A的ASCⅡ代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>.則輸出結(jié)果是()。

#include

main()

{chara,b;

a=getchar();scanf("%d",&B);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,B);

}

23.設(shè)有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

24.設(shè)有以下程序,為使之正確運行,請在橫線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

25.設(shè)有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。

struct{intday;Charmonth;intyear;}a,*b;

b=&a;

26.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

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

#defineS(x)4*x*x+1

mah()

{inti=6,j=8;

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

}

28.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細設(shè)計屬于______中的一個階段。

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

30.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?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);}

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

32.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計中,常用的描述工具是【】。

33.用下面語句調(diào)用庫函數(shù)malloc,使單精度型指針p指向具有40個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡?/p>

p=(float*)【】;

34.下面程序的輸出是【】。

main()

{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

35.與結(jié)構(gòu)化需求分析方法相對應(yīng)的是【】方法。

36.在算法的4個特性中,算法必須能在執(zhí)行有限個步驟之后終止指的是算法的______特性。

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

intmystrlen(char*str)

{inti;

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

return(i);}

38.【】是一種信息隱蔽技術(shù),目的在于將對象的使用者和對象的設(shè)計者分開。

39.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。

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

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

三、1.選擇題(20題)41.以下程序的輸出結(jié)果是intf(){stadcinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf(“%d\n”,A);}

A.20B.24C.25D.15

42.下面程序的輸出結(jié)果是

#include<stdio.h>

#include<string.h>

main()

{char*p1="abc",*p2="ABC",str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

43.下列二維數(shù)組初始化語句中,正確且與語句inta[][3]={1,2,3,4,5}等價的是()。

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

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

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

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

44.有以下程序:voidswapl(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2{intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(A);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其輸出結(jié)果是

A.5353B.5335C.3535D.3553

45.下列不屬于軟件調(diào)試技術(shù)的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法

46.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b=′b′;

C.floata=1,*b=&a,*c=&b;

D.doublea=00;b=1.1;

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

48.表達式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達式不合法D.字符8

49.在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。

A.inti=100;for(;;){i=i%10+1;if(i>10)break;}

B.while(1);

C.intk=0;do{++k;}while(k<=10);

D.ints=12;while(s);--s;

50.閱讀下列程序段,則程序的輸出結(jié)果為

#include"stdio.h"

#defineM(X,Y)(X)*(Y)

#defineN(X,Y)(X)/(Y)

main()

{inta=5,b=6,c=8,k;

k=N(M(a,b),c);

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

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

51.若有以下定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;則值為3的表達式是()

A.p+=2,*(pd++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p

52.有以下程序main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j];x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}程序運行后的輸出結(jié)果是

A.75310246B.1234567C.76310462D.13570246

53.有以下程序:main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后輸出結(jié)果是()。

A.70B.07C.11D.430

54.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為

A.55566.0B.566.0C.7777.0D.566777.0

55.下列敘述中正確的是()。A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率

56.以下程序的輸出結(jié)果是()main(){inta[3][3]={1,2},{3,4,},{5,6,},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<i;j++)s+=a[i][j];printf("%d\n",s);}

A.18B.19C.20D.21

57.軟件需求分析一般應(yīng)確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

58.若有定義:inta[4][10];,則以下選項中對數(shù)組元素a[i][i]引用錯誤的是______。(0<=i<4,0=i<10)

A.*(&a[0][0]十10*i+j)B.*(a+i)+jC.*(a+i)+j)D.*(a[i]+j)

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

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

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

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

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

60.以下與函數(shù)fseek(fp,0L,SEEK_SET)有相同作用的是

A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

四、選擇題(20題)61.

62.有以下程序執(zhí)行后的輸出結(jié)果是()。

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

63.有以下程序:

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

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

64.若有定義語句:A.1B.1.9C.2D.2.4

65.有如下程序段

#include"stdio.h"

typedefunion

{longx[2];

inty[4];

charz[8];

}atx;

typedefstructaa

{longx[2];

inty[4];

charz[8];

}stx;

main()

{printf("union=%d,structaa=%d\n",sizeof(atx),sizeof(stx));}

則程序執(zhí)行后輸出的結(jié)果是

A.union=8,structaa=8

B.union=8,structaa=24

C.union=24,structaa=8

D.union=24,structaa=24

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

A.32B.31C.16D.15

67.有以下程序:main{union{charch[2];intd;}s;d=0x4321;printf("%x,%x\n",S.ch[0],S.ch[l]);}在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是()A.21,43B.43,21C.43,00D.21,00

68.有以下程序段當執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

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

A.用E—R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系

B.用E—R圖只能表示實體集之間一對一的聯(lián)系

C.用E—R圖只能表示實體集之間一對多的聯(lián)系

D.用E—R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

70.設(shè)有定義:“char*c;”,以下選項中能夠使字符型指針c正確指向一個字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

71.

72.

數(shù)字字符0的ASCII值為48,運行以下程序的輸出結(jié)果是()。

main

(chara=1,b=2;

printf("%C,",b++);printf("%d\n",b—a);}

A.3,2B.50,2C.2,2D.2,50

73.設(shè)以下變量均為int類型,表達式的值不為7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

74.有以下程序

#include<stdio.h>

#include<string.h>

main()

{chara[10]=”abcd”;

printf("%d,%d\n",strlen(a),sizeof(a));

}

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

A.7,4

B.4,10

C.8

溫馨提示

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

評論

0/150

提交評論