2022年山西省大同市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2022年山西省大同市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2022年山西省大同市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2022年山西省大同市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2022年山西省大同市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2022年山西省大同市全國計算機等級考試C語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.在一個有頭結點的鏈隊列中,假設f和r分別為隊首和隊尾指針,則插入s所指的結點的運算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.s->next=r;r=s;

D.s->next=f;f=s;

2.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

該程序的輸出結果是()。

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

3.下列判斷正確的是()。

A.chara="ABCD":等價于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等價于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";

4.在16位IBM-PC機上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結構變量b占用內存的字節數是

A.1B.2C.7D.11

5.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()

A.每個元素都有一個直接前件和直接后件

B.線性表中至少要有一個元素

C.表中諸元素的排列順序必須是由小到大或由大到小

D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件

6.

7.在C語言中,函數返回值的類型最終取決于()。

A.函數定義時在函數首部所說明的函數類型

B.return語句中表達式值的類型

C.調用函數時主調函數所傳遞的實參類型

D.函數定義時形參的類型

8.

下述程序的輸出結果是()。

#include<stdio.h>

voidmain

{intb[6]={2,4,6,8,10,12);

int*p=b,**q=&p;

printf("%d,",*(p++));

printf("%d,",**q);

}

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

9.在具有n個結點的單鏈表中,實現()的操作,其算法的時間復雜度是O。

A.求鏈表的第i個結點B.在地址為P的結點之后插入一個結點C.刪除表頭結點D.刪除地址為P的結點的后繼結點

10.

11.有下列程序:fun(intX,inty){return(x+y);)main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執行后的輸出結果是()。A.6B.7C.8D.9

12.有以下程序:#include<stdio.h>voidmain(){doublex=3.14159;printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);}程序運行后的輸出結果是()。

A.3.142000B.3.141000C.3.143000D.3.140000

13.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

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

A.fget(f0,ch);

B.foutc(ch,fo);

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

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

15.下列定義數組的語句中,正確的是()。A.#defineN10;intx[N];

B.intN=10;intx[N];

C.int:x[0.10];

D.intx[];.

16.下面關于圖的存儲的敘述中正確的是()。

A.用鄰接表法存儲圖,占用的存儲空間大小只與圖中邊數有關,而與頂點個數無關

B.用鄰接表法存儲圖,占用的存儲空間大小與圖中邊數和頂點個數都有關

C.用鄰接矩陣法存儲圖,占用的存儲空間大小與圖中頂點個數和邊數無關

D.用鄰接矩陣存儲圖,占用的存儲空間大小只與圖中邊數有關,而與頂點個數無關

17.下列關于宏的敘述中正確的是()。

A.宏替換沒有數據類型限制

B.宏定義必須位于源程序中所有語句之前

C.宏名必須用大寫字母表示

D.宏調用比函數調用耗費時間

18.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。

A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);

19.若有以下程序

則程序的輸出結果是

A.China!B.toChina!C.meyoutoChina!D.youtoChina!

20.

二、2.填空題(20題)21.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果。

22.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

23.長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數為【】。

24.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

運行后,i,j,m,n的值分別是_______。

25.結構化程序設計的3種基本結構分別是順序、選擇和______。

26.關系代數是關系操作語言的一種傳統表示方式,它以集合代數為基礎,它的運算對象和運算結果均為()。

27.在算法正確的前提下,評價一個算法好壞的2個因素是時間復雜度和【】復雜度。

28.以下程序運行后的輸出結果是【】。

main()

{

intx=0210;

printf("%X\n",x);

}

29.結構化分析方法是面向______進行分析的方法。

30.下面函數要求計算兩個整數x,y之和,并通過形參返回該值,請填空。

add(intx,inty,【】z)

{【】=x+y;}

31.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

32.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

34.以下程序的功能是:輸出100以內(不含100)能被3整除且個位數為6的所有整數,請填空。

#include<stdio.h>

main()

{inti,j

for(i=0;【】;i++)

{j=i*10+6;

if(【】)continue:

Printf("%d”",j);

}

}

35.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

36.C語言用于結構化程序設計的3種基本結構是______、選擇結構和循環結構。

37.面向對象的模型中,最基本的概念是對象和______。

38.下面程序的功能是輸出數組s中最大元素的下標,請填空。

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

39.函數fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

40.下列程序的運行結果是______。

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

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

}

三、1.選擇題(20題)41.有以下定義:#include<stdio.h>chara[l0],*b=a;不能給a數組輸入字符串的語句是______。

A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(b);

42.設有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

43.若有說明inta[3][4];則下面屬于a數組元素的非法引用的是()。

