2022-2023年河北省石家莊市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2022-2023年河北省石家莊市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2022-2023年河北省石家莊市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2022-2023年河北省石家莊市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2022-2023年河北省石家莊市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

2022-2023年河北省石家莊市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.定義無符號整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。

A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}

3.樹最適合用來表示()。

A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分支層次關(guān)系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)

4.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1

5.一棵完全二叉樹中根結(jié)點(diǎn)的編號為1,而且23號結(jié)點(diǎn)有左孩子但沒有右孩子,則完全二叉樹總共有____個結(jié)點(diǎn)。

A.24B.45C.46D.47

6.

7.在C語言中,int、char和short種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)()。

A.由用戶自己定義B.均為2個字節(jié)C.是任意的D.由所用機(jī)器的機(jī)器字長決定

8.若已知一個棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。

A.IB.n-iC.n-i+1D.不確定

9.樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

10.下面關(guān)于圖的存儲的敘述中,哪一個是正確的。________

A.用相鄰矩陣法存儲圖,占用的存儲空間數(shù)只與圖中結(jié)點(diǎn)個數(shù)有關(guān),而與邊數(shù)無關(guān)

B.用相鄰矩陣法存儲圖,占用的存儲空間數(shù)只與圖中邊數(shù)有關(guān),而與結(jié)點(diǎn)個數(shù)無關(guān)

C.用鄰接表法存儲圖,占用的存儲空間數(shù)只與圖中結(jié)點(diǎn)個數(shù)有關(guān),而與邊數(shù)無關(guān)

D.用鄰接表法存儲圖,占用的存儲空間數(shù)只與圖中邊數(shù)有關(guān),而與結(jié)點(diǎn)個數(shù)無關(guān)

11.下列鏈表中,其邏輯結(jié)構(gòu)屬于非線性結(jié)構(gòu)的是()

A.雙向鏈表B.帶鏈的棧C.二叉鏈表D.循環(huán)鏈表

12.設(shè)無向圖G中有n個頂點(diǎn)e條邊,則其對應(yīng)的鄰接表中的表頭結(jié)點(diǎn)和邊表接點(diǎn)的個數(shù)分別為()。

A.n,eB.e,nC.2n,eD.n,2e

13.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達(dá)式是()。

A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c

14.有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",'m',85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",'f',95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的運(yùn)行結(jié)果是()。A.A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

15.C語言中的基本數(shù)據(jù)類型所占存儲空間長度的順序是()

A.char<=int<=float<=double<=long

B.int<=char<=float<=long<=double

C.int<=long<=float<=double<=char

D.char<=int<=float<=long<=double

16.以下程序是用來計算兩個非負(fù)數(shù)之間的最大公約數(shù):我們假設(shè)x,y中最大的那個數(shù)的長度為n,基本運(yùn)算時間復(fù)雜度為O(1),那么該程序的時間復(fù)雜度為()A.O(1)B.O(logn)C.O(n)D.O(n^2)

17.有以下定義:structperson{charname[10];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,};能輸出字母M的語句是()。

A.printf(“%c\n”,class[2].name[0]);

B.printf(“%c\n”,class[3].name[0]);

C.printf(“%c\n”,class[3].name[1]);

D.printf(“%c\n”,class[2].name[1]);

18.

19.數(shù)據(jù)庫的故障恢復(fù)一般是由()來執(zhí)行恢復(fù)

A.電腦用戶B.數(shù)據(jù)庫恢復(fù)機(jī)制C.數(shù)據(jù)庫管理員D.系統(tǒng)普通用戶

20.若有說明語句:double*p,a;則通過scanf語句正確給輸入項(xiàng)讀人數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

二、2.填空題(20題)21.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。

22.函數(shù)fun的功能是計算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函數(shù)中已經(jīng)正確定義變量m,a,b并賦值,要調(diào)用函數(shù)fun計算:m=a4+b4-(a+b)3。實(shí)現(xiàn)這一計算的函數(shù)調(diào)用語句為【】。

23.在關(guān)系數(shù)據(jù)庫中把數(shù)據(jù)表示成二維表,每一個二維表稱為【】。

24.執(zhí)行以下程序后,輸出#號的個數(shù)是【】。

#include<studio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

25.當(dāng)m=1,n=2,a=3,b=2,c=4時,執(zhí)行d=(m=a!=B)&&(n=b>C)后,m的值為()。

26.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和方法的機(jī)制稱為______。

27.若想通過以下輸入語句使a中存放字符串1234,b中存放字符5,則輸入數(shù)據(jù)的形式應(yīng)該是【】。

chara[10],b;scanf("a=%sb=%c",a,&b);

28.當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時,說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為【】。

29.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]\'\0';

}

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

mam()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2=0)

*p='*';

p++;i++;

}

puts(A);

}

31.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

majn()

{FILE*fp;charch;

fp=fopen(______);

ch=fgetc(fp);

whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}

putchar('\n');fclose(fp);

}

32.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請寫出fun函數(shù)的首部【】。要求形參名為b。

main()

{double[10][22];

intn;

......

fun(s);

}

33.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲結(jié)構(gòu)必須是______。

34.以下程序的輸出結(jié)果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

35.程序如下:

main()

{inti=4;

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

}

該程序執(zhí)行后的輸出結(jié)果以及i的值分別是______、_______。

36.符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、()和循環(huán)結(jié)構(gòu)。

37.以下程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:case2:return1;

}

return(fib(g-1)+fib(g-2));

}

main()

{longk;

k=fib(5);

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

}

38.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

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

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

printf("%d,%d\n",x,y);

}

40.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/

}

三、1.選擇題(20題)41.有以下定義語句

doublea,b;intw;longc;

若各變量已正確賦值,則下列選項(xiàng)中正確的表達(dá)式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;

