2022年山東省濟南市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2022年山東省濟南市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2022年山東省濟南市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2022年山東省濟南市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2022年山東省濟南市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年山東省濟南市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.已知10個元素(54,28,16,34,,73,62,95,60,26,43),按照依次插入的方法生成一棵二叉排序樹,查找值為62的結點所需比較次數為()

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

2.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運行后的輸出結果是

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

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

C.1,2,3,4,5,6,7,8,

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

3.一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()

A.不確定B.n-i+1C.iD.n-i

4.利用fseek函數可實現的操作是()。

A.實現文件的順序讀寫B(tài).改變文件的位置指針C.實現文件的隨機讀寫D.以上答案均正確

5.定義根節(jié)點深度為1,有n個元素的完全二叉樹的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

6.設有以下語句

charx=3,y=6,z;

z=x^y<<2;

則z的二進制值是

A.00010100B.00011011C.00011100D.00011000

7.運行下面程序段的輸出結果是().A.A.Set

B.Setup

C.Setup

D.'S''e''t'

8.交換兩個變量的值,不允許用臨時變量,應該使用下列()位運算符。

A.&.B.^C.||D.~

9.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類型

D.C語言中既沒有邏輯類型也沒有集合類型

10.某堆棧的輸入序列為a,b,c,d,下面的四個序列中,不可能是它的輸出序列的是()。

A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b

11.表達式“3.6-5/2+1.2+5%2”的值是()。

A.4.3B.4.8C.3.3D.3.8

12.對于"int*pa[5];"的描述中,正確的是()。

A.pa是一個指向數組的指針,所指向的數組是5個int型元素

B.pa是一個指向某數組中第5個元素的指針,該元素是int型變量

C.pa[5]表示某個元素的第5個元素的值

D.pa是一個具有5個元素的指針數組,每個元素是一個int型指針

13.有以下程序:#includeMain(){charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII碼為65,程序運行后的輸出結果是()。A.E,68.B.D.69C.E,DD.輸出無定值

14.關于C語言中數的表示,以下敘述中正確的是()。

A.只有整型數在允許范圍內能精確無誤地表示,實型數會有誤差

B.只要在允許范圍內整型數和實型數都能精確地表示

C.只有實型數在允許范圍內能精確無誤地表示,整形數會有誤差

D.只有用八進制表示的數才不會有誤差

15.下列語句中存在語法錯誤的是()。

A.charss[6][20];ss[1]=“right?”;

B.charss[][20]={“right?”};

C.char*ss[6];ss[1]=“right?”;

D.char*ss={“right?”};

16.有下列程序:程序執(zhí)行后的輸出結果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49

17.

18.若a是數值類型,則邏輯表達式“(a==1)||(a!=1)”的值是()。

A.1B.0C.2D.不知道a的值,不能確定

19.設abcdef以所給的次序進棧,若在進棧操作時,允許退棧操作,則下面得不到的序列為()。

A.fedcbaB.bcafedC.dcefbaD.cabdef

20.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運行后的輸出結果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

二、2.填空題(20題)21.棧的3種基本運算是:入棧、退棧和______。

22.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于______的聯(lián)系。

23.若有定義:doubleW[10],則W數組元素下標的上限為【】,下限為【】。

24.下面程序的運行結果是【】。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];intI;for(I=0;I<SIZE;I++)s[I]=′A′+I+321;

sub(s,7,SIZE-1);

for(I=0;I<SIZE;I++)printf("%c",s[I]);

printf("\n");}

sub(char*a,intt1,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;}}

25.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數據域(data)和指針域(next),數據域為整型。以下函數求出鏈表中所有鏈結點數據域的和值,作為函數值返回。請在橫線處填入正確內容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

26.有以下語句段

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>

n1=10

n2=20

27.設有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內容,請將語句補充家整。

seanf("%d",【】);

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

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

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k;N*N*5;printf("%d\n"k);

}

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

main()

{inti=010,j=10;

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

30.下面的程序實現的是從指針p所指向的地址的n個數中,找出最大的和最小的數據,請?zhí)羁铡?/p>

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

31.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

32.有以下程序:

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后的輸出結果是【】。

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]={1,2,3,4,5),s;

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

}

34.在循環(huán)中,continue語句與break語句的區(qū)別是:______語句只是結束本次循環(huán),然后進行循環(huán)的條件判定。

35.當輸入19、2時,下列程序的運行結果為【】;輸入254、16時,則程序的運行結果是【】。

main()

