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

下載本文檔

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

文檔簡介

2021年四川省巴中市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下程序運行時若要正確輸出函數(shù)的入口地址和輸入數(shù)的絕對值,應(yīng)在程序空缺處填入的正確選項是

abs(intx)

{if(x>=0)returnx;

elsereturn-x;}

main()

{inty,z,(*p)(intx)=abs;

scanf("%d",&y);

z=(*p)(y);

;}

A.printf("%d%d\n",&p,z)

B.printf("%d%d\n",p,z)

C.printf("%d%d\n",*p,z)

D.printf("%d%d\n",p,*z)

2.以下說法錯誤的是()。

A.C語言中的常量是指在程序運行過程中經(jīng)常被用到的變量

B.C語言中的常量是指在程序運行過程中其值不能被改變的量

C.C語言中的常量可以用一個符號名來代表

D.C語言中的常量可以用宏來定義

3.能正確表示“當(dāng)x的取值在[1,10]和[100,110]范圍內(nèi)為真,否則為假”的表達式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)

B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)

C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)

D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)

4.運算符________的優(yōu)先級最高。

A.[]B.+=C.?:D.++

5.對于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

6.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用直接選擇大值開始排序時,第一趟掃描結(jié)果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

7.

8.一個算法的語句執(zhí)行次數(shù)為(2n2+2nlog2n+4n-7),則其時間復(fù)雜度為()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(2n2)

9.以下程序中函數(shù)sort的功能是對數(shù)組a中的數(shù)據(jù)進行由大到小的排序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[]={1,2,3,4,5,6,7,8,9,10},i;son(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3;8,7,6,5,4,9,10,

D.1,2,10,9,8,7,6,5,4,3,

10.有定義語句intb;charc[10];,則正確的輸入語句是______。A.scallf("%d%s",&b,&c);

B.scallf("%d%s",&b,c);

C.scanf("%d%s",b,c)

D.scanf("%d%s",b,&c);

11.[0,2,1,4,3,9,5,8,6,7]是以數(shù)組形式存儲的最小堆,刪除堆頂元素0后的結(jié)果是()

A.[2,1,4,3,9,5,8,6,7]

B.[1,2,5,4,3,9,8,6,7]

C.[2,3,1,4,7,9,5,8,6]

D.[1,2,5,4,3,9,7,8,6]

12.以下選項中合法的C語言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

13.

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

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題

15.有三個關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為()。A.選擇B.投影C.交D.并

16.以下敘述中錯誤的是______。A.C程序必須由—個或—個以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為—個獨立的語句存在

C.若函數(shù)有返回值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應(yīng)的實參

17.

18.在銀行業(yè)務(wù)中,實體客戶和實體銀行之間的聯(lián)系是()。

A.—對一B.—對多C.多對一D.多對多

19.下列程序的運行結(jié)果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

20.以下選項中,合法的一組C語苦數(shù)值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

二、2.填空題(20題)21.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序運行時輸入:12<回車>,執(zhí)行后的輸出結(jié)果是【】。

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

main()

{inta=3,b=4,c=5,t=99;

i[(b<a&&a<C)t=a;a=c;c=t;

if(a<c&&b<C)t=b;b=a;a=t;

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

}

23.下列程序的功能是計算1~100的整數(shù)的累加和。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=i;

i++;

}

printf("sum=%d\n",【】);

}

24.x、y、x均為int型變量,描述“x、y和z中至少有兩個為正數(shù)”的表達式是______。

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

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

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

26.用高級語言編寫的程序稱為【】程序,它可以通過解釋程序翻譯一句執(zhí)行一句的方式執(zhí)行,也可以通過編譯程序一次翻譯產(chǎn)生目標(biāo)程序,然后執(zhí)行。

27.Fibonacci數(shù)列中的頭兩個數(shù)是1和1,從第3個數(shù)開始,每個數(shù)等于前兩個數(shù)之和。下述程序計算此數(shù)列的前20個數(shù),且每行輸出5個數(shù),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intf,f1=1,f2=1;

inti;

printf("%6d%6d",f1,f2);

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

{f=【】;

printf("%6d",f);

if(【】)

printf("\n");

f1=f2;

【】;

}

}

28.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

29.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test.t","rb");

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

30.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為【】。

31.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

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

32.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{inti;

for(i=1;i<K;i++){......}

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

34.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

35.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。

36.以下程序段用以統(tǒng)計鏈表中元素的個數(shù)。其中first指向鏈表第一個結(jié)點,count用來統(tǒng)計結(jié)點個數(shù)。請?zhí)羁铡?/p>

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

37.下面程序的運行結(jié)果是()。##include<stdio.h>main(){inta,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}

38.設(shè)有以下定義:

structss

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

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

請寫出刪除點y的賦值語句【】。

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

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

main()

{inta[3]C4}={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

printf("maxvalueis%d\n",maxvalue(3,4,a));

}