42.執(zhí)行下列程序的輸出結(jié)果是()。main(){union{intb;charc[2];}y;y.b=0x4142;printf("%c,%c",y.c[1],y.c[0]);}

A.65,66B.a,bC.B,AD.A,B

43.以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inta=3,b=4,c=8,d=4,m=1,n=3;printf("%d\n",(m=a>B)&&(n=c>D));}

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

44.按照C語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符中的是()。

A.大寫字母B.連接符C.數(shù)字字符D.下劃線

45.以下程序的輸出結(jié)果是

main()

{inta,i;a=0;

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

{switch(i)

{case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;}

}printf("%d\n",a);}

A.31B.13C.10D.20

46.以下程序中與語句k=a>b?(b>c?1:0):0;功能等價的是

A.if((a>b)&&(b>c))k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;elsek=0;

D.if(a>b)k=1;elseif(b<c)k=1;

47.若定義inta=10,則表達(dá)式a+=a-*=a的值是()。

A.0B.-180C.-100D.-90

48.有以下程序:#include<stdio.h>main(){intx;scanf("%d",&x);if(x<=0);elseif(x!=5)printf("%d\n",x);}程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果()。

A.不等于5的整數(shù)B.大于0且不等5的整數(shù)C.大于0或等于5的整數(shù)D.小于5的整數(shù)

49.結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是()。

A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設(shè)計方法C.結(jié)構(gòu)化設(shè)計理論D.結(jié)構(gòu)化編程方法

50.以下敘述中正確的是______。A.調(diào)用printf函數(shù)時,必須要有輸出項(xiàng)

B.使用putchar函數(shù)時,必須在之前包含頭文件stdio.h

C.在C語言中,整數(shù)可以以十二進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出

D.調(diào)用getchar函數(shù)讀入字符時,可以從鍵盤上輸入字符所對應(yīng)的ASCII碼

51.有以下程序:main(){charstr[][10]={"China","Beijing"),*P=str;printf("%s\n",p+10);}程序運(yùn)行后的輸出結(jié)果是______。

A.ChinaB.BeijingC.ngD.ing

52.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果為

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

53.以下所列的各函數(shù)首部中,正確的是______。

A.voidplay(Var:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

54.下列程序的輸出結(jié)果是()。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

55.設(shè)有如下程序段:chars[20]="Bejing",*P;p=s;則執(zhí)行p=s;語句后,以下敘述正確的是()。

A.可以用*P表示s[0]

B.s數(shù)組中元素的個數(shù)和p所指字符串長度相等

C.s和p都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等

56.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序運(yùn)行后的輸出結(jié)果是______。

A.22111B.21021C.122D.12

57.下面程序的輸出結(jié)果是()main(){intx=2,y=0,z;x+=3+2;printf("%d",x);x*=y(tǒng)=z=4;printf("%d",x);}

A.728B.無法計算C.7,4D.8,4

58.以下選項(xiàng)中,非法的字符常量是______。

A.'t\'B.'\17'C.\nD.'\xaa'

59.下列程序輸出的結(jié)果是()。main(){inta;a=-4+4*5-6;printf(“%d”,a);a=4+4%5-6;printf(“%d”,a);a=-3+4%6/5;printf(“%d”,a);a=(7+6)%5/2;printf(“%d”,a);}

A.102-31B.10-221C.11-221D.10221

60.下面程序的輸出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

四、選擇題(20題)61.

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

A.數(shù)據(jù)庫系統(tǒng)是一個獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)

D.以上三種說法都不對

63.下列哪個屬性是用來定義內(nèi)聯(lián)樣式的?()

A.fontB.classC.stylesD.style.

64.設(shè)有如下程序段:

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元素的個數(shù)和P所指字符串長度相等

C.s和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相等

65.

66.

67.有以下程序程序運(yù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.2,3,1,6,8,7,5,4,10,9,

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

68.用鏈表表示線性表的優(yōu)點(diǎn)是()。A.A.便于隨機(jī)存取B.花費(fèi)的存儲空間較順序存儲少

C.便于捅入和刪除操作

D.數(shù)據(jù)元素的物理順序與邏輯順序相同

69.已知各變量的類型說明如下:

則以下不符合C語言語法的表達(dá)式是()。

A.

B.

C.

D.

70.有以下程序

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

A.15B.12C.16D.20

71.

72.

73.

74.

75.

76.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項(xiàng)是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

77.有三個關(guān)系R、s和T如下:

由關(guān)系R和s通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為()。

A.并B.自然連接C.笛卡爾積D.交

78.

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

A.在switch語句中,不-定使用break語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.break語句只能用于switch語句

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串tt中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。

例如,若輸入“I,anl,A,Student”,則輸出“i,am,a,student”。

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

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

試題程序:

六、程序設(shè)計題(1題)82.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc,其功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineMl6typedefstruct{charnum[l0];intS;}STREC:voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)/*用冒泡法來按從高到低排序*/for(j=0;j<M-1;j++)。if(a[j].s<a[j+1].s)//*按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;)}voidmain{STRECstu[M]={{"GA005",85),{"GA003",76},{"GA002",69},{"GA004",85),{"GA001",91),{"GA007",72),{"GA008",64),{"GA006",87),{"GA015",85),{"GA013",91),{"GA012",64),{¨GA014",91),{"GA011",66),{"GA017",64},{"GA018",64),{"GA016",72}};inti;proc(stu);printf("Thedataaftersorted:\n");for(i=0;i<M;i++){if(i%4==0)//每行輸出4個學(xué)生記錄printf("n");printf("%s%4d",stu[i],num,stu[i].s);}printf("\n");}

參考答案

1.A

2.BB【解析】只有B選項(xiàng)369可以用無符號整數(shù)來表示和存儲。A選項(xiàng)一369有負(fù)號,選項(xiàng)C0.369是小數(shù)都不能用無符號整數(shù)類存儲。選項(xiàng)D是一個整數(shù)集合得用數(shù)組來存儲。