{chardata_symbols[17]="0123456789abcdefghijklmnopqrstuvwxyz";

inti=0,t,subscript,data_converted[32];

longnumber;

while(1)

{scanf("%ld,%d",&number,&t);

if(number>=O&&t>=2&&t<=16)break;

}

do

{dataconverted[i++]=number%t;

number=number/t;

}

while(number!=0);

for(--i;i>=0;--i)

{subscript=data_converted[i];

printf("%c",data_symbols[subscript]);

}

printf("\n");

}

36.已知字母A的ASCII碼為65。以下程序運行后的輸出結果是______。

main()

{chara,b;

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

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

}

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

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

38.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。

39.請用位運算實現下述目標(設16位二進制數的最低位為零位):

(1)輸出無符號正整數m的第i個二進制位的數值。

(2)將m的第i個二進制位置1,其余的位不變,然后輸出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

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

k=【】;

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

k=pow(2,i);

m=【】;

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

}

40.在面向對象方法中,【】描述的是具有相似屬性與操作的一組對象。

三、1.選擇題(20題)41.若有下面的說明和定義,則sizeof(structaa)的值是structaa{intrl;doubler2;floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;

A.30B.29C.24D.22

42.設變量已正確定義并賦值,以下正確的表達式是()。

A.x=y*5=x+z

B.int(15.8%5.

C.x=y+z+5,++y

D.x=25%5.0

43.以下能正確對整型數組賦初值的語句是______。

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

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

C.inta[4]={'1','2','3','4');

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

44.已有定義inta=-2;和輸出語句printf("%81x",a);以下正確的敘述是()。

A.整型變量的輸出形式只有%d一種

B.%x是格式符的一種,它可以適用于任何一種類型的數據

C.%x是格式符的一種,其變量的值按十六進制輸出,但%81x是錯誤的

D.%81x不是錯誤的格式符,其中數字8規(guī)定了輸出字段的寬度

45.算法的時間復雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數D.算法程序中的指令條數

46.若有以下定義,則表達式a*b+d-c值的類型為______。chara;intb;floatc;doubled;

A.floatB.intC.charD.double

47.以下不屬于對象的基本特點的是()

A.分類性B.多態(tài)性C.繼承性D.封裝性

48.有以下程序:fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(P[i][0]=='T')n++;returnn;}main(){charstr[][10]={"Mon","Tue","wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序執(zhí)行后的輸出結果是()。

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

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

A.僅僅搜索當前目錄

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

C.在標準目錄下查找指定的文件

D.先在源程序所在目錄搜索,如查找不到,再按系統(tǒng)指定的標準目錄查找

50.以下不能對二維數組a進行正確初始化的語句是

A.inta[2][3]={0};

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

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

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

51.若已建立下面的鏈表結構,指針p、s分別指向圖中所示的結點,則不能將s所指的結點插入到鏈表末尾的語句組是()

A.s->next=NULL;p=p->next;p->next=s;

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

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

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

52.有以下程序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

53.已知intt=0;while(t=1){…}則以下敘述正確的是()。

A.循環(huán)控制表達式的值為0B.循環(huán)控制表達式的值為1C.循環(huán)控制表達式不合法D.以上說法都不對

54.有以下程序:#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

55.執(zhí)行下面的程序段intx=40;charz='B';intB;B=((x&0xff)&&(z>'a'));后,B的值為()

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

56.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結果為()。

ch='b';

k=10;

printf("%x,%o,",ch,ch,k);

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

A.因變量類型與格式描述符的類型不匹配,輸出無定值

B.輸出項與格式描述符個數不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

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

A.調用函數時,實參可以是表達式

B.調用函數時,實參與形參可以共用內存單元

C.調用函數時,將實參的值復制給形參,使實參變量和形參變量在數值上相等

D.調用函數時,實參與形參的類型必須一致

58.下列選項中不屬于結構化程序設計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復用

59.數據的存儲結構是指

A.數據所占的存儲空間量B.數據的邏輯結構在汁算機中的表示C.數據在計算機中的順序存儲方式D.存儲在外存中的數據

60.下列程序執(zhí)行后的輸出結果是

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=1;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2];)

A.3B.6C.9D.隨機數

四、選擇題(20題)61.若有代數式(其中e僅代表自然對數的底數,不是變量),則以下能夠正確表示該代數式的c語言表達式是()。

62.算法分析的目的是()。

A.找出數據結構的合理性B.找出算法中輸入和輸出之間的關系C.分析算法的易懂性和可靠性D.分析算法的效率以求改進

63.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

64.

65.下列關于數據庫設計的敘述中,正確的是()。

A.在需求分析階段建立數據字典

B.在概念設計階段建立數據字典

C.在邏輯設計階段建立數據字典

D.在物理設計階段建立數據字典

66.

67.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

68.設有定義:

69.以下語句的輸出結果是()。

inta=-1,b=4,k;

k=(++a<0)!(b--<=0);

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

A.1,0,4B.1,0,3C.0,0,3D.0,0,4

70.

71.

72.若變量已正確定義為int型,要通過語句給a賦值l、+給b賦值2、給c賦值

3,以下輸入形式中錯誤的是()(注:口代表一個空格符)。

73.有以下程序:

執(zhí)行時輸入:aBeDefG##<;回車>;,則輸出結果是()。

A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bedefgh

74.

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

main

{inta=3:

printf("%d\n",(a+a-=a*a));

}

A.-6B.12C.0D.-12

75.

76.

下列程序的運行結果是()。

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

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

}