A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]

44.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");

B.switch((iht)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:pfintf("*\n");casec:pfintf("**\n");}

45.有下列二叉樹,對此二叉樹中序遍歷的結果為()。

A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ

46.下列程序的輸出結果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

47.若有定義:inta[5],*p=a;,則對a數組元素地址的正確引用是______。

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

48.下面的程序輸出結果是______。#definer16#ifr==16voidp(inta){printf("%x",a);}#elsevoidp(inta){printf("%d",a);}#endifmain(){p(32);}

A.32B.20C.編譯時錯誤D.運行時錯誤

49.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.languageB.lnugC.有語法錯誤D.lang

50.單個用戶使用的數據視圖的描述稱為______。

A.外模式B.概念模式C.內模式D.存儲模式

51.以下程序的輸出結果是()。main()chara[10]={'1','2','3','4','5','6','7','8','9','\0'),*p;{inti;i=8;p=a+i;printf("%s\n",p-3);}

A.6B.6789C.'6'D.789

52.執行下列程序后,輸出的結果是()。#include<stdio.h>#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m);printf("%d",a);}

A.1B.4C.9D.0

53.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。下列不能將變量c中的大寫字母轉換為對應小寫字母的語句是()。

A.c=(c-'A')%26+'a'

B.c=c+32

C.c=C-'A'+'a'

D.c=('A'+C)%26-'a'

54.設a=3、b=4、c=5,則表達式!(a+b)+c-1&&b+c/2的值為______。

A.6.5B.6C.0D.1

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

A.在C語言中,可以使用動態內存分配技術,定義元素個數可變的數組

B.在C語言中,數組元素的個數可以不確定,允許隨機變動

C.在C語言中,數組元素的數據類型可以不一致

D.在C語言中,定義了一個數組后,就確定了它所容納的元素的個數

56.在數據庫技術中,面向對象數據模型是一種______。

A.概念模型B.結構模型C.物理模型D.形象棋型

57.有以下函數定義:voidfun(intn,doubx){……}若以下選項中的變量都已正確定義并賦值,則對函數fun的正確調用語句是()。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfum(n,x);

58.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n")}從第一列開始輸入以下數據<CR>代表一個回車符。2743<CR>程序的輸出結果是

A.66877B.668966C.6677877D.6688766

59.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經濟性

60.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運行后的輸出結果是

A.編譯出錯B.9C.21D.9

四、選擇題(20題)61.若有說明:inti,j=7,*p=&i;,則與i=j;等價的語句是()。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

62.有以下程序:

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

A.32B.16C.1D.0

63.

64.設有以下說明語句:

則下面的敘述中不正確的是()。

A.struct結構體類型的關鍵字

B.example是結構體類型名

C.x,y,z都是結構體成員名

D.struetex是結構體類型名

65.有以下程序:

#include<stdio.h>

main()

{inti,j,m=1;

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

{for(j=3;j>0;j--)

{if(i*j>3)break;

m*=i+j;

}

}

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

}

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

A.m=6

B.m=2

C.m=4

D.m=3

66.以下結構體類型說明和變量定義中正確的是()。

67.

若有定義和語句:

int**pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,*PP);

則輸出結果是()。

A.20,10B.20,20C.10,20D.10,10

68.有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf(“c,%d\n”,c1,c2);}已知字母A的ASCⅡ碼為65,程序運行后的輸出結果是()。A.E,68B.B,69C.E,DD.輸出無定值

69.

70.

71.設有定義intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

72.按照c語言規定的用戶標識符命名規則,不能出現在標識符中的是()。A.連接符B.大寫字母C.數字字符D.下劃線

73.

有以下程序:

voidf(intx,inty)

{intt;

if(x<y){t=x;x=Y;y=t;)

}

main

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

f(a,b);f(a,c);f(b,c);

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

}

執行后輸出結果是()。

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

74.能正確表示a和b同時為正或同時為負的邏輯表達式是_________。

A.a>=0

B.

C.b>=0)(a<0

D.

E.b<0)

F.(a>=0b>=0)(a<0b<0)

G.(a+b>0)(a+b<=0)

H.a*b>0

75.有以下程序段

#include<stdio.h>

voidfun(char*fname,char*st)