3.C樹最適合用來表示元素之間具有分支層次關(guān)系的數(shù)據(jù),故本題選C。

4.D在C語言中,當(dāng)表達(dá)式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項(xiàng)。

5.C

6.A

7.D

8.C

9.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點(diǎn)的集合,對應(yīng)任意一棵非空樹,它具有以下幾點(diǎn)重要的性質(zhì)。

①有且僅有一個特定的稱為根的結(jié)點(diǎn)。

②當(dāng)n>1時,其余結(jié)點(diǎn)可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。

因此,本題的正確答案有且只有一個。

10.A

11.C數(shù)據(jù)的邏輯結(jié)構(gòu)是描述數(shù)據(jù)之間的關(guān)系,分兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。線性結(jié)構(gòu)是n個數(shù)據(jù)元素的有序(次序)集合,指的是數(shù)據(jù)元素之間存在著“一對一”的線性關(guān)系的數(shù)據(jù)結(jié)構(gòu)。常用的線性結(jié)構(gòu)有:線性表,棧,隊(duì)列,雙隊(duì)列,數(shù)組,串。非線性結(jié)構(gòu)的邏輯特征是一個結(jié)點(diǎn)元素可能對應(yīng)多個直接前驅(qū)和多個后驅(qū)。常見的非線性結(jié)構(gòu)有:樹(二叉樹等),圖(網(wǎng)等),廣義表。

12.A

13.B選項(xiàng)B先計算關(guān)系表達(dá)式“A<=c”的值是0還是l,再比較該值與字符z之間的大小關(guān)系,不能實(shí)現(xiàn)題目所要求的功能。

14.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進(jìn)行賦值后,然后返回變量a。

15.A

16.B

17.AC語言規(guī)定數(shù)組的下標(biāo)從0開始,結(jié)構(gòu)體數(shù)組class初始化了前4個元素。第3個元素的name=“Marry”,則class[2].name[0]=‘M’。故本題答案為A選項(xiàng)。

18.C

19.CC)【解析】數(shù)據(jù)庫一旦發(fā)生故障,需要及時進(jìn)行故障恢復(fù),并由數(shù)據(jù)庫管理員負(fù)責(zé)執(zhí)行故障恢復(fù)。

20.Ddouble*p,a定義了一個指向雙精度型的指針變量P和雙精度型變量a,p=&a表示將變量a的地址賦給指針變量p;scanf("%If",p)表示用鍵盤輸入的數(shù)賦給指針變量P所指向的地址單元中,scanf函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f。否則,數(shù)據(jù)不能正確輸入。所以選項(xiàng)D正確。

21.類類解析:在面向?qū)ο蠓椒ㄖ校惷枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

22.fun(a4)+fun(b4)-fun((a+b)3);fun(a,4)+fun(b,4)-fun((a+b),3);解析:函數(shù)fun的功能是計算x的n次方,a的4次方的調(diào)用函數(shù)為fun(a,4),b的4次方的調(diào)用函數(shù)為fun(b,4),(a+b)的3次方的調(diào)用函數(shù)為fun((a+b),3),計算m=a4+b4-(a+b)3的函數(shù)調(diào)用語句為:fun(a,4)+fun(b,4)-fun((a+b),3);

23.關(guān)系或一個關(guān)系關(guān)系或一個關(guān)系解析:在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,而一個二維表就是一個關(guān)系。

24.66解析:本題中,i、j分別為外循環(huán)和內(nèi)循環(huán)的循環(huán)控制變量,外層循環(huán)共執(zhí)行了4次。當(dāng)i=1時,由于內(nèi)層循環(huán)判斷條件(2<=1)為假不執(zhí)行內(nèi)層循環(huán)。當(dāng)i=2時,執(zhí)行內(nèi)層循環(huán),輸出一個#;當(dāng)i=3時,內(nèi)層循環(huán)循環(huán)兩次,輸出兩個#:當(dāng)i=4時,內(nèi)層循環(huán)循環(huán)3次,輸出3個#。當(dāng)i=5時,循環(huán)判斷條件不成立,退出外層循環(huán)。所以一共輸出6個#。

25.11解析:①“sizeof'、“%”、“>”、“<<”、“*=”,運(yùn)算符的優(yōu)先級順序?yàn)椋骸?=”→“>”→“<<”→“%”→“sizeof”;②位運(yùn)算的優(yōu)先級順序?yàn)椋骸啊薄埃迹肌薄埃荆尽薄?”→“^”。(b=2)>(c=4)不成立,邏輯為假,所以n=0;(a=3)!=(b=2)成立,邏輯為真,所以m=1。

26.繼承繼承解析:在面向?qū)ο蟮某绦蛟O(shè)計方法中,某些屬性和方法是可以共享的,由于類從父類中繼承而來,這樣提高了軟件的可重用性。

27.a=123b=5

28.上溢上溢解析:入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個新元素。這個運(yùn)算有兩個基本操作:首先將隊(duì)尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時置rear=1;然后將新元素插入隊(duì)尾指針指向的位置。當(dāng)循環(huán)隊(duì)列非空(s=1)時且隊(duì)尾指針等于隊(duì)頭指針時,說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算,這種情況稱為“上溢”。

29.length++i<lengthlength++\r\ni<length解析:第一個循環(huán)極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是第i個到第i+n或最后一個間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。

30.*2*4*6*8**2*4*6*8*解析:程序中定義了一個字符數(shù)組a,并初始化為123456789,接著定義了一個指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個while循環(huán),此循環(huán)的作用是:當(dāng)i為偶數(shù)時,將“*”賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時數(shù)組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為“*”,所以最后調(diào)用puts()函數(shù)輸出的a的值為*2*4*6*8*

31.

32.voidfun(doubleb[10][22])voidfun(doubleb[10][22])解析:本題答案:voidfun(doubleb[10][22])。