maxvalue(m,n,array)

intm,n,array[][4];

{inti,j,max;

max=array[0][0];

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

for(i=0;i<n;j++)

if(max<array[i][j])max=array[i][j];

return(max);

}

三、1.選擇題(20題)41.若要顯示或打印漢字將用到漢字編碼中的()

A.輸入碼B.字型碼C.機內(nèi)碼D.交換碼

42.若有以下定義和語句,且0<=I<10,則對數(shù)組元素的錯誤引用是()

inta[]={1,2,3,4,5,6,7,8,9,0};

int*p,I

p=a;

A.*(a+I)B.a[p-a]C.p+ID.*(&a[I])

43.設(shè)有定義語句:charc1=92,c2=92;,則以下表達式中值為零的是

A.c1c2

B.c1&c2C.c1~c2D.c1|c2

44.以下4個選項中,不能看作一條語句的是

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

45.在以下術(shù)語中,與數(shù)據(jù)的邏輯結(jié)構(gòu)無關(guān)的是______。

A.線性結(jié)構(gòu)B.鏈式結(jié)構(gòu)C.樹型結(jié)構(gòu)D.網(wǎng)狀結(jié)構(gòu)

46.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。

A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH

47.有以下程序main(){inti,s=1;for(i=1;<50;i++)if(!(i%5)&&!(i%3))s=+i;printf("%d\n",s);}程序的輸出結(jié)果是

A.409B.277C.1D.91

48.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

49.在數(shù)據(jù)庫設(shè)計的4個階段;為關(guān)系模式選擇存取方法應(yīng)該在

A.需求分析階段B.概念設(shè)計階段C.邏輯設(shè)計階段D.物理設(shè)計階段

50.軟件生命周期中花費時間最多的階段是()

A.詳細設(shè)計B.軟件編碼C.軟件測試D.軟件維護

51.有以下程序:intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){return(*f2)(x)-(*f1)(x);}main(){inti;i=f(fa,fb,2);printf("%d\n",i);}程序運行后的輸出結(jié)果是()

A.-4B.1C.4D.8

52.以下與函數(shù)fseek(fp,0L,SEEK_SE乃有相同作用的是()。

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

53.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7

54.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。

A.gotoB.breakC.returnD.continue

55.下列表達式中,可以正確表示x≤0或x)1的關(guān)系是()。

A.(x>=1)||(x<=0)

B.x>l||x=0

C.x>=1ORx<=0

D.x>=1&&x<=0

56.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序運行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯

57.若有如下程序:main(){inta=1,b=1;for(;a<=10;a++){if(b>=9)break;if(b%3==1){b+=3;continue;}b++;}printf("%d,%d",b,a);}則程序運行后的輸出結(jié)果是()。

A.10,4B.7,3C.10,3D.11,3

58.以下敘述中錯誤的是

A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進行的

59.下列屬于C語言語句的是______。

A.printf("%d\n",a)

B.#include<stdio.h>

C.a=b;b=c;c=a;

D./*thisisaprogram*/

60.運行以下程序后,如果從鍵盤上輸入china#<回車>,貝愉出結(jié)果為_______。#include<stdio.h>main(){intv1=0,v2=O;charch;while((ch=getchar())!='#')switch(ch){case'a':case'h':default:v1++;case'O':v2++;}printf("%d,%d\n",v1,v2);}

A.2,0B.5,0C.5,5D.2,5

四、選擇題(20題)61.在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。

A.外模式B.內(nèi)模式C.概念模式D.邏輯模式

62.

63.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結(jié)果是()。A.28B.27C.42D.4l

64.

65.

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

charm[]1="l234567":

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

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

A.數(shù)組m與數(shù)組n完全相同

B.數(shù)組m與數(shù)組n長度相同

C.數(shù)組m比數(shù)組n長1

D.數(shù)組m與數(shù)組n中都存放字符串

66.下列語句組中,正確的是()。

A.char*s;s=”O(jiān)lympic”;

B.chars[7];s=”O(jiān)lympic”;

C.char*s;s={¨Olympic”};

D.chars[7];s={"Olympic”};

67.

68.設(shè)有定義:

69.

70.

71.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

72.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

73.若有定義語句:doublea,*P=&a;以下敘述中錯誤的是()。

A.定義語句中的*號是-個間址運算符

B.定義語句中的木號是-個說明符

C.定義語句中的P只能存放double類型變量的地址

D.定義語句中,P=&a把變量a的地址作為初值賦給指針變量P

74.

有以下計算公式

若程序前面已在命令中包含math.h文件,不能夠正確

計算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

75.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之問的通信靠傳遞消息來實現(xiàn)

C.在外面看不到對象的內(nèi)部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

76.在C語言程序中可用做用戶標(biāo)識符的是()。

A.void123BBNB.aa_abccasC.as+b3-123IfD.6fDoSIG

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

若有以下程序段:

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

A.刪除尾結(jié)點B.尾結(jié)點成為首結(jié)點C.刪除首結(jié)點D.首結(jié)點成為尾結(jié)點

78.作為信息處理熱點技術(shù)之一的“多媒體技術(shù)”中的媒體,強調(diào)的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

79.

80.

五、程序改錯題(1題)81.下列給定程序、中,函數(shù)proc()的功能是:先將字符串s中的字符按順序存放到t中,然后把s中的字符按正序連接到t的后面。例如,當(dāng)s中的字符串為WXYZ時,則t中的字符串應(yīng)為WXYZWXYZ。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是實現(xiàn)B=A+AT,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。舉例如下。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}