A.s=3B.s=4C.s=5D.無輸出結果

77.有以下程序:

fun(inta[],intm,intn)

{inti;

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

a[i+1]=a[i]+3;

returna[i+1];

}

voidmain()

{

inti,a[6]={2,4,6,8,10,12};

fun(a,2,5);

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

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

}

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

A.24691315B.24691215C.249121518D.249121415

78.

79.下列是用戶自定義標識符的是()。

A._wlB.3_xyC.intD.LINE-3

80.以下語句的執(zhí)行結果是()。

intm=0,s=1;

do{

s+=m++;

}while(m<6);

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

A.17B.16C.15D.18

五、程序改錯題(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.假定輸入的字符串中只包含字母和*號。請編寫函數proc(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,若字符串中的內容為****a*bc*def*g。***,刪除后,字符串中的內容則應當是****a*bc*def*g。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.B

2.D解析:本題考查循環(huán)和指針做函數參數,程序的功能是將a[0]和a[7]對換,a[1]和a[6]對換,a[2]和a[5]對換,a[3]和a[4]對換,最后輸出。

3.B

4.D解析:改變文件位置指針函數fseek()的功能:①改變文件的位置指針;②輔助實現文件的順序讀寫;③輔助實現文件的隨機讀寫。

5.B

6.B本題主要考查位運算?!鞍次划惢颉边\算(^)是雙目運算符,其功能是把參與運算的兩數各對應的二進制位相異或,它在操作時,兩對應位相同結果為0,不同則為1?!白笠啤边\算(<<)的功能是把“<<”左邊的運算數的各二進制位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0。左移時,若左端移出的部分不包含有效二進制數1,則每左移一位,相當于移位對象乘以2。

本題中,有三個字符型的變量x,y,z,其中x和y的值分別為3和6。先轉換為二進制數分別為00000011和00000110。本題中需要注意的是邏輯左移運算符的優(yōu)先級比按位異或運算符的優(yōu)先級高,因此,先將y進行運算邏輯左移2位操作,得到的結果為00011000,然后進行按位異或運算,得到最后的結果是00011011。本題正確的答案選B。

7.A

8.B按邏輯位運算特點:①用按位與運算將特定位清為0或保留特定位;②用按位或運算將特定的位置為1;③用按位異或運算將某個變量的特定位翻轉或交換兩個變量的值。

9.D解析:在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項A和選項C不正確,C語言中沒有集合類型,故選項B不正確。所以,D選項為所選。

10.D

11.D先計算“5/2”,結果取整數值2;然后計算“3.6-2”,結果與高精度數據保持一致,即1.6;再計算“1.6+1.2”,結果為2.8;接著計算“5%2”,結果為1;最后計算“2.8+1”,結果為3.8。故本題答案為D選項。

12.D

13.A本題目中字符變量c1是字符'A'的ASCII碼加上4,即69所對應的字符E'。字符變量c2是字符'A'的ASCII碼加上3,即68所對應的字符D'。但是打印輸出時,c1以%c的格式輸出,所以是E,c2以%d的格式輸出,所以是68。

14.A當數據類型是實數時,在存儲過程中,當小數部分無限長時,會存在小數部分的截斷,會存在誤差,所以答案選擇A。

15.A數組定義后,不可以對數組整體賦值。ss是二維數組,因ss[1]是一維字符數組,相當于一維數組的數組名,是常量,不能重新賦值,A選項錯誤。B選項和D選項是定義時對數組初始化。在C選項中,將字符串在內存中的首地址賦給指針數組的一個元素。故本題答案為A選項。

16.B對于題干中的宏,替換如下:S1(a+b,a+b),&+1>)等價于a+b*a+b,即2+5*2+5,等于17;S1(a+b,b+a),等價于a+b*b+a,即2+5*5+2,等于29;S2(a+b,a+b)等價于(a+b)*(a+b),即(2+5)*(2+5),等于49;S2(a+b,b+a)等價于(a+b)*(b+a),即(2+5)*(5+2),等于49。本題答案為B選項。

17.A

18.A邏輯或“||”要求兩邊的運算對象有一個非零值,結果就為真。變量a的值不確定,但是若a為1,則左邊運算對象的值為1;若a不為1,則右邊運算對象的值為1,所以總能保證一邊為非零值。故本題答案為A選項。

19.D

20.D解析:本題中首先定義一個字符數組s,并將字符串'ABCD'存到數組s中,定義了一個字符指針變量p,在接下來for循環(huán)中,循環(huán)體共執(zhí)行了三次,第一次p指向s[1],所以此時輸出的p所指字符串的值為BCD,第二次循環(huán)p指向s[2],此時輸出p所指的字符串的值為CD,第三次循環(huán)p指向s[3],此時輸出的p所指的字符串的值為D。所以,4個選項中選項D符合題意。

21.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。

22.1對多(或1:N)1對多(或1:N)

23.90

24.abcdefglkjIhabcdefglkjIh解析:本題主要考查了字符變量可參與的運算。因為字符在計算機中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術運算等,某字符的大寫字母的ASCII碼值比它對應的小寫字母ASCII碼值小32。

25.structlink*headstructlink*head解析:考查用指針引用結構體變量成員數據的方法。因為本題中是用結構體變量構成了鏈表,所以要從鏈表頭節(jié)點,逐個節(jié)點的引用結構體的數據域,需要有指向結構體變量的指針,依次指向各個節(jié)點,即p=p->next,而用指針引用結構體成員數據的方法為:p->data。

26.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d\nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d解析:printf函數有兩種參數:格式控制參數和輸出項參數,其中格式控制參數由兩種成分組成:格式說明和普通字符,普通字符將被簡單地復制顯示,格式說明項將引起一個輸出參數項的轉換與顯示,它是由“%”引出并以一個類型描述符結束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數,所以格式說明項為%d,也可以在%與d之間加上域寬,另外還要在每行輸出結束時加轉義字符\\n進行換行。所以,應填寫n1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2dn或n1=%2d\\nn2=%2d。

27.k[7]*kk[7]*k解析:scanf()函數有兩個參數,第—個參數是格式控制部分(格式控制部分是字符串,主要由“%”號和格式字符組成)第二個參數是一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個空格處位于scanf()函數的第二個參數處,所以,第一個空應該填地址k。printf()函數有兩個參數,第一個參數是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成的,通常是字符常量。非格式字符作為輸出數據的間隔,輸出時原樣輸出)第二個參數為一輸出表達式表(輸出表達式表是由若干個需要計算和輸出的表達式組成的,表達式之間用逗號分隔開)。而第二個空位于printf()函數的第二個參數處,所以應該填*K。