33.順序存儲(順序方式存儲)順序存儲(順序方式存儲)解析:二分法查找對表的要求是有序的順序表,即第一要求是數(shù)據(jù)元素有序,第二要求是按順序方式存儲。

34.3691236912解析:本題考查最基本的for循環(huán)。for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3,即每次a的值增加3,但因?yàn)閒un函數(shù)中變量a為static類型,所以每次調(diào)用完子函數(shù)之后,變量a所做的改變都要保存。

35.-55。

36.選擇結(jié)構(gòu)選擇結(jié)構(gòu)解析:程序設(shè)計語言僅僅使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。遵循程序結(jié)構(gòu)化的設(shè)計原則,按結(jié)構(gòu)化程序設(shè)計方法設(shè)計出的程序易于理解、使用和維護(hù);可以提高編程工作的效率,降低軟件的開發(fā)成本。

37.k=5k=5解析:由題可知fib(0)的值為0,fib(1)和fib(2)的值為1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。

38.概念概念

39.32233,2,2,3解析:主函數(shù)中首先定義了整型變量x和y,并分別給它們賦初值為2和3,接著調(diào)用fun()函數(shù),fun()函數(shù)把實(shí)參x和y的值傳給形式參數(shù)x和y,實(shí)參和形參不再有聯(lián)系.在fun()函數(shù)中通過運(yùn)算使x和y的值交換過來,所以fun()函數(shù)中的輸出結(jié)果是“3,2”。fun()函數(shù)調(diào)用返回輸出x和y依舊是原來的x和y,為“2,3”原因是變量作為形參傳值的,對形參的修改并不影響對應(yīng)的實(shí)參。所以最后輸出為3,2,2,3。

40.(a+b>C)&&(a+c>B)&&(b+c>A)(a+b>C)&&(a+c>B)&&(b+c>A)解析:本題主要考查運(yùn)算符邏輯與“&&”的用法。

41.C解析:選項(xiàng)A不是合法的賦值語句,將最右邊的第一個賦值表達(dá)式加括號即為a=a+(b=b++)才正確,故選項(xiàng)A不正確。選項(xiàng)B中運(yùn)算符%的對象必須是整型,而在選項(xiàng)B中(int)a+b為double型,故選項(xiàng)B不正確。a,b都為double型,應(yīng)當(dāng)避免使用a==b這樣的關(guān)系表達(dá)式,因?yàn)橥ǔ4娣旁趦?nèi)存中的實(shí)型數(shù)據(jù)是有誤差的,因此不可能精確相等,這將導(dǎo)致關(guān)系表達(dá)式a==b總為0。所以,4個選項(xiàng)中選項(xiàng)C符合題意。

42.D解析:共用體中的成員是共享同一內(nèi)存區(qū)域的,另外,整數(shù)在內(nèi)存中的表示是低字節(jié)在前高字節(jié)在后,所以給y.b賦值0x4142,等價于給y.c[0]賦值0x42(字符B),y.c[1]賦值Ox41(字符A)。所以本題輸出的結(jié)果是A,B。故應(yīng)該選擇D。

43.A解析:邏輯與(&&)運(yùn)算符的功能是:當(dāng)“&&”運(yùn)算符兩邊的運(yùn)算對象均為1時,整個表達(dá)式的值為1,否則為0。因?yàn)閍=3<b=4,即m=0,所以整個表達(dá)式的值為0。

44.B解析:在C語言中,用戶標(biāo)識符命令規(guī)則規(guī)定:變量名只能由字母、數(shù)字或下劃線3種字符組成,且第一個字符必須為字母或下劃線。在C語言中,大寫字母和小寫字母被認(rèn)為是兩個不同的字符。據(jù)此規(guī)定A)、D)、C)三個選項(xiàng)是正確的,而B)選項(xiàng)是連字符,不在C語言規(guī)定的命名變量標(biāo)識符的范圍內(nèi)。

45.A解析:本題考查用于多分支選擇的switch語句,其一般形式為:

switch(表達(dá)式)

{

case常量表達(dá)式1:語句1;

case常量表達(dá)式2:語句2;

case常量表達(dá)式n:語句n;

default:語句n+1;

}

其語義是:計算表達(dá)式的值,并逐個與其后的常量表達(dá)式值進(jìn)行比較,當(dāng)表達(dá)式的值與某個常量表達(dá)式的值相等時,即執(zhí)行其后的語句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句;如表達(dá)式的值與所有case后的常量表達(dá)式均不相等時,則執(zhí)行default后的語句。

46.A解析:三目運(yùn)算表達(dá)式的規(guī)則為如果“?”前面的表達(dá)式的值為真,則取“:”前的表達(dá)式的值,否則,取“:”后面表達(dá)式的值。分析題目中給出的表達(dá)式可知,如果a>b和b>c同時成立,k=1,否則k=0。

47.B解析:算術(shù)運(yùn)算符的運(yùn)算規(guī)則是:從右到左的原則。所以表達(dá)式中先計算a=a-a*a的值是-90,再計算a=a+a的值是-180。

48.B解析:題目中,雖然else和第二個if不在同一行上,但等價于在同一行上,因此,程序的意思是當(dāng)x大于0且不等于5時將其打印出來。