參考答案

1.B解析:考查函數(shù)指針的使用方法??梢允褂煤瘮?shù)指針來調(diào)用函數(shù)。調(diào)用形式為:(*指針變量)(實參表列)。

2.AC語言中的常量是指在程序運行過程中其值不能被改變的量,它可以用宏來定義,用一個符號名來代表。選項A錯誤,選項B、C、D正確。本題答案為A選項。

3.C本題考查邏輯與(&&)和邏輯或(||)運算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達式應(yīng)寫成“(x>=100)&&(x>=110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關(guān)系,因此只要將前兩個表達式用邏輯或運算符連接起來即可,所以最后的表達式:(x>=1)&&(x<=10)&&(x<=110)。

4.A

5.C

6.A

7.C

8.A

9.C解析:在main函數(shù)中調(diào)用sort函數(shù)時,實參&aa[3]把數(shù)組元素aa[3]的首地址傳給形參數(shù)組a,使aa[3]與a[0]相對應(yīng)。sort函數(shù)將從aa[3]開始的連續(xù)5個數(shù)進行了從大到小的排序,其他數(shù)組元素不變。

10.B解析:scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是地址,而不是變量名。對于變量,通過地址運算符“&”求出內(nèi)存中的地址;對于數(shù)組c[10],數(shù)組名c即為數(shù)組在內(nèi)存中的地址。

11.D

12.B所謂常量,是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,需要使用雙引號;選項C不是合法的常量形式;選項D為實型常量中的指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù)。故本題答案為B選項。

13.C

14.CC?!窘馕觥寇浖こ淌侵笇⒐こ袒乃枷霊?yīng)用于軟件的開發(fā)、應(yīng)用和維護的過程,包括軟件開發(fā)技術(shù)和軟件工程管理。

15.D

16.D解析:在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應(yīng)的值傳遞紿形參,調(diào)用結(jié)束后,形參單元彼釋放,實參單元仍保留并維持原值。因此,在執(zhí)行—個被調(diào)用函數(shù)時,形參的值如果發(fā)生改變,并不會改變主調(diào)函數(shù)的實參的值,也就是說形參的值是不傳回紿對應(yīng)的實參的。

17.C

18.D一個客戶可以在多家銀行辦理業(yè)務(wù),一家銀行也有多個客戶辦理業(yè)務(wù),因此,實體客戶和實體銀行之間的聯(lián)系是多對多。本題選擇D選項。

19.B解析:本題考查帶參數(shù)的宏的定義及相關(guān)運算:S=m+n+m+n*k=1+2+1+2*3=10。

20.B

21.1212解析:本題中n1='1'-'0'=1,n2=1×10+('2'-'0')=10+2=12。

22.45994599解析:本題是一個陷阱題,以書寫格式來考查考生對if語句的理解.if語句只對緊跟其后的一條語句或語句塊產(chǎn)生作用。因此,題目中兩條if語句只有t=a;和t=b是if的子句。第1條if語句中b<a為假,所以跳過語句t=a;,執(zhí)行a=c;c=t;后,a=5、b=4、c=99。第2條if語句的判斷條件a<c&&b<c為真,所以后面三條語句都被執(zhí)行,這三條語句構(gòu)成一次a和b的內(nèi)容交換。所以最后輸出的結(jié)果是:4599。

23.0;sum<=100;sum

24.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:題目要求“x、y和z中至少有兩個為正數(shù)”,即x、y和x這3個數(shù)中必須有兩個是正數(shù),且這3個數(shù)中的哪兩個數(shù)都有可能是正數(shù),所以它們之間是或的關(guān)系。

25.gaga解析:考查了用字符指針處理字符串的方法。用字符指針處理字符串,首先要使指針指向這個字符串,即題中的ptr1=a和ptr2=b,然后就是通過指針的移動可以引用到字符串中的每一個字符。題中的*(ptr1+k)是使指針ptr1向后移動k個位置,然后取出指向的字符。

26.源程序源程序解析:用高級語言編寫的程序稱為源程序。源程序不能在計算機上直接運行,運行源程序有兩種方式:一種是通過解釋程序,對源程序逐句解釋執(zhí)行;另一種是先讓編譯程序?qū)⒃闯绦蛞淮畏g產(chǎn)生目標(biāo)程序(目標(biāo)程序是計算機可直接執(zhí)行的機器語言程序,是一種二進制代碼程序),然后執(zhí)行目標(biāo)程序。