28.5555解析:宏替換不是函數調用,所以不能因為M被定義為5,而N被定義為M+M而武斷地認為N的值就是5+5=10。宏替換就是簡單的字符串替換,以本題為例:因為N被定義為M+M,所以k=N*N*5;語句展開后為k=M+M*M+M*5;。又因為M被定義為5,所以再展開后為k=5+5*5+5*5;?,F在不難計算出,這個表達式的結果為k=55。故最終輸出結果是55。

29.8108,10解析:以0開頭的是八進制數,輸出時將其轉換成十進制數。

30.q<p+nq<p+n解析:考查對于函數的地址傳遞的掌握情況。通過地址傳遞可以在被調函數中對調用函數中的變量進行引用。

31.自然連接自然連接解析:在關系運算中,自然連接運算是對兩個具有公共屬性的關系所進行的運算。

32.00解析:for循環(huán)執(zhí)行完成后t=5×4×3×2×1×0=0。

33.1515解析:通過遞歸調用f函數實現了數組各元素之和,即a[4]+a[2]+a[1]+a[0]=15。

34.continuecontinue解析:continue語句只是結束本次循環(huán),然后進行循環(huán)的條件判定。break語句是終止整個循環(huán)的執(zhí)行,不再進行條件判定。

35.10011fe

36.67G67G解析:字符型變量中保存的是某個字符的ASCII碼值,是一個整數,因此字符型變量的算術運算和整型變量并無區(qū)別。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分別按十進制整數和字符形式輸出a和b的值為:67G。

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