49.CC?!窘馕觥拷Y(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是結(jié)構(gòu)化設(shè)計理論,其中包括:結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化編程方法。

50.B解析:本題考查了C語言的一些基本概念.printf()函數(shù)可以只有控制項(xiàng)而沒有輸出項(xiàng),例如:printf('Hello!');,所以選項(xiàng)A不正確。C語言中不支持整數(shù)以十二進(jìn)制輸出,因此選項(xiàng)C不正確。getchar()函數(shù)從鍵盤讀入一個字符,而不管該字符為數(shù)字還是字母,因此輸入ASCII碼的話,只能讀到第1個數(shù)字字符,所以選項(xiàng)D不正確。故應(yīng)該選擇B,putchar是C語宮中的庫函數(shù),使用時必須包含sMio.h。

51.B解析:本題中p+10表示字符串'Beijing'的地址,故正確答案為B。

52.C解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求先序遍歷,其遍歷順序應(yīng)該為:訪問根結(jié)點(diǎn)—,先序遍歷左于樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDCEP,故答案為C。

53.C解析:C語言中函數(shù)首部中的各參數(shù)必須分開單獨(dú)定義,因此選項(xiàng)C才是正確的。而選項(xiàng)A和D是其他語言的函數(shù)定義方式。

54.B解析:算術(shù)運(yùn)行符“/”、“%”的優(yōu)先級處于同一級,并且兩者的結(jié)合性都是從左到右。所以算術(shù)表達(dá)式運(yùn)算過程為:a=25/10%9=2%9=2:當(dāng)邏輯運(yùn)算符“&&”兩邊的值都是非零時,邏輯表達(dá)式的值才為真(即為1)。所以b=2&&(-1)=1。

55.A解析:在變量的定義中可以看到,p是指向字符的指針,執(zhí)行p=s;后,指針p的值為數(shù)組a的首地址,*p=s[0],因此選項(xiàng)A是正確的;P所指向的字符串為“Beijing”,長度為7,而數(shù)組a中元素的個數(shù)為20,因此選項(xiàng)B是錯誤的;s為數(shù)組名,也可以看作是數(shù)組s的首地址,不是指針變量,因此選項(xiàng)C是錯誤的;數(shù)組s中的內(nèi)容為字符串,指針變量p中的內(nèi)容為數(shù)組s的首地址,因此選項(xiàng)D是錯誤的。

56.C解析:程序中for循環(huán)了三次,第一次i=0,執(zhí)行switch語句中case0:分支,直到遇到default語句,退出switch,這里共執(zhí)行了三個輸出語句分別輸出0,0,0,第二次循環(huán)i=1,switch語句中沒有匹配的分支,故只執(zhí)行default語句輸出1,退出switch語句;第三次循環(huán)i=2,從switch語句中的case2:開始執(zhí)行,共執(zhí)行了兩個輸出語句輸出2、2。最后輸出的結(jié)果為000122。

57.A

58.C解析:C語言中字符常量是以單引號括起來的單個字符,或以“\\”與三位八進(jìn)制數(shù)值或兩位十六進(jìn)制數(shù)值代替單個字符。

59.A解析:本題考查%和/運(yùn)算符的使用。如果兩個數(shù)不能整除,只取結(jié)果的整數(shù)部分,小數(shù)部分全部舍去。運(yùn)算符“%”要求兩個運(yùn)算對象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。表達(dá)式:a=-4+4*5-6=4+20-6=10:表達(dá)式:a=4+4%5-6=4+4-6=2;表達(dá)式:a=-3+4%6/5=-3+0=-3:表達(dá)式:a=(7+6)%5/2=13%5/2=1。

60.D解析:在C語言格式字符的輸出中,“%d”是以帶符號的十進(jìn)制形式輸出整數(shù);“%60”是以8進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符o);“%x”是以16進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符Ox)。

61.A

62.B解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。

數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還心須有其他相關(guān)軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡(luò)系統(tǒng)軟件的支持。因此,選項(xiàng)A的說法是錯誤的。

數(shù)據(jù)庫可以看成是長期存儲在計算機(jī)內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點(diǎn)。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標(biāo)是要解決數(shù)據(jù)的共享問題。因此,選項(xiàng)B的說法是正確的。

通常將引入數(shù)據(jù)庫技術(shù)的計算機(jī)系統(tǒng)稱為數(shù)據(jù)庫系統(tǒng)。一個數(shù)據(jù)庫系統(tǒng)通常由五個部分組成,包括相關(guān)計算機(jī)的硬件、數(shù)據(jù)庫集合、數(shù)據(jù)庫管理系統(tǒng)、相關(guān)軟件和人員。

因此,選項(xiàng)C的說法是錯誤的。

因此,本題的正確答案是選項(xiàng)B。

63.D

64.AP=8;后,指針P指向s的首地址,*P=s[0],因此選項(xiàng)A)是正確的;p是字符串指針,所指向的字符串為”beijing”,其長度為7,而數(shù)組s中元素的個數(shù)為20,因此選項(xiàng)B)和D)是錯誤的;s是數(shù)組,不是指針變量,所以選項(xiàng)C)也是錯誤的。

65.D

66.D

67.A本題考查的是結(jié)構(gòu)體成員的引用。在主函數(shù)main中定義了一個整型變量i和一個結(jié)構(gòu)體變量s。f函數(shù)中,定義了一個結(jié)構(gòu)體類型的指針P,外層循環(huán)變量i表示數(shù)組的第i個元素,內(nèi)層循環(huán)變量j表示數(shù)組的第i+1個元素,調(diào)用f函數(shù),通過指針變量P來引用結(jié)構(gòu)體成員。執(zhí)行if語句,當(dāng)P一>a[i]>P一>a[j]時進(jìn)行互換,其作用就是從小到大行排序,最后將排序后的元素輸出:l,2,3,4,5,6,7,8,9,10,。

68.C數(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈?zhǔn)酱鎯Y(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當(dāng)查找元素時就需要逐.個元素查找,因此查找的時間相對更長。

69.A”%”是求余運(yùn)算符或模運(yùn)算符,”%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項(xiàng)A)中的X是double型數(shù)據(jù)。

70.B#define命令是C語言的宏定義命令,標(biāo)識符一般使用大寫,為了區(qū)分其他標(biāo)識符,將標(biāo)識符定義為一個字符串,該標(biāo)識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進(jìn)行其他操作,僅僅只是替換標(biāo)識符。后置自增運(yùn)算:k++表示先運(yùn)算,后自加。意思是遇到k++了,先把當(dāng)前的k的值拿來參加運(yùn)算,后面再去管它的自加。SUB(a++,b++)一(a++)t(b++)—d}4。故答案為B選項(xiàng)。