27.f1+f2i%5==0f2=ff1+f2\r\ni%5==0\r\nf2=f解析:f用來保存前兩個數(shù)之和,并作為第三個數(shù),計算后把第二個數(shù)(f2)賦給f1,第三個數(shù)(f)賦給f2,再執(zhí)行for循環(huán)。

28.封裝性封裝性解析:對象具有下列5個基本特點:①標(biāo)識惟一性;②分類性:③多態(tài)性;④封裝性;⑤模塊獨立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實行和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。

29.fopenfopen解析:函數(shù)fopen的原型為FILE*fopen(char*filename,char*mode),功能為以mode指定的方式打開名為filename的文件;函數(shù)fseek的原型為intfseek(FILE*fp,longoffset,intbase),功能為將fp所指向的文件的位置指針移到以base所指出的位置為基準,offset為位移量的位置;函數(shù)ftell的原型為longftell(FILE*fp),功能為返回fp所指向的文件中當(dāng)前的讀寫位置;函數(shù)fclose的原型為intfclose(FILE*fp),功能為關(guān)閉fp所指的文件,釋放文件緩沖區(qū)。

30.11解析:字符空格的ASCII碼不為0,所以本題中表達式\ue008!c\ue009的值為0,b=0&&1的結(jié)果顯然為0。

31.11解析:因為x=4,y=3,所以表達式x<y的值為假(0),又因為z=2,所以0<z的值為真(1),故最終輸出的結(jié)果為1。

32.44解析:本題考查宏定義。預(yù)編譯時,首先將M的宏定義帶入K,得到N+1+1*N+1/2;再將N的宏定義帶人,得到2+1+1*2+1/2=3+2+0=5,所以循環(huán)4次。

33.30253025解析:本題考核的知識點是變量的存儲屬性和算術(shù)運算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個運行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個一個靜態(tài)變量a,此靜態(tài)變量a是個靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進行的,auto是自動變量的存儲類別標(biāo)識符,如果省略auto,系統(tǒng)隱含認為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態(tài)的局部變量.算術(shù)運算中a+=b++相當(dāng)于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。

34.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用??芍?,循環(huán)隊列應(yīng)當(dāng)是物理結(jié)構(gòu)。

35.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。

36.p!=NULLcount++(*p).next

37.s=30s=30解析:分析循環(huán)條件“m=1,m<=4”,所以循環(huán)4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。

38.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é)點y,只需讓結(jié)點x的指針域指向y結(jié)點的指針域所指向的后續(xù)結(jié)點就可,因此把結(jié)點z的地址賦給x的指針域就可以了,即讓結(jié)點x的指針域指向結(jié)點z。而結(jié)點z的地址保存在結(jié)點y的指針域中,因此只需把結(jié)點y的指針域賦值給結(jié)點x的指針域即可。

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

40.maxvalueis34

41.B

42.C

43.A解析:選項A為異或運算符,如果參加運算的兩個位相同,結(jié)果為0,否則為1。顯然選項A中參加運算c1和c2相同,故其值位0;選項B為位與運算,如果參加運算的兩位都為1,則結(jié)果為1,否則結(jié)果為0,選項B中參加運算的c1和c2都為真,所以結(jié)果為1;選項C為取反運算,用來對一個二進制取反,顯然c2取反后不為0,選項D為異或運算,參加運算的兩位只要有一個為1,那么運算結(jié)果為1,顯然參加運算的c1和c2都不為0,故運算結(jié)果不為0。

44.D解析:C語言的語句都用“;”結(jié)束。如果只有一個分號,稱為“空語句”。用一對花括號把若干語句括起來構(gòu)成一個語句組,稱為“復(fù)合語句”,在語法上視為一條語句。因此選項A是一條語句。選項B是逗號表達式加分號構(gòu)成的語句。選項C是一條if語句,該語句的if子句是一條空語句。選項D中“if(b==0)m=1;n=2;”是兩個表達式語句。所以,4個選項中選項D符合題意。

45.B

46.B解析:對二叉樹的前序遍歷是指:先訪問根結(jié)點,然后訪問左子樹,最后訪問右子樹,并且,在訪問左、右子樹時,先訪問根結(jié)點,再依次訪問其左,右子樹。

47.D解析:本題是計算50之內(nèi)的自然數(shù)相加之和,題中if語句括號中的條件表達式!(i%5)&&!(i%3)表明只有能同時被5和3整除的數(shù)才符合相加的條件,1~49之間滿足這個條件的只有,15、30和45,因為s的初始值為1,所以s=1+15+30+45=91。

48.C

\n題中整型指針變量P存放的是變量C的地址。所以本題答案為C。

\n