38.結構結構解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結構進行測試。

39.#include"math.h"m>>i&1m|k

40.類類解析:在面向對象方法中,類描述的是具有相似屬性與操作的一組對象。

41.D解析:本題主要考查結構體變量和共用體變量所占存儲空間大小的計算方法。結構體變量所占內存長度是各成員占的內存長度之和,每個成員分別占有自己的內存單元;共用體變量所占的內存長度等于最長的成員的長度。結構體變量aa中,成員r1占2個字節(jié),r2占8個字節(jié),r3占4個字節(jié),共用體ua占8個字節(jié),所以共占用2+8+4+8=22個字節(jié)。

42.C解析:求余運算符'%'兩邊的運算對象必須是整型,而選項B)和D)中'%'兩邊的運算對象有浮點整數據,所以選項B)和D)是錯誤的表達式。在選項A)中賦值表達式的兩邊出現相同的變量x,也是錯誤的。選項C)是一個逗號表達式,所以正確答案為C)。

43.C解析:A、B定義的數組長度小于花括號中數據的個數,C是將數字字符的ASCII碼值作為整數賦給整型數組的各元素,D是定義二維數組,第二維的長度不能缺省。

44.D解析:整型變量的輸出形式有:%d,%o,%x,%u等,%x是以十六進制無符號形式輸出整數。十六進制數同樣也可以像%md一樣按%mlx輸出指定寬度的長整型數。

45.C解析:算法的時間復雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據一個算法所編制出的程序之中,其指令條數往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數來度量算法的時間復雜度。所以,本題正確答案為C。

46.D解析:在C語言中,不同數據類型的數據運算時要先轉換成相同的數據類型再參與運算。在上述表達式中,字符型先轉換成整數得到a*b,整數再轉換成雙精度型執(zhí)行+d,單精度float型數據c先轉換成雙精度double型數據后參與減法運算。結果是double型。

47.C解析:對象的基本特點包括;標識惟一性、分類性、多態(tài)性、封裝性和獨立性等。繼承性不屬于對象的基本特點。

48.B解析:fun()函數實現的功能為查找二維字符數組第一列中為字符T的個數。二維數組的地址作為函數的實參。

49.C解析:本題考查文件包含的知識點:格式1:#include(文件名),預處理程序在標準目錄下查找指定的文件;格式2:#include“文件名”,預處理程序首先在引用被包含文件的源文件所在的目錄中尋找指定的文件,如查找不到,再按系統(tǒng)指定的標準目錄查找。

50.C解析:關于二維數組的初始化,我們需要掌握如下方法:①所賦初值個數與數組元素的個數相同;②所賦初值行數少于數組行數時,系統(tǒng)將自動給后面各行的元素補初值0;③在給二維數組賦初值時可以不用行花括號對。選項C)應該是inta[3][2]={{1,2},{3,4},{5,6,}};

51.C

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

53.B解析:t=1是將t賦值為1,所以循環(huán)控制表達式的值為1。判斷t是否等于1時,應用t==1,注意“=”與“==”的用法。

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

55.A

56.C解析:第1個printf函數,格式說明的個數是2,而輸出項的個數是3,所以對于多余的輸出項k不予輸出;第2個printf函數,有兩個%說明,第1個%后面的字符要原樣輸出。

57.B

\n本題考查函數調用的基本概念。調用函數時,實參的形式可以是具體的數值,也可以是表達式。實參將數值或表達式的值傳遞給形參,因而兩者的類型必須保持一致;形參在運算過程中會發(fā)生改變,但不一定會影響到實參值,所以可知兩者不共用內存單元。

\n

58.D解析:20世紀70年代以來,提出了許多軟件設計方法,主要有①逐步求精:對復雜的問題,應設計一些子目標作過渡,逐步細化;②自頂向下:程序設計時應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。不要一開始就過多追求眾多的細節(jié),先從最上層總目標開始設計,逐步使問題具體化;⑧模塊化:一個復雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為分目標,再進一步分解為具體的小目標,把每個小目標稱為一個模塊,而可復用是面向對象程序設計的一個優(yōu)點。

59.B解析:數據的存儲結構是數據元素在計算機存儲器內的表示。數據的存儲結構是邏輯結構用計算機語言的實現,即建立數據的機內表示。

60.B解析:本題中,a[1][2]是二維數組中的第6個元素,對應for循環(huán)中i的值為5,p[5]=5+1。