71.A

72.A

73.C

74.A

75.C

76.D本題主要考查指針變量對數(shù)值的引用。在題目中,首先定義了整型指針變量point和一個整型變量a,變量a的初值為4,然后是指針變量指向a,或者說將變量a所在存儲單元的地址值賦給指針變量。

在選項(xiàng)A中,很顯然,不全是地址,只有point表示地址,而*&a等價于*(&a),表示取一個數(shù)值。

在選項(xiàng)B中,也不都表示地址,其中*point表示數(shù)值,其他兩個表示地址。

在選項(xiàng)C中,與選項(xiàng)B類似,其中的*point表示數(shù)值。

在選項(xiàng)D中,都表示地址,是題目的選擇答案。

77.D關(guān)系R與s經(jīng)交運(yùn)算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的共有元組組成的,記為RnS。

78.C

79.Adefault語句在swtch語句中可以省,所以8錯誤;switch語句中并非每個case后都需要使用break語句,所以c錯誤;break語句還可以用于for等循環(huán)結(jié)構(gòu)中,所以D錯誤。

80.D

81.82.voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)//用冒泡法來按從高到低排序for(j=0;j<M-1;j++)if(a[j].s<a[j+1].s)//按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前{t=a[j];a[j]=a[j+1];a[j+1]=t;}}</i<p)為()。2022-2023年河北省石家莊市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.定義無符號整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。

A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}

3.樹最適合用來表示()。

A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分支層次關(guān)系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)

4.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1

5.一棵完全二叉樹中根結(jié)點(diǎn)的編號為1,而且23號結(jié)點(diǎn)有左孩子但沒有右孩子,則完全二叉樹總共有____個結(jié)點(diǎn)。

A.24B.45C.46D.47

6.

7.在C語言中,int、char和short種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)()。

A.由用戶自己定義B.均為2個字節(jié)C.是任意的D.由所用機(jī)器的機(jī)器字長決定

8.若已知一個棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。

A.IB.n-iC.n-i+1D.不確定

9.樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

10.下面關(guān)于圖的存儲的敘述中,哪一個是正確的。________

A.用相鄰矩陣法存儲圖,占用的存儲空間數(shù)只與圖中結(jié)點(diǎn)個數(shù)有關(guān),而與邊數(shù)無關(guān)

B.用相鄰矩陣法存儲圖,占用的存儲空間數(shù)只與圖中邊數(shù)有關(guān),而與結(jié)點(diǎn)個數(shù)無關(guān)

C.用鄰接表法存儲圖,占用的存儲空間數(shù)只與圖中結(jié)點(diǎn)個數(shù)有關(guān),而與邊數(shù)無關(guān)

D.用鄰接表法存儲圖,占用的存儲空間數(shù)只與圖中邊數(shù)有關(guān),而與結(jié)點(diǎn)個數(shù)無關(guān)

11.下列鏈表中,其邏輯結(jié)構(gòu)屬于非線性結(jié)構(gòu)的是()

A.雙向鏈表B.帶鏈的棧C.二叉鏈表D.循環(huán)鏈表

12.設(shè)無向圖G中有n個頂點(diǎn)e條邊,則其對應(yīng)的鄰接表中的表頭結(jié)點(diǎn)和邊表接點(diǎn)的個數(shù)分別為()。

A.n,eB.e,nC.2n,eD.n,2e

13.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達(dá)式是()。

A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c

14.有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",'m',85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",'f',95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的運(yùn)行結(jié)果是()。A.A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

15.C語言中的基本數(shù)據(jù)類型所占存儲空間長度的順序是()

A.char<=int<=float<=double<=long

B.int<=char<=float<=long<=double

C.int<=long<=float<=double<=char

D.char<=int<=float<=long<=double

16.以下程序是用來計算兩個非負(fù)數(shù)之間的最大公約數(shù):我們假設(shè)x,y中最大的那個數(shù)的長度為n,基本運(yùn)算時間復(fù)雜度為O(1),那么該程序的時間復(fù)雜度為()A.O(1)B.O(logn)C.O(n)D.O(n^2)

17.有以下定義:structperson{charname[10];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,};能輸出字母M的語句是()。

A.printf(“%c\n”,class[2].name[0]);

B.printf(“%c\n”,class[3].name[0]);

C.printf(“%c\n”,class[3].name[1]);

D.printf(“%c\n”,class[2].name[1]);

18.

19.數(shù)據(jù)庫的故障恢復(fù)一般是由()來執(zhí)行恢復(fù)

A.電腦用戶B.數(shù)據(jù)庫恢復(fù)機(jī)制C.數(shù)據(jù)庫管理員D.系統(tǒng)普通用戶

20.若有說明語句:double*p,a;則通過scanf語句正確給輸入項(xiàng)讀人數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

二、2.填空題(20題)21.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

22.函數(shù)fun的功能是計算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函數(shù)中已經(jīng)正確定義變量m,a,b并賦值,要調(diào)用函數(shù)fun計算:m=a4+b4-(a+b)3。實(shí)現(xiàn)這一計算的函數(shù)調(diào)用語句為【】。

23.在關(guān)系數(shù)據(jù)庫中把數(shù)據(jù)表示成二維表,每一個二維表稱為【】。

24.執(zhí)行以下程序后,輸出#號的個數(shù)是【】。

#include<studio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

25.當(dāng)m=1,n=2,a=3,b=2,c=4時,執(zhí)行d=(m=a!=B)&&(n=b>C)后,m的值為()。

26.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和方法的機(jī)制稱為______。

27.若想通過以下輸入語句使a中存放字符串1234,b中存放字符5,則輸入數(shù)據(jù)的形式應(yīng)該是【】。