49.D解析:需求分析階段是分析用戶的需求,顯然不屬于這個階段,由此可以排除選項A。概念設(shè)計是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)及概念模型的過程,涉及不到數(shù)據(jù)的存取。邏輯設(shè)計是在概念設(shè)計的基礎(chǔ)上將E—R圖轉(zhuǎn)換成數(shù)據(jù)庫管理系統(tǒng)的邏輯數(shù)據(jù)模型表示的邏輯模式,也不涉及存取問題。

50.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護3個所段。本題中,詳細設(shè)計、軟什編碼和軟件測試都屬于軟件開發(fā)階段;維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段,軟件工程學(xué)的一個目的就是提高軟件的可維護性.降低維護的代價。

51.C

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

53.B解析:在長度為64的有序線性表中,其中的64個數(shù)據(jù)元素是按照從大到小或從小到大的順序排列有序的。在這樣的線性表中進行順序查找,最壞的情況就是查找的數(shù)據(jù)元素不性表中或位于線性表的最后。按照線性表的順序查找算法,首先用被查找的數(shù)據(jù)和線性表的第一個數(shù)據(jù)元素進行比較,若相等,則查找成功,否則,繼續(xù)進行比較,即和線性表的第二個數(shù)據(jù)元素進行比較。同樣,若相等,則查找成功,否則,繼續(xù)進行比較。依次類推,直到性表中查找到該數(shù)據(jù)或查找到線性表的最后一個元素,算法才結(jié)束。因此,在長度為64的有序線性表十進行順序查找,最壞的情況下需要比較64次。因此,本題的正確答案為選項B。

54.B解析:在C語言中,可以用break語句和continue語句跳出本層循環(huán)和結(jié)束本次循環(huán)。goto語句可跳出多層循環(huán),如果在函數(shù)的循環(huán)體內(nèi)使用return語句,就會直接結(jié)束循環(huán)返回函數(shù)值。

55.A解析:題中要求x的取值是小于等于0或者大于等于1,這說明表達式是或的關(guān)系,所以在寫成C語言表達式應(yīng)是邏輯或的關(guān)系,邏輯或運算符是“||”。

56.A解析:在C語言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)為0。所以,4個選項中選項A符合愿意。

57.A解析:本題中for循環(huán)循環(huán)10次。如果b>=9結(jié)束循環(huán)。如果b能被3整除結(jié)束本次循壞。都不成立b加1。for循環(huán)執(zhí)行過程為:當(dāng)a=1,b=1時,b%3=1,b=b+3=1+3=4,進入下一次循環(huán):當(dāng)a=2,b=4時,b%3=1,b=b+3=4+3=7,進入下一次循環(huán);當(dāng)a=3,b=7時,b%3=1,b=b+3=7+3=10,進入下一次循環(huán);當(dāng)a=4,b=10時,因b>=9成立,執(zhí)行“break;”退出循環(huán)。

58.D解析:在C語言中,凡是以“#”開頭的行都稱為編譯預(yù)處理命令行,如#include、#define、#if等,每行的末尾不得用“;”結(jié)束,以區(qū)別于C語句、定義和說明語句。選項C中的宏定義為不帶參數(shù)的宏命令行,宏名之后可以有替換文本,也可以沒有。編譯預(yù)處理是在編譯程序?qū)源程序進行編譯前執(zhí)行的.當(dāng)然也在程序執(zhí)行之前執(zhí)行,因此選項D是錯誤的。

59.C解析:在C語言中,一個完整的C語句必須在語句末尾出現(xiàn)分號,分號是C語句的必要組成部分。本題答案為C。

60.C解析:執(zhí)行完一個case后面的語句后,流程控制移到下一個case繼續(xù)執(zhí)行?!癱ase常量表達式”只是起語句標(biāo)號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的入口標(biāo)號,就從此標(biāo)號開始執(zhí)行下去,不再進行判斷。

61.B數(shù)據(jù)庫有三層模式結(jié)構(gòu),邏輯模式是數(shù)據(jù)的全局邏輯結(jié)構(gòu)的描述,外模式也稱為子模式,是局部數(shù)據(jù)的邏輯結(jié)構(gòu)描述,而內(nèi)模式也稱為存儲模式,是數(shù)據(jù)庫物理存儲結(jié)構(gòu)和存取方法的描述。

62.A

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

64.C

65.C

\n在m數(shù)組中賦值的是字符串,其長度為7,末尾有結(jié)束符\0,故字節(jié)數(shù)為8,而n數(shù)組中賦的是字符,其長度為7,故C選項正確。

\n

66.A字符型指針變量可以用選項A的賦值方法:char$s;s=”O(jiān)lympic”,選項C的寫法:char$s。s={¨Olympic”};是錯誤的。字符數(shù)組可以在定義的時候初始化:chars[]={¨Olympic”};?或者chars[]=”O(jiān)lympic”,都是正確的。但是不可以在定義字符數(shù)組后,對數(shù)組名賦值。(數(shù)組名是常量,代表數(shù)組首地址)所以選項8和選項D都是錯誤的。對于本例,選項B、D中字符數(shù)組s的大小至少為8,才能存放下字符串。(字符串的末尾都有結(jié)束標(biāo)識‘、0’)。