{FILE*myf;

inti;

myf=fopen(fname,"w");

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{fun("test.t","newworld");

fun("test.t","hello,");}

程序執行后,文件test.t中的內容是A.A.hello,

B.newworldhello,

C.newworld

D.hello,rld

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

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

77.為了避免嵌套的條件分支語句if-else的二義性,C語言規定:C程序中的else總是與()組成配對關系。

A.縮排位置相同的ifB.在其之前未配對的ifC.在其之前未配對的最近的ifD.同一行上的if

78.下述程序執行的輸出結果是()。

#include<stdio.h>

main()

{chara[2][4];,

strcpy(a。"are");strcpy(a[1],"you");

a[o][3]=&;

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

}

A.are&you

B.you

C.are

D.&

79.已定義c為字符型常量,則下列語句中正確的是()。

A)c=′97′B)c="97"

C)c=97D)c="a"

80.在E—R圖中,用來表示實體聯系的圖形是()。

A.橢圓形B.矩形C.菱形D.三角形

五、程序改錯題(1題)81.下列給定程序中,函數fun()的功能是:計算函數F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,2和Y的值不相等。例如,當x的值為1,y的值為2,z的值為3時,函數值為2.O0。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫函數proc(),它的功能是:求出str所指字符串中指定字符的個數,并返回此值。例如,若輸入字符串12341234123,輸入字符4,則輸出2。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.B

2.D

\n本題for循環中,當i=0時,判斷條件i&printf('%d\n',n[k]),此時i的值是0,輸出n[k]的值也為0,0&0結果還是0,條件不成立,退出循環。所以最后輸出結果為0。

\n

3.Da=“ABCD”書寫錯誤,因為“=”左邊不能出現常量;數組名S是代表S數組首地址常量,而不是變量;字符串只有在定義時維數可以省略。

4.D解析:結構體變量所占用內存的字節數是其所有成員所占用內存字節數之和。本題中整型變量i所占用的內存是2字節,字符型變量ch所占用的內存是1字節,雙精度型變量f所占用的內存是8字節,三者相加即可。

5.D解析:線性表可以為空表,排除選項B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項A。線性表的定義中,元素的排列沒有規定大小順序,故選項C也有誤,只有D項是正確的。

6.D

7.A解析:在C語言中,應當在定義函數時指定函數值的類型。凡不加類型說明的函數,默認按整型處理。在定義函數時對函數值說明的類型一般應該和return語句中的表達式類型一致。如果函數值的類型和return語句中的表達式類型不一致,則以函數值的類型為準,由系統自動進行轉換,即函數類型決定返回值的類型。

8.D

\n首先定義了一個指向一維數組b的指針P,一個指向指針P的指針變量q;輸出*(p++)是先輸出*p,即b[O]的值,再將指針P指向數組的下一個元素b[1];輸出**q是輸出指針P所指單元的內容。

\n

9.A

10.D\r\n

11.C函數fun(intx,inty)的功能是返回x+Y的值。在主函數中,變量a,b,c的初始值分別為1,2,3。因此逗號表達式“a++,b++,a+b”的值等于5,表達式c++的值為3,調用于函數的表達式為“fun(5,3);”,其返回值等于8。

12.A根據算術表達式和運算符的優先級與結合性。表達式“int(x*1000+0.5)/(double)1000”,首先計算“x*1000”,由于x是double類型,1000是整型,所以“x*1000”的結果默認是double類型,即3141.59,加0.5后再執行int的強制轉換,結果為3142。分母“(double)1000”強制轉換為double類型,此時計算“3142/(double)1000”,3142需要轉換成double類型,然后除以1000,結果為3.142000,默認保留小數點后6位。故本題答案為A選項。

13.C

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

15.A[解析]數組說明的一般形式為:類型說明符數組名[常量表達式]。B)中N是變量,不能用變量定義數組長度。C)選項中數組長度是非法的一串數字。定義數組時必須為其指明長度,D)選項中數組長度為空,所以非法。\u3000\u3000

16.B

17.A宏定義寫在函數的花括號外,作用域為其后的程序,通常在文件的最開頭,所以B選項錯|誤。宏名一般用大寫字母,但不是必須用大寫字母,所以C選項錯誤。宏展開不占運行時間,只占編譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值),所以D選項錯誤。故本題答案為A選項。

18.B在C語名中規定進行強制類型轉換的格式是:(類型名)變量名;并且給表達式賦值。

19.D該程序首先定義*a和b[],并進行初始化。主函數中通過外層for循環語句,遍歷字符數組b[],并且將符合if條件語句的字符賦給數組p;for內層循環語句,遍歷字符數組a[]。再將符合if條件語句的結果輸出。因此D選項正確。

20.B

21.驅動模塊驅動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調用或驅動,同時被測試模塊還要去調用其他模塊,前者稱為驅動模塊,后者稱為承接模塊。其中驅動模塊的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果;承接模塊的作用是代替被測模塊,調用其他模塊。