chara[10],b;scanf("a=%sb=%c",a,&b);

28.當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時,說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為【】。

29.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]\'\0';

}

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

mam()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2=0)

*p='*';

p++;i++;

}

puts(A);

}

31.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

majn()

{FILE*fp;charch;

fp=fopen(______);

ch=fgetc(fp);

whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}

putchar('\n');fclose(fp);

}

32.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請寫出fun函數(shù)的首部【】。要求形參名為b。

main()

{double[10][22];

intn;

......

fun(s);

}

33.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲結(jié)構(gòu)必須是______。

34.以下程序的輸出結(jié)果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

35.程序如下:

main()

{inti=4;

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

}

該程序執(zhí)行后的輸出結(jié)果以及i的值分別是______、_______。

36.符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、()和循環(huán)結(jié)構(gòu)。

37.以下程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:case2:return1;

}

return(fib(g-1)+fib(g-2));

}

main()

{longk;

k=fib(5);

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

}

38.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

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

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

printf("%d,%d\n",x,y);

}

40.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/

}

三、1.選擇題(20題)41.有以下定義語句

doublea,b;intw;longc;

若各變量已正確賦值,則下列選項(xiàng)中正確的表達(dá)式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;

42.執(zhí)行下列程序的輸出結(jié)果是()。main(){union{intb;charc[2];}y;y.b=0x4142;printf("%c,%c",y.c[1],y.c[0]);}

A.65,66B.a,bC.B,AD.A,B

43.以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inta=3,b=4,c=8,d=4,m=1,n=3;printf("%d\n",(m=a>B)&&(n=c>D));}

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

44.按照C語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符中的是()。

A.大寫字母B.連接符C.數(shù)字字符D.下劃線

45.以下程序的輸出結(jié)果是

main()

{inta,i;a=0;

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

{switch(i)

{case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;}

}printf("%d\n",a);}

A.31B.13C.10D.20

46.以下程序中與語句k=a>b?(b>c?1:0):0;功能等價的是

A.if((a>b)&&(b>c))k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;elsek=0;

D.if(a>b)k=1;elseif(b<c)k=1;

47.若定義inta=10,則表達(dá)式a+=a-*=a的值是()。

A.0B.-180C.-100D.-90

48.有以下程序:#include<stdio.h>main(){intx;scanf("%d",&x);if(x<=0);elseif(x!=5)printf("%d\n",x);}程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果()。

A.不等于5的整數(shù)B.大于0且不等5的整數(shù)C.大于0或等于5的整數(shù)D.小于5的整數(shù)

49.結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是()。

A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設(shè)計方法C.結(jié)構(gòu)化設(shè)計理論D.結(jié)構(gòu)化編程方法

50.以下敘述中正確的是______。A.調(diào)用printf函數(shù)時,必須要有輸出項(xiàng)

B.使用putchar函數(shù)時,必須在之前包含頭文件stdio.h

C.在C語言中,整數(shù)可以以十二進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出

D.調(diào)用getchar函數(shù)讀入字符時,可以從鍵盤上輸入字符所對應(yīng)的ASCII碼

51.有以下程序:main(){charstr[][10]={"China","Beijing"),*P=str;printf("%s\n",p+10);}程序運(yùn)行后的輸出結(jié)果是______。

A.ChinaB.BeijingC.ngD.ing

52.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果為

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

53.以下所列的各函數(shù)首部中,正確的是______。

A.voidplay(Var:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

54.下列程序的輸出結(jié)果是()。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

55.設(shè)有如下程序段:chars[20]="Bejing",*P;p=s;則執(zhí)行p=s;語句后,以下敘述正確的是()。

A.可以用*P表示s[0]

B.s數(shù)組中元素的個數(shù)和p所指字符串長度相等

C.s和p都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等

56.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序運(yùn)行后的輸出結(jié)果是______。

A.22111B.21021C.122D.12

57.下面程序的輸出結(jié)果是()main(){intx=2,y=0,z;x+=3+2;printf("%d",x);x*=y(tǒng)=z=4;printf("%d",x);}

A.728B.無法計算C.7,4D.8,4

58.以下選項(xiàng)中,非法的字符常量是______。

A.'t\'B.'\17'C.\nD.'\xaa'

59.下列程序輸出的結(jié)果是()。main(){inta;a=-4+4*5-6;printf(“%d”,a);a=4+4%5-6;printf(“%d”,a);a=-3+4%6/5;printf(“%d”,a);a=(7+6)%5/2;printf(“%d”,a);}

A.102-31B.10-221C.11-221D.10221

60.下面程序的輸出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

四、選擇題(20題)61.

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

A.數(shù)據(jù)庫系統(tǒng)是一個獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)

D.以上三種說法都不對

63.下列哪個屬性是用來定義內(nèi)聯(lián)樣式的?()

A.fontB.classC.stylesD.style.

64.設(shè)有如下程序段:

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元素的個數(shù)和P所指字符串長度相等

C.s和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相等

65.

66.