61.AB)選項中函數pow(x,e)錯誤,應該直接使用exp(x)i垂i數。c)選項中函數abs(n^x+e^x)錯誤,應該使用fabs()返回浮點數的絕對值。D)選項中pow(x,n)參數順序錯誤。本題正確答案為A)。

62.D解析:算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應的數量級,常用時間復雜度和空間復雜度表示。分析算法的目的就是要降低算法的時間復雜度和空間復雜度;提高算法的執(zhí)行效。率。

63.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

64.AAAAAAAACCCCCCCCDDDDEEEEEEEEEFFHHIIIIIIJJJKKLLMNNNNNNOOOOOOOPPPPQRRRRRRSSSSSTTTTTTUUUUUVXXY

65.A數據字典是在需求分析階段建立,在數據庫設計過程中不斷修改、充實和完善的。故答案為A選項。

66.B

67.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。

68.A字符數組不能整體賦值,所以A)錯誤。

69.D

70.A

71.C

72.A本題考查的是格式化輸入函數scanf()基本用法。使用該語句時,要求除格式控制符以外的字符都要原樣輸入,

“,”為非格式符,要原樣輸入。選項A)中沒有輸入非格式符“,”,所.以是不正確的。

73.C循環(huán)的作用是將輸入的字符串轉化為大寫,9etchar()每次讀入一個字符,putchar()每次輸出一個字符,當遇到#字符結束。putchar(++C),表示將字符變量C加1后輸出。因此,輸入aBcDefG##,得到的結果是BCDEFGH。故答案為c選項。

74.D

\n本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項。

\n

75.D

76.B

\n運行程序,當k=7時switch(7)執(zhí)行case:7,s++后s=1,break跳出。k--,k=7繼續(xù)循環(huán)switch(6),執(zhí)行case6;直接跳出循環(huán),k--變成5,繼續(xù)循環(huán)switch(5),執(zhí)行case5后面的語句s+=2,也相當于s=s+2,此時s為3,break跳出,k變?yōu)?,繼續(xù)循環(huán),執(zhí)行case4為空,繼續(xù)執(zhí)行case7;s++為4跳出循環(huán),k--變?yōu)?,繼續(xù)循環(huán),執(zhí)行case3,空語句往下執(zhí)行case6,跳出,k--為2,繼續(xù)循環(huán),執(zhí)行case2;空語句往下執(zhí)行case3,空語句再執(zhí)行case7,跳出循環(huán),k--為1不符合循環(huán),退出,此時S=4。

\n

77.B函數的功能是將數組的某個區(qū)域內的元素加3,賦給后一個元素,然后返回;題目是從a[2]到a[5]調用函數,a[2]=6,所以a[3]=6+3=9,a[4]=9+3=12,a[5]=12+3=15,所以結果為B

78.A

79.Ac語言規(guī)定用戶標識符由英文字母、數字和下劃線組成,且第一個字符必須是字母或下劃線,由此可見選項S),D)是錯的;此外,C語言不允許用戶將關鍵字作為標識符,而選項c)中的int是c語言的關鍵字。

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.

【解析】要刪除字符串尾部的所有*,只要將尾部所有*中的第一個改為字符串結束符即可。首先,將字符串指針移動到字符串最后一個位置,檢查最后一個字符,是*則將指針前移,否則將指針后移一個位置賦值作為結束符。

2022年山東省濟南市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.已知10個元素(54,28,16,34,,73,62,95,60,26,43),按照依次插入的方法生成一棵二叉排序樹,查找值為62的結點所需比較次數為()

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

2.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運行后的輸出結果是

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

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

C.1,2,3,4,5,6,7,8,

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

3.一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()

A.不確定B.n-i+1C.iD.n-i

4.利用fseek函數可實現的操作是()。

A.實現文件的順序讀寫B(tài).改變文件的位置指針C.實現文件的隨機讀寫D.以上答案均正確

5.定義根節(jié)點深度為1,有n個元素的完全二叉樹的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

6.設有以下語句

charx=3,y=6,z;

z=x^y<<2;

則z的二進制值是

A.00010100B.00011011C.00011100D.00011000

7.運行下面程序段的輸出結果是().A.A.Set

B.Setup

C.Setup

D.'S''e''t'

8.交換兩個變量的值,不允許用臨時變量,應該使用下列()位運算符。

A.&.B.^C.||D.~

9.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類型

D.C語言中既沒有邏輯類型也沒有集合類型

10.某堆棧的輸入序列為a,b,c,d,下面的四個序列中,不可能是它的輸出序列的是()。

A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b

11.表達式“3.6-5/2+1.2+5%2”的值是()。

A.4.3B.4.8C.3.3D.3.8