22.軟件開發

23.n/2性表的任何位置插入一個元素的概率相等,即概率為p=1/(n+1),則插入一個元素時所需移動元素的平均次數為E=1/(n+1)(n-i+1)=n/2。

24.611610。6,11,6,10。解析:本題考查自加的前置和后置的區別。

25.重復(循環)重復(循環)解析:結構化程序設計包括3種基本的結構:順序結構、選擇結構和重復結構(循環結構),利用這3種結構就足以表達出各種其他形式結構的程序設計方法。其中利用循環結構,可以簡化大量的程序執行。

26.關系關系

27.空間空間

28.8888解析:C語言規定,以0開頭的整型常量為八進制。另外,在primf()函數中,%X表示以十六進制無符號形式輸出一個整數,且十六進制中的ABCDEF為大寫字母。本題的輸出應該是八進制210的十六進制形式。將八進制轉換為十六進制,可以先將其轉換為二進制。因為1位八進制表示3位二進制,4位二進制表示1位十六進制。(210)8=(10001000)2=(88)16,故本題輸出為880

29.數據流數據流解析:結構化分析方法的實質是著眼于數據流,自頂向下,逐層分解,建立系統的處理流程,以數據流圖和數據字典為主要工具,建立系統的邏輯模型。

30.int**zint*\r\n*z解析:函數希望通過形參z帶回結果,形參z必須是指針類型的。由于返回整型結果,所以第一處填int*;函數返回前必須先把結果通過形參z間接引用傳回,第二處應填*z。

31.存儲結構

32.structnode*structnode*解析:本題中的結構類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結構體指針。

33.30253025解析:本題考核的知識點是變量的存儲屬性和算術運算的應用。本題涉及了自動變量、靜態變量和外部變量。外部變量是定義在所有函數之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結束;靜態變量的存儲空間在程序的整個運行期間是固定的(static),本題函數fun()中staticinta=10定義個一個靜態變量a,此靜態變量a是個靜態的局部變量,即它的值只能在本函數中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統在程序執行過程中自動進行的,auto是自動變量的存儲類別標識符,如果省略auto,系統隱含認為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態的局部變量.算術運算中a+=b++相當于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.i<10或i<9j%3!=0或j%3i<10或i<9\r\nj%3!=0或j%3解析:程序中的j用于存放符合條件的整數,j=i,10+6;求得個位數為6的整數,由此可得出程序的循環次數為i<10,所以[15]處填i<10。然后通過if語句判斷整數是否能被3整除,若不能則繼續下一次循環,若能則輸出該整數,所以[16]處填j%3!=0。

35.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

36.順序結構順序結構解析:結構化程序有3種摹本結構,即順序結構、選擇結構(包括if語句和switch語句)和循環結構(包括for語句、while語句、do…while語句)。

37.類類

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

39.字符串a和b的長度之和字符串a和b的長度之和解析:本題首先通過第一個while循環計算字符串a的長度,再通過第二個循環,將字符串a和b相連,最后返回連接后的總長度。

40.33解析:分析程序運行過程,第1次循環:s=s+i*i=0+1*1=1,i=2;第2次循環:s=s+i*i=1+2*2=5,i=3;第3次循環:s=s+i*i=5+3*3=14,i=4;循環條件不成立輸出i,--i使i的值減1,輸出結果為3。

41.B解析:a[0]是數組元素,不是數組名。

42.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應為整型數據,所以需要對變量f進行強制類型轉換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術運算符、關系運算符之間從高到低的運算優先次序是:!(邏輯“非”)、算術運算符、關系運算符、&&(邏輯“與”)、‖(邏輯“或”)、賦值運算符。根據運算符的優先級與結合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進行賦值。對于選取項B),先計算k什的值,再對其取負數。對于選項D),先計算k>=f的值(為假,即0),再用0與m進行比較,故最終結果為0。

43.D解析:本題定義a為3行X4列的數組,數組的下標是從零開始的,因此本題可用的行下標為0-2,列下標為0-3。a[0][4]的列下標超過了數組的范圍,所以錯誤。

44.C解析:選項A)中case后面的表達式為浮點型,選項D)中case后面的表達式存在字符變量c,故選項A)、D)錯誤;在選項B)中,switch后面的表達式加了分號顯然有錯。

