2021年陜西省咸陽市全國計算機等級考試C語言程序設計_第1頁
2021年陜西省咸陽市全國計算機等級考試C語言程序設計_第2頁
2021年陜西省咸陽市全國計算機等級考試C語言程序設計_第3頁
2021年陜西省咸陽市全國計算機等級考試C語言程序設計_第4頁
2021年陜西省咸陽市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021年陜西省咸陽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下能夠正確描述“k是大于0的偶數”的表達式是()。

A.(k>0)&&(k%2!=1)

B.(k>0)&&(k%2=0)

C.(k>0)||!(k%2)

D.(k>0)||(k%2==0)

2.靜態(tài)鏈表中指針表示的是()。

A.內存地址B.數組下標C.下一元素地址D.左、右孩子地址

3.設有表示學生選課的三張表,學生s(學號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學號,課號,成績),則表sc的關鍵字(鍵或碼)為()。

A.課號,成績B.學號,成績C.學號,課號D.學號,姓名,成績

4.允許對隊列進行的操作有()。

A.對隊列中的元素排序B.取出最近進隊的元素C.在隊頭元素之前插入元素D.刪除隊頭元素

5.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數

B.ptr是指向int型數據的指針變量

C.ptr是指向函數的指針,該函數返回一個int型數據

D.ptr是一個函數名,該函數的返回值是指向int型數據的指針

6.以下程序輸出正確的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}

A.56B.25C.34D.程序錯誤

7.下面不屬于需求分析階段任務的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審

8.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

9.在“文件包含,預處理語句的使用形式中,當#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是()。

A.直接按系統(tǒng)設定的標準方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設定的標準方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當前目錄

10.若用一個大小為6的數值來實現循環(huán)隊列,且當前rear和front的值分別為0和3,當從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。

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

11.有以下程序:#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序的運行結果是()。

A.acc,bbxxyy

B.accbbxxyy,bbxxyy

C.accxxyy,bbxxyy

D.accxyy,bbxxyy

12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

13.表達式a*(-b+c)的逆波蘭式是()

A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*

14.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序執(zhí)行后輸出結果是()。A.n=5B.n=2C.n=3D.n=4

15.用樹形結構表示實體之間聯系的模型的是

A.關系模型B.網狀模型C.層次模型D.以上三個都是

16.采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。

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

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

B.一個C語言程序只能實現一種算法.

C.程序可以由一個或多個函數組成

D.一個C函數可以單獨作為一個C程序文件存在

18.

19.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}執(zhí)行時輸入6并按<Enter>鍵,則輸出結果是()。A.6B.8C.7D.5

20.針對簡單程序設計,以下敘述的實施步驟順序正確的是()。

A.確定算法和數據結構、編碼、調試、整理文檔

B.編碼、確定算法和數據結構、調試、整理文檔

C.整理文檔、確定算法和數據結構、編碼、調試

D.確定算法和數據結構、調試、編碼、整理文檔

二、2.填空題(20題)21.用以下語句調用庫函數malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。

st=(char*)【】;

22.執(zhí)行以下程序后sum的值是【】。

main()

{

inti,sum;

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

sum+=i;

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

}

23.若有以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是______。

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

24.需求分析的最終結果是產生【】。

25.在進行軟件結構設計時,應遵循的最主要原理是【】。

26.以下程序的輸出結果是【】。

#include<stdio.h>

main()

{ints[]={1,2,3,4},i;

intx=0;

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

{x=sb(s,x);

printf("%d",x);}

printf("\n");}

sb(s1,y)

int*s1,y;

{staticinti1=3;

y=s1[i1];

i1--;

return(y);}

27.數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、______和處理過程。

28.目前實際存在和使用的廣域網基本上都是采用______拓撲結構類型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

程序運行后的輸出結果是【】。

29.在樹形結構中,樹根結點沒有______。

30.下面程序的輸出結果是【】。

#include<stdio.h>

main()

{char*p={"BOOL""OPK","H","SP"};

inti;

for(i=3,i>=0;i--,i--)printf("%",*p[i]);

printf("\n");

}

31.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

32.下列程序段的輸出結果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

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

}

33.以下程序運行后的輸出結果是______。

main()

{

inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{

case0:m++;n++;break;

case10:n++;;break;

default:k++;n++;

}

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

}

34.下列程序執(zhí)行后輸出的結果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

35.結構化程序設計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

36.當輸入的數據為2、5時,則下列程序的運行結果為【】。