12.對于"int*pa[5];"的描述中,正確的是()。

A.pa是一個指向數組的指針,所指向的數組是5個int型元素

B.pa是一個指向某數組中第5個元素的指針,該元素是int型變量

C.pa[5]表示某個元素的第5個元素的值

D.pa是一個具有5個元素的指針數組,每個元素是一個int型指針

13.有以下程序:#includeMain(){charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII碼為65,程序運行后的輸出結果是()。A.E,68.B.D.69C.E,DD.輸出無定值

14.關于C語言中數的表示,以下敘述中正確的是()。

A.只有整型數在允許范圍內能精確無誤地表示,實型數會有誤差

B.只要在允許范圍內整型數和實型數都能精確地表示

C.只有實型數在允許范圍內能精確無誤地表示,整形數會有誤差

D.只有用八進制表示的數才不會有誤差

15.下列語句中存在語法錯誤的是()。

A.charss[6][20];ss[1]=“right?”;

B.charss[][20]={“right?”};

C.char*ss[6];ss[1]=“right?”;

D.char*ss={“right?”};

16.有下列程序:程序執(zhí)行后的輸出結果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49

17.

18.若a是數值類型,則邏輯表達式“(a==1)||(a!=1)”的值是()。

A.1B.0C.2D.不知道a的值,不能確定

19.設abcdef以所給的次序進棧,若在進棧操作時,允許退棧操作,則下面得不到的序列為()。

A.fedcbaB.bcafedC.dcefbaD.cabdef

20.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運行后的輸出結果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

二、2.填空題(20題)21.棧的3種基本運算是:入棧、退棧和______。

22.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于______的聯(lián)系。

23.若有定義:doubleW[10],則W數組元素下標的上限為【】,下限為【】。

24.下面程序的運行結果是【】。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];intI;for(I=0;I<SIZE;I++)s[I]=′A′+I+321;

sub(s,7,SIZE-1);

for(I=0;I<SIZE;I++)printf("%c",s[I]);

printf("\n");}

sub(char*a,intt1,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;}}

25.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數據域(data)和指針域(next),數據域為整型。以下函數求出鏈表中所有鏈結點數據域的和值,作為函數值返回。請在橫線處填入正確內容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

26.有以下語句段

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>

n1=10

n2=20

27.設有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內容,請將語句補充家整。

seanf("%d",【】);

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

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

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k;N*N*5;printf("%d\n"k);

}

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

main()

{inti=010,j=10;

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

30.下面的程序實現的是從指針p所指向的地址的n個數中,找出最大的和最小的數據,請?zhí)羁铡?/p>

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

31.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

32.有以下程序:

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后的輸出結果是【】。

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]={1,2,3,4,5),s;

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

}

34.在循環(huán)中,continue語句與break語句的區(qū)別是:______語句只是結束本次循環(huán),然后進行循環(huán)的條件判定。

35.當輸入19、2時,下列程序的運行結果為【】;輸入254、16時,則程序的運行結果是【】。

main()

{chardata_symbols[17]="0123456789abcdefghijklmnopqrstuvwxyz";

inti=0,t,subscript,data_converted[32];

longnumber;

while(1)

{scanf("%ld,%d",&number,&t);

if(number>=O&&t>=2&&t<=16)break;

}

do

{dataconverted[i++]=number%t;

number=number/t;

}

while(number!=0);

for(--i;i>=0;--i)

{subscript=data_converted[i];

printf("%c",data_symbols[subscript]);

}

printf("\n");

}

36.已知字母A的ASCII碼為65。以下程序運行后的輸出結果是______。

main()

{chara,b;

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

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

}

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

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

38.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。

39.請用位運算實現下述目標(設16位二進制數的最低位為零位):

(1)輸出無符號正整數m的第i個二進制位的數值。

(2)將m的第i個二進制位置1,其余的位不變,然后輸出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

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

k=【】;

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

k=pow(2,i);

m=【】;

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

}

40.在面向對象方法中,【】描述的是具有相似屬性與操作的一組對象。