67.D

68.A選項B)、D)中if語句后都是一條復(fù)合語句,選項c)中if語句后都是一條語句。選項A)之后有3條語句,所以答案選擇A)。

69.C

70.B

71.A軟件危機主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進度無法控制;軟件質(zhì)量難以保證;軟件不可維護或維護程度非常低;軟件的成本不斷提高;軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。所以選擇A。

72.A本題重點考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCIl碼。例如A為65,a為97。即字母+1劂可得到下一個字母。-其次是函數(shù)形參和實參的問題,運行過程如下:在fun(&b,a)中,}c=.a(chǎn)-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);輸出b,B,因為指針c指向地址的值為b,此時b=}C=.b.;豳數(shù)返回執(zhí)行ptud(。%C,%c、n”,b,8);輸出b,A,因此A選項正確。

73.A在變量定義doublea,*P:&a;中,}號是一個指針運算符,而非間址運算符,所以A錯誤。

74.B

\n選項A、C、D分別用一個ifelse語句、兩個if語句和條件表達式表達了計算公式的含義。

\n

75.C對象的封裝性是指從外面看只能看到對象的外部特性,而對象的內(nèi)部,其處理能力的實行和內(nèi)部狀態(tài)對外是不可見的,是隱蔽的。

76.Bc語言規(guī)定,標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線,不能使用關(guān)鍵字和數(shù)字,A中void,C中if,D中D0,都屬于關(guān)鍵字。

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

78.D媒體分為感覺媒體、表示媒體、存儲媒體、傳輸媒體和表現(xiàn)媒體五種,“多媒體技術(shù)”中的媒體強調(diào)的是感覺媒體。

79.C

80.C

81.錯誤:t[i]=s[s1];

正確:t[i]=s[i];

【解析】函數(shù)proc()首先要實現(xiàn)將數(shù)組s中的元素順序放在數(shù)組t中,即數(shù)組t中下標(biāo)為i的元素在數(shù)組S中下標(biāo)也為i,因此“t[i]=s[s1];”應(yīng)改為“t[i]=s[i];”。

82.voidfun(inta[3][3],intb[3][3]){ inti,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/}行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對應(yīng)原矩陣的第j行第i列。本題使用兩層循環(huán)實現(xiàn)矩陣的轉(zhuǎn)置,并將計算結(jié)果存入矩陣b中,外層循環(huán)控制矩陣的行下標(biāo),內(nèi)層循環(huán)控制矩陣的列下標(biāo)。2021年四川省巴中市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下程序運行時若要正確輸出函數(shù)的入口地址和輸入數(shù)的絕對值,應(yīng)在程序空缺處填入的正確選項是

abs(intx)

{if(x>=0)returnx;

elsereturn-x;}

main()

{inty,z,(*p)(intx)=abs;

scanf("%d",&y);

z=(*p)(y);

;}

A.printf("%d%d\n",&p,z)

B.printf("%d%d\n",p,z)

C.printf("%d%d\n",*p,z)

D.printf("%d%d\n",p,*z)

2.以下說法錯誤的是()。

A.C語言中的常量是指在程序運行過程中經(jīng)常被用到的變量

B.C語言中的常量是指在程序運行過程中其值不能被改變的量

C.C語言中的常量可以用一個符號名來代表

D.C語言中的常量可以用宏來定義

3.能正確表示“當(dāng)x的取值在[1,10]和[100,110]范圍內(nèi)為真,否則為假”的表達式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)

B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)

C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)

D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)

4.運算符________的優(yōu)先級最高。

A.[]B.+=C.?:D.++

5.對于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

6.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用直接選擇大值開始排序時,第一趟掃描結(jié)果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

7.

8.一個算法的語句執(zhí)行次數(shù)為(2n2+2nlog2n+4n-7),則其時間復(fù)雜度為()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(2n2)