45.B對二叉樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。在遍歷左、右子樹時,注意依舊按照“左子樹一根結點一右子樹”的順序。本題的遍歷順序是這樣的:①首先訪問左予樹:BDEY;②在左子樹BDEY中,也按中序遍歷,先訪問左子樹DY;在左子樹DY中,也按中序遍歷,先訪問左子樹,左子樹沒有,則訪問根結點D,然后訪問右子樹Y;③接著訪問根B,再訪問右子樹E;④訪問左子樹BDEY后,接著訪問根結點A,接著訪問右子樹CFXZ;⑤右子樹CFXZ的訪問順序同理可得:FCZX。

46.A

47.D解析:本題首先使指針指向數組a的首地址。選項A越界;選項B中,a并非指針變量;選項C使數組a的地址加1;選項D取數組元素a[0]的地址。

48.B解析:“#definer16”的作用是指定用標識符r來代替16,因此程序編譯時只編譯#if部分,故程序運行時,打印輸出十六進制的32,即20。

49.B解析:本程序首先定義了靜態字符數組a,然后將指針p指向數組a的首地址。

第1次for循環,p=a,p指向數組的第1個元素,*p是取指針p所指地址的內容,輸出1;第2次for循環,p=p+2,則p指向數組的第3個元素,*p是取指針p所指地址的內容,輸出n;第3次for循環,p=p+2,則p指向數組的第5個元素,*p是取指針p所指地址的內容,輸出u;第4次for循環,p=p+2,則p指向數組的第7個元素,*p是取指針p所指地址的內容,輸出g,結束循環。

50.A解析:選項A)正確,外模式是用戶的數據視圖,也就是用戶所見到的數據模式;選項B)不正確,全局數據視圖的描述稱為概念模式,即數據庫中全部數據的整體邏輯結構的描述;選項C)不正確,物理存儲數據視圖的描述稱為內模式,即數據庫在物理存儲方面的描述;選項D)不正確,存儲模式即為內模式。

51.B解析:p被定義為指針型變量,被賦值為數組a的首地址加8,即指向元素'9'。將指針向前移3位,輸出'6'后的字符串,遇到'\\0'結束輸出,即6789。

52.D解析:本題主要是考查帶參數的宏定義及其相關運算。本題中宏運算過程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

53.D解析:由題意可知,小寫字符a和大寫字符A的ASCII代碼相差為32,所以選項C)能將大寫字符c的ASCII代碼轉換為小寫字符c的ASCⅡ代碼;選項A)和C)左側的表達式都是大寫字符c與大寫字符A的差與'a'的ASCII代碼的和就是小寫字符c的ASCII代碼。而選項D)中應該是加上'a',而不是減去'a'。

54.D

55.D解析:本題考查數組的兩個知識點:①在C語言中,數組元素的個數是確定的,不允許隨機變動,數組定義好之后,它所能容納的元素的個數也就確定了;②同一個數組中所有元素的類型是一樣的。

56.B解析:根據數據模型的應用的不同目的,模型分為概念模型和結構模型。概念模型是按用戶的觀點對數據和信息建模。結構模型是按計算機系統觀點對數據建模。數據模型按數據結構分為層次模型、網狀模型、關系模型和面向對象數據模型。

57.C解析:選項A中應將y和m前面的函數的類型說明符去掉,故選項A不正確;選項B中函數傳了2個參數,其中一個為整型—個為浮點型,而fun()函數在定義時聲明的2個參數,一個為整型一個為雙精度型,其參數類型不一致,故選項B不正確;選項D在調用函數時,不應該再聲明其返回類型,故選項D不正確。所以,4個選項中選項C符合題意.

58.A解析:本題主要考查了字符輸入輸出函數getchar和putchar的使用。getchar函數用來從標準輸入設備上讀入一個字符,putchar(c)函數是將字符變量c中的字符輸出到標準輸出設備上。并且字符可以看作整數參與運算。

59.C解析:軟件測試的目標是在精心控制的環境下執行程序,以發現程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經濟性。其中沒有測試的可靠性這一說法。注意:軟件測試與軟件調試的概念,以及相應的方法。

60.B解析:本題考查函數的綜合知識。首先,我們可以利用強制轉換類型轉換運算符將一個表達式轉換成所需類型。如:(double)a是將a轉換成double類型;(int)(x+y)是將x+y的值轉換成整型。

本題可按部就班地逐步運算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

61.B

62.C本題中將8賦值給字符變量a,則a的二進制為”00001000”,a>>3的位運算是把a向右移動三位,結果為”00000001”,輸出其十進制的值1。

63.B

64.B本題中,structex是結構體類型名,exam-Ple是結構體變量名。

65.A\n本題考查了多重for循環。當(i*j)>3時,跳出循環,本題中i=1,j=3,i*

溫馨提示

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

評論

0/150

提交評論