#include<stdio.h>

#definemax100

main()

{

intf[max],i,j,k,m;

scanf("%d%d",&k,&m);

for(i=0;i<=m;i++)f[i]=0;

f[k-1]=1;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++)f[i]+=f[i];

printf("%d%10d%10d\n",k,m,f[m]);

getch();

}

37.已知字符'A'的ASCII碼為65,以下程序運行后的輸出結果是【】。

#include<stdio.h>

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

38.下列程序的運行結果為【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

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

}

39.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

三、1.選擇題(20題)41.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數據,正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

42.已有定義int(*q)(),指針q可以()。

A.指向函數的入口地址B.代表函數的返回值C.表示函數的類型D.表示函數返回值的類型

43.下列程序的運行結果是()。#include<stdio.h>#include<string.h>main(){char*s1="ahDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}

A.正數B.負數C.零D.不確定的值

44.若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\h",i);其輸出結果是()。

A.0,0B.0,1C.1,1D.程序進入無限循環(huán)

45.結構化程序設計主要強調的是

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

46.設有下列二叉樹:

對此二叉樹中序遍歷的結果為______。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

47.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序運行后的輸出結果是()。

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

48.以下有關宏替換的敘述不正確的是()。

A.雙引號中出現的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示

49.若下列各選項中所有變量已正確定義,函數fun通過return語句返回一個函數值,以下選項中錯誤的程序是()。

A.main(){...x=fun(2,10);...}floatfun(inta,intb){...}

B.floatfun(inta,intb){...}main(){...x=fun(i,j);...}

C.floatfun(int,int);main(){...x=fun(2,10);...}floatfun(ihta,intb){...}

D.main(){floatfun(inti,intj);...x=fun(i,j);...}floatfun(inta,intb){...}

50.不是面向對象程序設計的可維護性的優(yōu)點的是()

A.用面向對象的方法開發(fā)的軟件穩(wěn)定性比較好B.易于移植C.易于和調試D.用面向對象的方法開發(fā)的軟件比較容易理解

51.下列程序的運行結果為

#include<stdio.h>

voidabc(char*str)