9.以下程序中函數(shù)sort的功能是對數(shù)組a中的數(shù)據(jù)進行由大到小的排序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[]={1,2,3,4,5,6,7,8,9,10},i;son(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結(jié)果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3;8,7,6,5,4,9,10,

D.1,2,10,9,8,7,6,5,4,3,

10.有定義語句intb;charc[10];,則正確的輸入語句是______。A.scallf("%d%s",&b,&c);

B.scallf("%d%s",&b,c);

C.scanf("%d%s",b,c)

D.scanf("%d%s",b,&c);

11.[0,2,1,4,3,9,5,8,6,7]是以數(shù)組形式存儲的最小堆,刪除堆頂元素0后的結(jié)果是()

A.[2,1,4,3,9,5,8,6,7]

B.[1,2,5,4,3,9,8,6,7]

C.[2,3,1,4,7,9,5,8,6]

D.[1,2,5,4,3,9,7,8,6]

12.以下選項中合法的C語言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

13.

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

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題

15.有三個關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為()。A.選擇B.投影C.交D.并

16.以下敘述中錯誤的是______。A.C程序必須由—個或—個以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為—個獨立的語句存在

C.若函數(shù)有返回值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應(yīng)的實參

17.

18.在銀行業(yè)務(wù)中,實體客戶和實體銀行之間的聯(lián)系是()。

A.—對一B.—對多C.多對一D.多對多

19.下列程序的運行結(jié)果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

20.以下選項中,合法的一組C語苦數(shù)值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

二、2.填空題(20題)21.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序運行時輸入:12<回車>,執(zhí)行后的輸出結(jié)果是【】。

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

main()

{inta=3,b=4,c=5,t=99;

i[(b<a&&a<C)t=a;a=c;c=t;

if(a<c&&b<C)t=b;b=a;a=t;

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

}

23.下列程序的功能是計算1~100的整數(shù)的累加和。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=i;

i++;

}

printf("sum=%d\n",【】);

}

24.x、y、x均為int型變量,描述“x、y和z中至少有兩個為正數(shù)”的表達式是______。

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

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

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

26.用高級語言編寫的程序稱為【】程序,它可以通過解釋程序翻譯一句執(zhí)行一句的方式執(zhí)行,也可以通過編譯程序一次翻譯產(chǎn)生目標(biāo)程序,然后執(zhí)行。

27.Fibonacci數(shù)列中的頭兩個數(shù)是1和1,從第3個數(shù)開始,每個數(shù)等于前兩個數(shù)之和。下述程序計算此數(shù)列的前20個數(shù),且每行輸出5個數(shù),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intf,f1=1,f2=1;

inti;

printf("%6d%6d",f1,f2);

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

{f=【】;

printf("%6d",f);

if(【】)

printf("\n");

f1=f2;

【】;

}

}

28.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

29.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度。請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test.t","rb");

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

30.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為【】。

31.若有如下程序:

main()

{intx=4;y=3,Z=2,t;

t=x<y<z;

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

}

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

32.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{inti;

for(i=1;i<K;i++){......}

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

34.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

35.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。

36.以下程序段用以統(tǒng)計鏈表中元素的個數(shù)。其中first指向鏈表第一個結(jié)點,count用來統(tǒng)計結(jié)點個數(shù)。請?zhí)羁铡?/p>

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

37.下面程序的運行結(jié)果是()。##include<stdio.h>main(){inta,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}

38.設(shè)有以下定義:

structss

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

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

請寫出刪除點y的賦值語句【】。

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

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

main()

{inta[3]C4}={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

printf("maxvalueis%d\n",maxvalue(3,4,a));

}

maxvalue(m,n,array)

intm,n,array[][4];

{inti,j,max;

max=array[0][0];

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

for(i=0;i<n;j++)

if(max<array[i][j])max=array[i][j];

return(max);

}

三、1.選擇題(20題)41.若要顯示或打印漢字將用到漢字編碼中的()

A.輸入碼B.字型碼C.機內(nèi)碼D.交換碼

42.若有以下定義和語句,且0<=I<10,則對數(shù)組元素的錯誤引用是()

inta[]={1,2,3,4,5,6,7,8,9,0};

int*p,I

p=a;

A.*(a+I)B.a[p-a]C.p+ID.*(&a[I])

43.設(shè)有定義語句:charc1=92,c2=92;,則以下表達式中值為零的是

A.c1c2

B.c1&c2C.c1~c2D.c1|c2

44.以下4個選項中,不能看作一條語句的是

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

45.在以下術(shù)語中,與數(shù)據(jù)的邏輯結(jié)構(gòu)無關(guān)的是______。

A.線性結(jié)構(gòu)B.鏈式結(jié)構(gòu)C.樹型結(jié)構(gòu)D.網(wǎng)狀結(jié)構(gòu)

46.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。

A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH

47.有以下程序main(){inti,s=1;for(i=1;<50;i++)if(!(i%5)&&!(i%3))s=+i;printf("%d\n",s);}程序的輸出結(jié)果是

A.409B.277C.1D.91

48.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

49.在數(shù)據(jù)庫設(shè)計的4個階段;為關(guān)系模式選擇存取方法應(yīng)該在

A.需求分析階段B.概念設(shè)計階段C.邏輯設(shè)計階段D.物理設(shè)計階段

50.軟件生命周期中花費時間最多的階段是()

A.詳細設(shè)計B.軟件編碼C.軟件測試D.軟件維護

51.有以下程序:intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){return(*f2)(x)-(*f1)(x);}main(){inti;i=f(fa,fb,2);printf("%d\n",i);}程序運行后的輸出結(jié)果是()

A.-4B.1C.4D.8