67.有以下程序程序運(yù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.2,3,1,6,8,7,5,4,10,9,

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

68.用鏈表表示線性表的優(yōu)點(diǎn)是()。A.A.便于隨機(jī)存取B.花費(fèi)的存儲空間較順序存儲少

C.便于捅入和刪除操作

D.數(shù)據(jù)元素的物理順序與邏輯順序相同

69.已知各變量的類型說明如下:

則以下不符合C語言語法的表達(dá)式是()。

A.

B.

C.

D.

70.有以下程序

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

A.15B.12C.16D.20

71.

72.

73.

74.

75.

76.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項(xiàng)是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

77.有三個關(guān)系R、s和T如下:

由關(guān)系R和s通過運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為()。

A.并B.自然連接C.笛卡爾積D.交

78.

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

A.在switch語句中,不-定使用break語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.break語句只能用于switch語句

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的作用是:將字符串tt中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。

例如,若輸入“I,anl,A,Student”,則輸出“i,am,a,student”。

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

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

試題程序:

六、程序設(shè)計題(1題)82.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc,其功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineMl6typedefstruct{charnum[l0];intS;}STREC:voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)/*用冒泡法來按從高到低排序*/for(j=0;j<M-1;j++)。if(a[j].s<a[j+1].s)//*按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;)}voidmain{STRECstu[M]={{"GA005",85),{"GA003",76},{"GA002",69},{"GA004",85),{"GA001",91),{"GA007",72),{"GA008",64),{"GA006",87),{"GA015",85),{"GA013",91),{"GA012",64),{¨GA014",91),{"GA011",66),{"GA017",64},{"GA018",64),{"GA016",72}};inti;proc(stu);printf("Thedataaftersorted:\n");for(i=0;i<M;i++){if(i%4==0)//每行輸出4個學(xué)生記錄printf("n");printf("%s%4d",stu[i],num,stu[i].s);}printf("\n");}

參考答案

1.A

2.BB【解析】只有B選項(xiàng)369可以用無符號整數(shù)來表示和存儲。A選項(xiàng)一369有負(fù)號,選項(xiàng)C0.369是小數(shù)都不能用無符號整數(shù)類存儲。選項(xiàng)D是一個整數(shù)集合得用數(shù)組來存儲。

3.C樹最適合用來表示元素之間具有分支層次關(guān)系的數(shù)據(jù),故本題選C。

4.D在C語言中,當(dāng)表達(dá)式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項(xiàng)。

5.C

6.A

7.D

8.C

9.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點(diǎn)的集合,對應(yīng)任意一棵非空樹,它具有以下幾點(diǎn)重要的性質(zhì)。

①有且僅有一個特定的稱為根的結(jié)點(diǎn)。

②當(dāng)n>1時,其余結(jié)點(diǎn)可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。

因此,本題的正確答案有且只有一個。

10.A

11.C數(shù)據(jù)的邏輯結(jié)構(gòu)是描述數(shù)據(jù)之間的關(guān)系,分兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。線性結(jié)構(gòu)是n個數(shù)據(jù)元素的有序(次序)集合,指的是數(shù)據(jù)元素之間存在著“一對一”的線性關(guān)系的數(shù)據(jù)結(jié)構(gòu)。常用的線性結(jié)構(gòu)有:線性表,棧,隊(duì)列,雙隊(duì)列,數(shù)組,串。非線性結(jié)構(gòu)的邏輯特征是一個結(jié)點(diǎn)元素可能對應(yīng)多個直接前驅(qū)和多個后驅(qū)。常見的非線性結(jié)構(gòu)有:樹(二叉樹等),圖(網(wǎng)等),廣義表。

12.A

13.B選項(xiàng)B先計算關(guān)系表達(dá)式“A<=c”的值是0還是l,再比較該值與字符z之間的大小關(guān)系,不能實(shí)現(xiàn)題目所要求的功能。

14.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進(jìn)行賦值后,然后返回變量a。

15.A

16.B

17.AC語言規(guī)定數(shù)組的下標(biāo)從0開始,結(jié)構(gòu)體數(shù)組class初始化了前4個元素。第3個元素的name=“Marry”,則class[2].name[0]=‘M’。故本題答案為A選項(xiàng)。

18.C

19.CC)【解析】數(shù)據(jù)庫一旦發(fā)生故障,需要及時進(jìn)行故障恢復(fù),并由數(shù)據(jù)庫管理員負(fù)責(zé)執(zhí)行故障恢復(fù)。

20.Ddouble*p,a定義了一個指向雙精度型的指針變量P和雙精度型變量a,p=&a表示將變量a的地址賦給指針變量p;scanf("%If",p)表示用鍵盤輸入的數(shù)賦給指針變量P所指向的地址單元中,scanf函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f。否則,數(shù)據(jù)不能正確輸入。所以選項(xiàng)D正確。

21.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。

22.fun(a4)+fun(b4)-fun((a+b)3);fun(a,4)+fun(b,4)-fun((a+b),3);解析:函數(shù)fun的功能是計算x的n次方,a的4次方的調(diào)用函數(shù)為fun(a,4),b的4次方的調(diào)用函數(shù)為fun(b,4),(a+b)的3次方的調(diào)用函數(shù)為fun((a+b),3),計算m=a4+b4-(a+b)3的函數(shù)調(diào)用語句為:fun(a,4)+fun(b,4)-fun((a+b),3);

23.關(guān)系或一個關(guān)系關(guān)系或一個關(guān)系解析:在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,而一個二維表就是一個關(guān)系。

24.66解析:本題中,i、j分別為外循環(huán)和內(nèi)循環(huán)的循環(huán)控制變量,外層循環(huán)共執(zhí)行了4次。當(dāng)i=1時,由于內(nèi)層循環(huán)判斷條件(2<=1)為假不執(zhí)行內(nèi)層循環(huán)。當(dāng)i=2時,執(zhí)行內(nèi)層循環(huán),輸出一個#;當(dāng)i=3時,內(nèi)層循環(huán)循環(huán)兩次,輸出兩個#:當(dāng)i=4時,內(nèi)層循環(huán)循環(huán)3次,輸出3個#。當(dāng)i=5時,循環(huán)判斷條件不成立,退出外層循環(huán)。所以一共輸出6個#。

25.11解析:①“sizeof'、“%”、“>”、“<<”、“*=”,運(yùn)算符的優(yōu)先級順序?yàn)椋骸?=”→“>”→“<<”→“%”→“sizeof”;②位運(yùn)算的優(yōu)先級順序?yàn)椋骸啊薄埃迹肌薄埃荆尽薄?”→

溫馨提示

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

評論

0/150

提交評論