三、1.選擇題(20題)41.若有下面的說明和定義,則sizeof(structaa)的值是structaa{intrl;doubler2;floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;

A.30B.29C.24D.22

42.設變量已正確定義并賦值,以下正確的表達式是()。

A.x=y*5=x+z

B.int(15.8%5.

C.x=y+z+5,++y

D.x=25%5.0

43.以下能正確對整型數組賦初值的語句是______。

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

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

C.inta[4]={'1','2','3','4');

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

44.已有定義inta=-2;和輸出語句printf("%81x",a);以下正確的敘述是()。

A.整型變量的輸出形式只有%d一種

B.%x是格式符的一種,它可以適用于任何一種類型的數據

C.%x是格式符的一種,其變量的值按十六進制輸出,但%81x是錯誤的

D.%81x不是錯誤的格式符,其中數字8規(guī)定了輸出字段的寬度

45.算法的時間復雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數D.算法程序中的指令條數

46.若有以下定義,則表達式a*b+d-c值的類型為______。chara;intb;floatc;doubled;

A.floatB.intC.charD.double

47.以下不屬于對象的基本特點的是()

A.分類性B.多態(tài)性C.繼承性D.封裝性

48.有以下程序:fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(P[i][0]=='T')n++;returnn;}main(){charstr[][10]={"Mon","Tue","wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序執(zhí)行后的輸出結果是()。

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

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

A.僅僅搜索當前目錄

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

C.在標準目錄下查找指定的文件

D.先在源程序所在目錄搜索,如查找不到,再按系統(tǒng)指定的標準目錄查找

50.以下不能對二維數組a進行正確初始化的語句是

A.inta[2][3]={0};

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

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

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

51.若已建立下面的鏈表結構,指針p、s分別指向圖中所示的結點,則不能將s所指的結點插入到鏈表末尾的語句組是()

A.s->next=NULL;p=p->next;p->next=s;

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

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

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

52.有以下程序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

53.已知intt=0;while(t=1){…}則以下敘述正確的是()。

A.循環(huán)控制表達式的值為0B.循環(huán)控制表達式的值為1C.循環(huán)控制表達式不合法D.以上說法都不對

54.有以下程序:#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

55.執(zhí)行下面的程序段intx=40;charz='B';intB;B=((x&0xff)&&(z>'a'));后,B的值為()

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

56.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結果為()。

ch='b';

k=10;

printf("%x,%o,",ch,ch,k);

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

A.因變量類型與格式描述符的類型不匹配,輸出無定值

B.輸出項與格式描述符個數不符,輸出為0值或不定值

C.62,142,k=%d

D.62,142,k=%10

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

A.調用函數時,實參可以是表達式

B.調用函數時,實參與形參可以共用內存單元

C.調用函數時,將實參的值復制給形參,使實參變量和形參變量在數值上相等

D.調用函數時,實參與形參的類型必須一致

58.下列選項中不屬于結構化程序設計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復用

59.數據的存儲結構是指

A.數據所占的存儲空間量B.數據的邏輯結構在汁算機中的表示C.數據在計算機中的順序存儲方式D.存儲在外存中的數據

60.下列程序執(zhí)行后的輸出結果是

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=1;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2];)

A.3B.6C.9D.隨機數

四、選擇題(20題)61.若有代數式(其中e僅代表自然對數的底數,不是變量),則以下能夠正確表示該代數式的c語言表達式是()。

62.算法分析的目的是()。

A.找出數據結構的合理性B.找出算法中輸入和輸出之間的關系C.分析算法的易懂性和可靠性D.分析算法的效率以求改進

63.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

64.

65.下列關于數據庫設計的敘述中,正確的是()。

A.在需求分析階段建立數據字典

B.在概念設計階段建立數據字典

C.在邏輯設計階段建立數據字典

D.在物理設計階段建立數據字典

66.

67.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

68.設有定義:

69.以下語句的輸出結果是()。

inta=-1,b=4,k;

k=(++a<0)!(b--<=0);

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

A.1,0,4B.1,0,3C.0,0,3D.0,0,4

70.

71.

72.若變量已正確定義為int型,要通過語句給a賦值l、+給b賦值2、給c賦值

3,以下輸入形式中錯誤的是()(注:口代表一個空格符)。

73.有以下程序:

執(zhí)行時輸入:aBeDefG##<;回車>;,則輸出結果是()。

A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bedefgh

74.

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

main

{inta=3:

printf("%d\n",(a+a-=a*a));

}

A.-6B.12C.0D.-12

75.

76.

下列程序的運行結果是()。

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

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

}

A.s=3B.s=4C.s=5D.無輸出結果

77.有以下程序:

fun(inta[],intm,intn)

{inti;

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

a[i+1]=a[i]+3;

returna[i+1];

}

voidmain()

{

inti,a[6]={2,4,6,8,10,12};

fun(a,2,5);

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

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

}

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

A.24691315B.24691215C.249121518D.249121415

78.

79.下列是用戶自定義

溫馨提示

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

最新文檔

評論

0/150

提交評論