52.以下與函數(shù)fseek(fp,0L,SEEK_SE乃有相同作用的是()。

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

53.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7

54.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。

A.gotoB.breakC.returnD.continue

55.下列表達式中,可以正確表示x≤0或x)1的關(guān)系是()。

A.(x>=1)||(x<=0)

B.x>l||x=0

C.x>=1ORx<=0

D.x>=1&&x<=0

56.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序運行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯

57.若有如下程序:main(){inta=1,b=1;for(;a<=10;a++){if(b>=9)break;if(b%3==1){b+=3;continue;}b++;}printf("%d,%d",b,a);}則程序運行后的輸出結(jié)果是()。

A.10,4B.7,3C.10,3D.11,3

58.以下敘述中錯誤的是

A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進行的

59.下列屬于C語言語句的是______。

A.printf("%d\n",a)

B.#include<stdio.h>

C.a=b;b=c;c=a;

D./*thisisaprogram*/

60.運行以下程序后,如果從鍵盤上輸入china#<回車>,貝愉出結(jié)果為_______。#include<stdio.h>main(){intv1=0,v2=O;charch;while((ch=getchar())!='#')switch(ch){case'a':case'h':default:v1++;case'O':v2++;}printf("%d,%d\n",v1,v2);}

A.2,0B.5,0C.5,5D.2,5

四、選擇題(20題)61.在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是()。

A.外模式B.內(nèi)模式C.概念模式D.邏輯模式

62.

63.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結(jié)果是()。A.28B.27C.42D.4l

64.

65.

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

charm[]1="l234567":

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

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

A.數(shù)組m與數(shù)組n完全相同

B.數(shù)組m與數(shù)組n長度相同

C.數(shù)組m比數(shù)組n長1

D.數(shù)組m與數(shù)組n中都存放字符串

66.下列語句組中,正確的是()。

A.char*s;s=”O(jiān)lympic”;

B.chars[7];s=”O(jiān)lympic”;

C.char*s;s={¨Olympic”};

D.chars[7];s={"Olympic”};

67.

68.設(shè)有定義:

69.

70.

71.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

72.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

73.若有定義語句:doublea,*P=&a;以下敘述中錯誤的是()。

A.定義語句中的*號是-個間址運算符

B.定義語句中的木號是-個說明符

C.定義語句中的P只能存放double類型變量的地址

D.定義語句中,P=&a把變量a的地址作為初值賦給指針變量P

74.

有以下計算公式

若程序前面已在命令中包含math.h文件,不能夠正確

計算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

75.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之問的通信靠傳遞消息來實現(xiàn)

C.在外面看不到對象的內(nèi)部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

76.在C語言程序中可用做用戶標(biāo)識符的是()。

A.void123BBNB.aa_abccasC.as+b3-123IfD.6fDoSIG

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

若有以下程序段:

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

A.刪除尾結(jié)點B.尾結(jié)點成為首結(jié)點C.刪除首結(jié)點D.首結(jié)點成為尾結(jié)點

78.作為信息處理熱點技術(shù)之一的“多媒體技術(shù)”中的媒體,強調(diào)的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

79.

80.

五、程序改錯題(1題)81.下列給定程序、中,函數(shù)proc()的功能是:先將字符串s中的字符按順序存放到t中,然后把s中的字符按正序連接到t的后面。例如,當(dāng)s中的字符串為WXYZ時,則t中的字符串應(yīng)為WXYZWXYZ。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是實現(xiàn)B=A+AT,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。舉例如下。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}

參考答案

1.B解析:考查函數(shù)指針的使用方法??梢允褂煤瘮?shù)指針來調(diào)用函數(shù)。調(diào)用形式為:(*指針變量)(實參表列)。

2.AC語言中的常量是指在程序運行過程中其值不能被改變的量,它可以用宏來定義,用一個符號名來代表。選項A錯誤,選項B、C、D正確。本題答案為A選項。

3.C本題考查邏輯與(&&)和邏輯或(||)運算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達式應(yīng)寫成“(x>=100)&&(x>=110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關(guān)系,因此只要將前兩個表達式用邏輯或運算符連接起來即可,所以最后的表達式:(x>=1)&&(x<=10)&&(x<=110)。

4.A

5.C

6.A

7.C

8.A

9.C解析:在main函數(shù)中調(diào)用sort函數(shù)時,實參&aa[3]把數(shù)組元素aa[3]的首地址傳給形參數(shù)組a,使aa[3]與a[0]相對應(yīng)。sort函數(shù)將從aa[3]開始的連續(xù)5個數(shù)進行了從大到小的排序,其他數(shù)組元素不變。

10.B解析:scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是地址,而不是變量名。對于變量,通過地址運算符“&”求出內(nèi)存中的地址;對于數(shù)組c[10],數(shù)組名c即為數(shù)組在內(nèi)存中的地址。

11.D

12.B所謂常量,是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,需要使用雙引號;選項C不是合法的常量形式;

溫馨提示

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

評論

0/150

提交評論