{inta,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

voidmain()

{charstr[]="abcdef";

abc(str);

printf("str[]=%s",str);}

A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

52.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦于19.0,b賦予22.0,c賦予33.0,不正確的輸入形式是______。

A.10<回車>22<回車>33<回車>

B.19.0,22.0,33.0<回車>

C.19.0<回車>22.033.0<同車>

D.1022<回車>33<回車>

53.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結果是()。

A.7B.6C.8D.無確定值

54.若有下列定義,則對a數組元素地址的正確引用是()。

inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

55.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結果是______。

A.2B.4C.6D.8

56.不能把字符串"Hello!"賦給數組b的語句是______。

A.charb[10]={'H','e','l','l','o','!'};

B.charb[10]={'h','e','l','l','o','!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

57.以下各選項均為說明一種新的類型名,其中正確的是()。

A.typedefv1int;

B.typedefv1=int;

C.typedefintv1;

D.typedefv1=int;

58.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結果是______。

A.64,28B.4,4C.4,3D.64,64

59.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達式是():

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

60.在下列關于二叉樹的敘述中,正確的一項是

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

B.二叉樹的度為2

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

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

四、選擇題(20題)61.

62.有如下程序

voidf(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

printf("%d,",a[i]);

}

該程序的輸出結果是

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

63.

64.(46)面向對象的設計方法與傳統(tǒng)的的面向過程的方法有本質不同,它的基本原理是()

A.模擬現實世界中不同事物之間的聯系

B.強調模擬現實世界中的算法而不強調概念

C.使用現實世界的概念抽象地思考問題從而自然地解決問題

D.鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領域的概念去思考

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

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

66.下列程序的輸出結果是

intb=2;

intfunc(int*a)

{b+=*a;return(b);}

main()

{inta=2,res=2;

res+=func(&a);

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

}

A.2

B.4C.6

D.8

67.在單鏈表中,增加頭結點的目的是()。

A.方便運算的實現B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性的鏈式存儲實現

68.

69.下列關于指針變量賦空值的說法錯誤的是

A.當賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達為變量名=’\0’;

C.賦值語句可以表達為變量名=0;D.一個指針變量可以被賦空值

70.以下選項中,能用作數據常量的是______。A.o115B.0118C.1.5e1.5D.115L

71.有以下程序

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

A.6B.9C.11D.7

72.有以下程序:

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

A.20B.25C.45D.36

73.(2)以下數據結構中不屬于線性數據結構的是()

A.隊列

B.線性表

C.二叉樹

D.棧

74.(15)在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()

A.概要設計

B.詳細設計

C.可行性分析

D.需求分析

75.

76.有以下程序

#include<stdio.h>

main()

{

intnum=0;

while(num<=2)

{

num++;

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

}

}

上面程序的輸出結果是

77.有以下程序:

若運行時輸入:246<;回車>;,則輸出結果為()。

A.204B.200C.240D.246

78.有以下程序:

voidmain()

{

inty=10;

while(y>>1){printf("y=%d\n",y);}

}

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

A.y=0

B.y=-1

C.y=1

D.while構成無限循環(huán)

79.程序中已構成如下圖所示的不帶頭結點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表結點,指針變量s總是作為指針指向鏈表的第一個結點。

若有以下程序段:

該程序段實現的功能是()。

A.刪除尾結點B.尾結點成為首結點C.刪除首結點D.首結點成為尾結點

80.

五、程序改錯題(1題)81.已知一個數列從0項開始的前3項為0,0,1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數proc的功能是:計算并輸出該數列前n項的和sum。n的值通過形參傳人。例如,當n=20時,程序的輸出結果應為42762.000000。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動maiil函數,不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doubleproc(intn){doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;//****found****for(k=4;k<n;k++)}{s=s0+s1+s2;sum+=S:s0=s1;s1=s2;//****found****s2=s;returnsum;}voidmain{intn;system("CLS");printf("InputN=");scanf("%d",&nJ;printf("%f\n",proc(n));}

六、程序設計題(1題)82.下列程序定義了MM的二維數組,并在主函數中自動賦值。請編寫函數proc(inta[][M]),該函數的功能是:使數組左下半三角元素中的值全部置成0。例如,a數組中的值為:

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

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

試題程序:

參考答案

1.A判斷k大于0的表達式為“k>0”,判斷k是偶數的表達式為“k%2==0”或“k%2!=1”。兩個表達式必須都成立才能確定k是大于0的偶數,則對應的表達式為“(k>0)&&(k%2==0)”或“(k>0)&&(k%2!=1)”。故本題答案為A選項。

2.C

3.C學號是學生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關鍵字就應該是與前兩個表能夠直接聯系且能唯一定義的學號和課號,所以選擇C項。

4.D

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

6.A解析:本題main函數中定義了指針p和二維數組a,通過函數amovep將數組的值存入指針p所指向的存儲單元中,a的各元素分別為:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通過mailoc()函數給指針分配內存空間,free()函數用于釋放指針變量所用內存空間。在主函數中通過amovep(p,a,3)調用函數amovep,使得實參p與形參p,實參數組a與形參中指向數組的指針變量共用同一存儲空間。最后輸出p[2],p[5]為56。

7.C【答案】:C

【知識點】:需求分析階段的任務

【解析】:需求分析階段的任務是深入描述軟件的功能和性能,確定軟件設計的約束和軟件同其他系統(tǒng)元素的接口細節(jié),定義軟件的其他有效性需求,借助于當前系統(tǒng)的邏輯模型導出目標系統(tǒng)邏輯模型,解決目標系統(tǒng)“做什么”的問題??煞譃樾枨筇岢觥⑿枨竺枋黾靶枨笤u審三個階段。從此可以看出需求分析的任務不包括制定軟件集成測試計劃,故選C。

8.A解析:對線性表進行二分法檢索,要求線性表是按順序方式存儲的,并按關鍵碼值的大小排好序,而不是按關鍵碼的檢索頻率排序。

9.B#include”文件名”,預處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標準目錄搜索。

10.B

11.B在函數fun中,前一個while循環(huán)的作用是,如果形參指針t所指內容不為0,則讓t增1,直到它指向0;后一個while循環(huán)的作用是,將s所指內容賦給t所指地址,然后兩者同時增1,直到賦給t的內容為0。由此可見,函數fun的作用就是將形參s所指字符串連接到形參t所指字符串末尾,相當于庫函數strcat。主函數中使用fun將數組aa中的字符串連接到數組ss中原有字符串之后,所以執(zhí)行完后,ss中的字符串為“accbbxxyy”。程序最后輸出的結果是accbbxxyy,bbxxyy。故本題答案為B選項。

12.A本題考查指針,pl=&k表示P指向k的地址,則*p=k,依次類推,在對指針進行賦值時沒有錯誤。a=/*p+m賦值,在c語言中"/*"表示的注釋,所以答案選擇A。

13.D

14.Dcontinue語句的作用是結束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。

15.C解析:在數據庫系統(tǒng)中,由于采用的數據模型不同,相應的數據庫管理系統(tǒng)(DBMS)也不同。目前常用的數據模型有三種:層次模型、網狀模型和關系模型。在層次模型中,實體之間的聯系是用樹結構來表示的,其中實體集(記錄型)是樹中的結點,而樹中各結點之間的連線表示它們之間的關系。因此,本題的正確答案是C。

16.A

17.B在一個C語言程序中可以進行多種算法的實現,對算法的個數沒有規(guī)定,所以B)錯誤。

18.C

19.C后綴自增運算“t++”表示先運算,再自加。語句“if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”,t--);”中t的初值為6,則“t++<6”,條件為假,t自增至7,執(zhí)行“printf(“%d\\n”,t--);”,此時t=7,輸出t值為7,之后進行自減操作t=6。因此輸出的結果為7。故本題答案為C選項。

20.A\nC語言中程序中的步驟實現為:先確定程序中的算法和數據結構,然后進行程序的編碼,再進行對程序的調試,最后進行文檔的整理和記錄。使用這種步驟可以方便程序的編寫以及在完成后提高代碼的重用性。

\n

21.malloc(11)或malloc(sizeof(char*)11)malloc(11)或malloc(sizeof(char*)11)解析:該題主要考查malloc函數的使用。一個字符在內存中占一個字節(jié),因此malloc的參數為11。也可按指向字符指針的大小來分配。

22.1515解析:程序的功能是求1、2、3、4、5的和即15。

23.*(p+5)或p[5]*(p+5)或p[5]

24.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。

25.模塊獨立原理模塊獨立原理

26.43214321解析:靜態(tài)存儲類的局部變量其生存期為整個程序的運行期間,作用域卻只是定義它的函數或局部范圍。注意:局部變量和全局變量的作用域。

27.數據存儲數據存儲

28.2004170320041703解析:由于參數傳遞只是將實參的值復制到形參中,形參與實參擁有各自的存儲空間,因此形參的改變并不影響實參,所以并不改變s的情況。

29.前件前件

30.SO

31.1919解析:根據二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。

32.HelloHello解析:字符串中,數值0或符號'/0'表示字符串的結束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結束標志。因此,只輸出前五個字符,即Hello。

33.132132解析:本題考核的知識點是for循環(huán)與switch語句的綜合運用。主函數中用了一個for循環(huán),for循環(huán)里嵌套了一個switch語句,for循環(huán)了三次,當i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然后遇到breake語句,退出switch語句;當i=10,i/10=1,執(zhí)行switch語句中default分支,使k和n的值各加1,變?yōu)?和1,退出switch語句:當i=11時,i/10=1,執(zhí)行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環(huán)結束。故該空格處應該填132。

34.1212解析:本題的第—個for循環(huán)用于紿數組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結果為12。

35.模塊化模塊化

36.255

37.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式輸出\'C\'的ASCII碼為67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式輸出為\'G\'。

38.7467

39.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數,從輸出結果來看,s保存的是最終結果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內容”應是t*10。

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

41.B解析:scanf()函數要求將輸入的數據存入變量所在的地址。選項A不是C語言中的輸入語句,故選項A不正確;選項C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數要求將輸入的數據存入變量所在的地址,故選項C不正確;選項D不是C語言中的輸入語句,故選項D不正確:所以,4個選項中選項B符合題意。

42.A解析:本題考查的是指向函數的指針。函數指針的定義方式是:類型標識符(*指針變量名)()。其中,“類型標識符”為函數返回值的類型;“指針”指向函數的入口地址。

43.A解析:本題考查字符串比較函數和兩個字符串比較的原則兩個知識點:①原則是依次比較兩個字符串同—位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同.則ASCII碼值較大的字符所在的串符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當str1<str2時,返回值<0;當str1=str2時,返回值為0;當str1>str2,返回值>0。

44.B解析:do…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計算while后一對圓括號中表達式的值。當值為非0時,轉去執(zhí)行步驟①;當值為0時,執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達式i++的值,其值為0,所以循環(huán)結束。此時變量i的值經過自加已經變?yōu)?,所以再次輸出i的值“1”。

45.B

46.B解析:所謂中序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。

47.B解析:本題的考點是關于C語言的整數運算和邏輯運算。由于d初值為25,“a=d/10%9中d/10”整除結果是2,再用9求余結果仍是2,因此a的值為2。而對于“b=a&&(-1)”,由于a值為2不為0,-1也不為0,因此“a&&(-1)”結果為真,b值是1。輸出結果應該是2、1。正確選項是B。

48.D解析:本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數的宏替換兩類。使用宏時應注意以下幾點:①定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標識符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

49.A解析:C語言程序從main函數開始執(zhí)行,當程序中定義了多個函數時,通常情況下是先定義后調用。若被調用函數定義在主調函數之后,則必須先聲明后調用。在選項A)中,先執(zhí)行main函數,并調用了fun函數,而fun函數在此調用之前無定義也無聲明,故無法正常識別調用,所以錯誤。

50.B

51.A解析:本題考查了用字符指針引用字符數組中的字符及對字符的操作。函數abc()的for語句執(zhí)行過程是:從字符指針str所指向的字符數組的第一個元素開始,逐一判斷字符是否為'c',若不是就執(zhí)行一次數組元素的賦值過程,若字符為'c'就不執(zhí)行。

52.B解析:用scanf函數輸入多個數據時,數據間的分隔符可以是空格、回車符或制表符,本題中選項A、C和D的輸入方法都是正確的。因scanf函數中的控制字符中沒有非格式字符“,”,因此選項B中以“,”作為分隔符是錯誤的。

53.A解析:本題定義了一個指向由3個元素組成的一維數組的指針變量pa,通過賦值讓它指向具有2行3列的數組a,此時用指針變量pa,表示數組元素a[i][j]的形式是pa[im][j])。for循環(huán)執(zhí)行了3次;第一次i值為0,執(zhí)行pa[1][0]=pa[1][0]-1,執(zhí)行后a[1][0]的值變?yōu)?;第二次i值為1,執(zhí)行pa=[1][1]=pa[1][1]-1,執(zhí)行后a[1][1]的值為4;第三次i值為2,執(zhí)行pa[1][2]=1,執(zhí)行后a[1][2]的值變?yōu)?。故prinff語句輸入的值為2+4+1=7。所以,A選項為所選。

54.D解析:本題考查如何引用數組元素的地址。

選項A)中,p+5引用的是a[5]的地址,而數組a只有5個元素,即a[0]、a[1]、a[2];a[3]、a[4],所以引用錯誤;選項B)中,*a+1指的是將數組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數組的首地址。

55.B解析:函數fib內部有兩個遞歸調用,當n=3時,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值為4。

56.B解析:在C語言中,大寫字母和小寫字母被認為是兩個不同的字符,因此,“hello!”和“Hello!”是兩個不同的字符串。

57.C解析:使用typedef定義新類型名的一般格式是:typedef<舊類型名><新類型名>。選項A,int是C語言中已經有的類型名,不能再被定義成其他類型名,故不正確:選項B的格式不正確;選項C是將v1定義成int型,正確;選項D格式不正確。所以,應該選擇C。

58.C解析:根據題意,il=f(8)/f(4)進行宏替換后.i1=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以輸出結果為4、3。

59.A解析:“%”是求余運算符或模運算符,“%”兩側均應為整型數據,選項A)中的x是double型數據。

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

61.D\r\n

62.C題目中給出的程序分為兩個部分:主函數main和函數f。在主函數中初始化定義了一個整型數組a,大小為6,并定義了兩個數組指針p,q。指針p指向數組第一個元素的地址,指針q指向數組最后一個元素的地址。主函數包含一個while語句,循環(huán)條件為p<q,while語句內部先調用了f函數,p、q指針為該函數的實參,隨后進行了p++操作和q--,即使p指針指向下一個元素的地址,q指針指向前一個元素的地址。由于是數組存儲,必然存在初始時,有p<q,當p>=q時,while語句結束。while語句后面是for語句,該語句的作用是輸出數組a[]中所有的數據。

f函數的形參為整型指針,函數的功能是使得輸入的指針變量所指向的數據進行交換,由于使用的是指針變量,故在f函數中對指針的操作結果會影響調用函數中(main)實參所指數據的改變,題目中f函數的調用實質是將main函數中的p、q指針所指的數據進行交換,也將導致數組a中相應的數據進行交換。結合while語句,也就是將數組a中的第1個數據與第6個數據進行交換,第2個數據與第5個數據進行交換,以此類推,得到結果10,8,6,4,2,1。

63.D

64.C

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

66.C在本題程序中,首先定義了一個全局整型變量b,并給其賦初值為2,然后定義一個函數func,該函數帶有一個指針類型的形參,在函數體中,通過形參的值來改變全局變量b的值,b+=*a等價于b=b+(*a),然后通過return語句返回計算后的變量b的結果。

在主函數中,定義兩個整型變量a和res,并都賦初值為2,然后調用func函數,傳遞的形參是變量a的地址,即使形參指針變量a指向實參變量a的值,通過b+=*a計算,可以得到b=2+2=4。由于變量b是一個全局變量,作用域是整個程序,而非函數func,因此,在主函數中變量res的最后結果為2+4=6,程序最后的輸出結果為6。

67.A根據單位鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點的目的是為了便于運算的實現。

68.A

69.A本題考查的是對指針變量賦空值。在C語言中用NULL給指針賦空值,如p=NULL。當指針值為NULL時,指針不指向任何有效數據。由于NULL與整數0相對應,所以有下面三條語句等價:

p=NULL;p=0;p=’\\0’。

70.D在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。整型常量和實型常量又稱數值型常量?;菊统A恐荒苡脭底直硎荆粠迭c,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—個字母l(L的小寫)或L;實型常量必須用帶小數點的數表示,例如3.14159、-2.71828、0.0等;選項A中字母o不符合要求,選頂B中超出八進制的范圍,選項C中e后面的不為整數,因此選頂D是正確的。

71.A本題首先定義了3個字符數flip、q、r,并分別被初始化。數組p;}i旨定的大小為20,初始化列表為la,b,c,d},即只指定了前4個元素的內容,根據c語言的規(guī)定,初始化列表不足時,其余元素均自動初始化為0。然后通過streat()函數,將字符串r連接到字符串p之后,即執(zhí)行后p中的內容為“123d123de”。因為“strlen(q)”表示求字符串q的長度,很明顯為3,所以語句“strcpy(p+strlen(q),q);”的作用就是:將字符串q復制到數9lp的第4個元素位置處。

72.B統(tǒng)計1~9九個數中的奇數和,此題考察指向數組的指針。C語言規(guī)定數組名代表數組的首地址,也就是第一個元素的地址。因此·(t+i)代表數組的第i+1個元素。程序運行的結果是l+3+5+7+9=25。

73.C所謂的線性結構是指:如果一個非空的數據結構滿足下列兩個條件,即1)有且只有一個根結點;2)每一個結點最多有一個前驅,也最多有一個后繼。同時滿足兩個條件的有隊列、線性表和棧,而二叉樹的結點可能存在兩個后繼,所以不是線性結構。

74.D注:即第一個階段

75.B

76.C本題考查while()語句。程序中使用的是while循環(huán),為“當型”循環(huán)結構,即當條件為真時循環(huán),將值代入循環(huán),當num為3時,循環(huán)的條件已經為假,將不再循環(huán)。故本題答案為C。

77.A本題中輸入的3個數據2,4,6分別賦值給了x[0[0],x[1][0],x[2][0]。x[o][1]仍為初始時的0,所以打印輸出時的結果為A選項。

78.D位運算;條件判斷y>>1對循環(huán)沒有任何影響,始終為真,所以循環(huán)是一個無限循環(huán)。

79.D本題考查鏈表的操作,本題中首先是s指向了它的下個結點,題目中說明了s總是指向鏈表的第一個結點,然后while循環(huán)找到鏈表的最后一個元素,然后最后一個元素指向了之前鏈表的頭結點,之前頭結點指向了空結點,所以本題實現的功能是使首結點成為尾結點。選項D正確。

80.B

81.(1)錯誤:for(k=4;k<n;k++)正確:for(k=4;k<=11;k++)(2)錯誤:s2=S;正確:s2=s;)【解析】題目中要求計算數列前n項的和,包括第n項,因此“for(k=4;k<n;k++)”中的“k<n”應改為“k<=n”;根據C語言的語法規(guī)則,for循環(huán)體中的多條語句必須在大括號“{”和“}”之間,因此,要在語句s2=s;后加上)。

82.

【解析】要使數組左下半三角元素中的值全部置成0,先要找出數組的下半三角元素,再將其值全部賦值為0。二維數組中下半三角元素的特點為,其列下標小于其行下標。根據這個特點,將二維數組的下半三角元素都賦值為0。

2021年陜西省咸陽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下能夠正確描述“k是大于0的偶數”的表達式是()。

A.(k>0)&&(k%2!=1)

B.(k>0)&&(k%2=0)

C.(k>0)||!(k%2)

D.(k>0)||(k%2==0)

2.靜態(tài)鏈表中指針表示的是()。

A.內存地址B.數組下標C.下一元素地址D.左、右孩子地址

3.設有表示學生選課的三張表,學生s(學號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學號,課號,成績),則表sc的關鍵字(鍵或碼)為()。

A.課號,成績B.學號,成績C.學號,課號D.學號,姓名,成績

4.允許對隊列進行的操作有()。

A.對隊列中的元素排序B.取出最近進隊的元素C.在隊頭元素之前插入元素D.刪除隊頭元素

5.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數

B.ptr是指向int型數據的指針變量

C.ptr是指向函數的指針,該函數返回一個int型數據

D.ptr是一個函數名,該函數的返回值是指向int型數據的指針

6.以下程序輸出正確的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}

A.56B.25C.34D.程序錯誤

7.下面不屬于需求分析階段任務的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審

8.對線性表進行二分法檢索,其前提條件是()。

A.線性表以順序方式存儲,并按關鍵碼值排好序

B.線性表以順序方式存儲,并按關鍵碼的檢索頻率排好序

C.線性表以鏈式方式存儲,并按關鍵碼值排好序

D.線性表以鏈式方式存儲,并按關鍵碼的檢索頻率排好序

9.在“文件包含,預處理語句的使用形式中,當#include后面的文件名用(雙引號)括時,尋找被包含文件的方式是()。

A.直接按系統(tǒng)設定的標準方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設定的標準方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當前目錄

10.若用一個大小為6的數值來實現循環(huán)隊列,且當前rear和front的值分別為0和3,當從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。

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

11.有以下程序:#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序的運行結果是()。

A.acc,bbxxyy

B.accbbxxyy,bbxxyy

C.accxxyy,bbxxyy

D.accxyy,bbxxyy

12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}編譯時編譯器提示錯誤信息,你認為出錯的語句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

13.表達式a*(-b+c)的逆波蘭式是()

A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*

14.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序執(zhí)行后輸出結果是()。A.n=5B.n=2C.n=3D.n=4

15.用樹形結構表示實體之間聯系的模型的是

A.關系模型B.網狀模型C.層次模型D.以上三個都是

16.采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。

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

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

B.一個C語言程序只能實現一種算法.

C.程序可以由一個或多個函數組成

D.一個C函數可以單獨作為一個C程序文件存在

18.

19.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}執(zhí)行時輸入6并按<Enter>鍵,則輸出結果是()。A.6B.8C.7D.5

20.針對簡單程序設計,以下敘述的實施步驟順序正確的是()。

A.確定算法和數據結構、編碼、調試、整理文檔

B.編碼、確定算法和數據結構、調試、整理文檔

C.整理文檔、確定算法和數據結構、編碼、調試

D.確定算法和數據結構、調試、編碼、整理文檔

二、2.填空題(20題)21.用以下語句調用庫函數malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。

st=(char*)【】;

22.執(zhí)行以下程序后sum的值是【】。

main()

{

inti,sum;

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

sum+=i;

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

}

23.若有以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是______。

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

24.需求分析的最終結果是產生【】。

25.在進行軟件結構設計時,應遵循的最主要原理是【】。

26.以下程序的輸出結果是【】。

#include<stdio.h>

main()

{ints[]={1,2,3,4},i;

intx=0;

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

{x=sb(s,x);

printf("%d",x);}

printf("\n");}

sb(s1,y)

int*s1,y;

{staticinti1=3;

y=s1[i1];

i1--;

return(y);}

27.數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、______和處理過程。

28.目前實際存在和使用的廣域網基本上都是采用______拓撲結構類型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

程序運行后的輸出結果是【】。

29.在樹形結構中,樹根結點沒有______。

30.下面程序的輸出結果是【】。

#include<stdio.h>

main()

{char*p={"BOOL""OPK","H","SP"};

inti;

for(i=3,i>=0;i--,i--)printf("%",*p[i]);

printf("\n");

}

31.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

32.下列程序段的輸出結果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

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

}

33.以下程序運行后的輸出結果是______。

main()

{

inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{

case0:m++;n++;break;

case10:n++;;break;

default:k++;n++;

}

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

}

34.下列程序執(zhí)行后輸出的結果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

35.結構化程序設計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

36.當輸入的數據為2、5時,則下列程序的運行結果為【】。

#include<stdio.h>

#definemax100

main()

{

intf[max],i,j,k,m;

scanf("%d%d",&k,&m);

for(i=0;i<=m;i++)f[i]=0;

f[k-1]=1;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++)f[i]+=f[i];

printf("%d%10d%10d\n",k,m,f[m]);

getch();

}

37.已知字符'A'的ASCII碼為65,以下程序運行后的輸出結果是【】。

#include<stdio.h>

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

38.下列程序的運行結果為【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

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

}

39.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

三、1.選擇題(20題)41.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數據,正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

42.已有定義int(*q)(),指針q可以()。

A.指向函數的入口地址B.代表函數的返回值C.表示函數的類型D.表示函數返回值的類型

43.下列程序的運行結果是()。#include<stdio.h>#include<string.h>main(){char*s1="ahDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}

A.正數B.負數C.零D.不確定的值

44.若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\h",i);其輸出結果是()。

A.0,0B.0,1C.1,1D.程序進入無限循環(huán)

45.結構化程序設計主要強調的是

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

46.設有下列二叉樹:

對此二叉樹中序遍歷的結果為______。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

47.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序運行后的輸出結果是()。

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

48.以下有關宏替換的敘述不正確的是()。

A.雙引號中出現的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示

49.若下列各選項中所有變量已正確定義,函數fun通過return語句返回一個函數值,以下選項中錯誤的程序是()。

A.main(){...x=fun(2,10);...}floatfun(inta,intb){...}

B.floatfun(inta,intb){...}main(){...x=fun(i,j);...}

C.floatfun(int,int);main(){...x=fun(2,10);...}floatfun(ihta,intb){...}

D.main(){floatfun(inti,intj);...x=fun(i,j);...}floatfun(inta,intb){...}

50.不是面向對象程序設計的可維護性的優(yōu)點的是()

A.用面向對象的方法開發(fā)的軟件穩(wěn)定性比較好B.易于移植C.易于和調試D.用面向對象的方法開發(fā)的軟件比較容易理解

51.下列程序的運行結果為

#include<stdio.h>

voidabc(char*str)

{inta,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

voidmain()

{charstr[]="abcdef";

abc(str);

printf("str[]=%s",str);}

A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

52.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦于19.0,b賦予22.0,c賦予33.0,不正確的輸入形式是______。

A.10<回車>22<回車>33<回車>

B.19.0,22.0,33.0<回車>

C.19.0<回車>22.033.0<同車>

D.1022<回車>33<回車>

53.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}執(zhí)行后輸出結果是()。

A.7B.6C.8D.無確定值

54.若有下列定義,則對a數組元素地址的正確引用是()。

inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

55.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結果是______。

A.2B.4C.6D.8

56.不能把字符串"Hello!"賦給數組b的語句是______。

A.charb[10]={'H','e','l','l','o','!'};

B.charb[10]={'h','e','l','l','o','!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

57.以下各選項均為說明一種新的類型名,其中正確的是()。

A.typedefv1int;

B.typedefv1=int;

C.typedefintv1;

D.typedefv1=int;

58.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結果是______。

A.64,28B.4,4C.4,3D.64,64

59.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達式是():

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

60.在下列關于二叉樹的敘述中,正確的一項是

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

B.二叉樹的度為2

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

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

四、選擇題(20題)61.

62.有如下程序

voidf(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

printf("%d,",a[i]);

}

該程序的輸出結果是

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

63.

64.(46)面向對象的設計方法與傳統(tǒng)的的面向過程的方法有本質不同,它的基本原理是()

A.模擬現實世界中不同事物之間的聯系

B.強調模擬現實世界中的算法而不強調概念

C.使用現實世界的概念抽象地思考問題從而自然地解決問題

D.鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實際領域的概念去思考

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

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

66.下列程序的輸出結果是

intb=2;

intfunc(int*a)

{b+=*a;return(b);}

main()

{inta=2,res=2;

res+=func(&a);

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

}

A.2

B.4C.6

D.8

67.在單鏈表中,增加頭結點的目的是()。

A.方便運算的實現B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性的鏈式存儲實現

68.

69.下列關于指針變量賦空值的說法錯誤的是

A.當賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達為變量名=’\0’;

溫馨提示

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

評論

0/150

提交評論