2021年廣東省廣州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第1頁
2021年廣東省廣州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第2頁
2021年廣東省廣州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第3頁
2021年廣東省廣州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第4頁
2021年廣東省廣州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021年廣東省廣州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.

2.若一個(gè)棧以向量V[1..n]存儲(chǔ),初始棧頂指針top為n+1,則下面x進(jìn)棧的正確操作是()。

A.top=top+1;V[top]=x

B.V[top]=x;top=top+1

C.top=top-1;V[top]=x

D.V[top]=x;top=top-1

3.在目標(biāo)串T[0,n-1]=”xwxxyxy”中,對(duì)模式串p[0,m-1]=”xy”進(jìn)行子串定位操作的結(jié)果_______

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

4.下列程序段輸出的字符串長度為()。printf("\\aaa\'ccc\bddd\'");

A.11B.12C.13D.17

5.x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是

A.INPUTx、v、z;

B.scanf("%d%d%d",&x,&y,&z);

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

6.有以下程序,其中函數(shù)f的功能是將多個(gè)字符串按字典順序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)ifstrcmp(p[i],p[j])>0{t=p[i]p[i]=p[j];p[j]=t;}}main(){char*p[5]=("abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序運(yùn)行后的輸出結(jié)果是______。A.2B.3C.6D.4

7.下面結(jié)構(gòu)中最適于表示稀疏無向圖的是()。

A.鄰接矩陣B.逆鄰接表C.鄰接多重表D.十字鏈表

8.

9.以下程序的輸出結(jié)果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

10.數(shù)字字符0的ASCII值為48,運(yùn)行下列程序的輸出結(jié)果是()。main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-A);}

A.3,2B.50,2C.2,2D.2,50

11.算法應(yīng)該是()

A.程序B.問題求解步驟的描述C.要滿足五個(gè)基本特性D.B和C

12.

13.設(shè)有二維數(shù)組A7×8,每個(gè)數(shù)據(jù)元素占8個(gè)字節(jié)存儲(chǔ)單元,順序存放,A第一個(gè)元素A0,0的存儲(chǔ)地址為1000,數(shù)組A的最后一個(gè)元素A6,7的存儲(chǔ)地址為()。

A.1024B.1440C.1448D.1432

14.若有定義:“inta[2][3];”,則對(duì)a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

15.在一個(gè)C語言源程序文件中所定義的全局變量,其作用域?yàn)椋ǎ?/p>

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

16.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

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

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

18.設(shè)n、m為一棵二叉樹上的兩個(gè)結(jié)點(diǎn),在中序遍歷時(shí),n在m之前的條件是_____________。

A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孫

19.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

20.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.hAppychristmAs

B.happychristmas

C.HAppyCHrIstmAs

D.HAPPYCHRISTMAS二、2.填空題(20題)21.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

22.有以下程序片段,請(qǐng)問執(zhí)行后的輸出結(jié)果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

23.下面程序的輸出是【】。

main()

{enumern{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

24.類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象是類的【】。

25.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長度,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡?/p>

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

26.順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置______的存儲(chǔ)單元中。

27.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級(jí)模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

28.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

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

intf(inta[],intn)

{

if(n>=l)

returnf(a,n-1)+a[n-1];

else

return0;

}

main{)

{

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

s=f(aa,5);

printf{'%d\n",s);

}

30.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括選擇、連接和【】。

31.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請(qǐng)?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

{for(i=1;i<=n;i++)

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

32.軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和【】。

33.注釋一般分為序言性注釋和______注釋。

34.以下程序的輸出結(jié)果是______。

main()

{char*p-"abcdefgh",*r;

long*q;

q=(long*)p;

q++;

r=[char*)q;

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

}

35.與表達(dá)式a+=b等價(jià)的另一書寫形式是______。

36.己定義charch='$';inti=l,j;,執(zhí)行j=!ch&&ii++以后,i的值為【】。

37.下列程序中的數(shù)組a包括10個(gè)整數(shù)元素,分別將前項(xiàng)和后項(xiàng)之和存入數(shù)組b,并按每行4個(gè)元素輸出數(shù)組bo請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4==0)printf("\n");

printf("%3d",b[i]);

}

}

38.下列程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{inta=10,b=3;

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

printf("%d,",(a-b,a+b));

printf("%d\n",a-b?a-b:a+b);

}

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

40.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

三、1.選擇題(20題)41.數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲(chǔ)D.源和潭

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

A.需求分析B.詳細(xì)設(shè)計(jì)C.軟件設(shè)計(jì)D.概要設(shè)計(jì)

43.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是______。

A.0B.4C.6D.7

44.表達(dá)式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8

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

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

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

46.有以下程序:#include<stdio.h>structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));程序運(yùn)行后的輸出結(jié)果是()。

A.10B.11C.20D.21

47.下列敘述中錯(cuò)誤的是()。

A.C語句必須以分號(hào)結(jié)束

B.復(fù)合語句在語法上被看作一條語句

C.空語句出現(xiàn)在任何位置都不會(huì)影響程序運(yùn)行

D.賦值表達(dá)式末尾加分號(hào)就構(gòu)成賦值語句

48.下列敘述中,不符合良好程序設(shè)計(jì)風(fēng)格要求的是()

A.程序的效率第一,清晰第二B.程序的可讀性好C.程序中要有必要的注釋D.輸入數(shù)據(jù)前要有提示信息

49.以下正確的說法是______。

A.實(shí)參和與其對(duì)應(yīng)的形參各占用獨(dú)立的存儲(chǔ)單元

B.實(shí)參和與其對(duì)應(yīng)的形參共用一個(gè)存儲(chǔ)單元

C.只有當(dāng)實(shí)參和與其對(duì)應(yīng)的形參同名時(shí)才共用存儲(chǔ)單元

D.型參是虛擬的,函數(shù)在沒有被調(diào)用時(shí),不占用存儲(chǔ)單元

50.下面程序的輸出結(jié)果是()。#include<stdio.h>main(){intx=7,y=3;printf("%d",y=x/y);}

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

51.下列程序段中,不能正確賦值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

52.一顆二叉樹中共有70個(gè)葉子節(jié)點(diǎn)與80個(gè)度為1的節(jié)點(diǎn),則二叉樹的總節(jié)點(diǎn)數(shù)為()。

A.219B.221C.229D.231

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

A.c1∧c2B.c1&c2C.~c2D.c1|c2

54.已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4,下列正確的輸入語句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scanf("%d,%d,%d",&i,&j,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

55.在數(shù)據(jù)處理中,其處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)項(xiàng)C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)元素

56.定義int*swap()指的是______。

A.一個(gè)返回整型值的函swap()

B.—個(gè)返回指向整型值指針的swap()

C.一個(gè)指向函數(shù)swap()的指針,函數(shù)返回一個(gè)整型值

D.以上說法均錯(cuò)

57.已知字符0的ASCⅡ碼為十六進(jìn)制數(shù)30,下面程序的輸出是______。main(){inti;union{unsignedcharc;unsignedinti[4];}z;z.i[0]=0x39;z.i[1]=0x36;printf("%d\n",z.c);}

A.56B.57C.58D.59

58.有以下程序

#include<stdio.h>

#include<string.h>

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

voidf(STUa)

{STUb={"Zhao",′m′,850,900};inti;

strcpy(,);

a.sex=b.sex;

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

}

main()

{STUc={"Qian",′f′,95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);

}

程序的運(yùn)行結(jié)果是

A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90

59.有以下程序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{f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是______。

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,

60.以下選項(xiàng)中,不能確定賦值的是______。

A.chars1[10];s1="chest";

B.chars2[]={'C','t','e','s','t'};

C.chars3[20]="Chest";

D.char*s4="Ctest\n"

四、選擇題(20題)61.有以下程序程序運(yùn)行后的輸出結(jié)果是(.)。

A.-3,-1,1,3,B.-12,一3,0,0C.0,1,2,3,D.一3,-3,一3,一3,

62.

63.有以下程序:

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

A.10B.11C.20D.21

64.某二叉樹共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有l(wèi)個(gè),則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。

A.3B.4C.6D.7

65.有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",'');

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應(yīng)填入的是()。A.A.i-1B.iC.i+1D.4一i66.有以下程序:main{inta=1,b=3,C=5,*P;int*p1=&a,*p2=&b,*p3=&c;*p=*p1*(*p2);}執(zhí)行后的輸出結(jié)果是()。A.1B.2C.3D.4

67.28.以下敘述中錯(cuò)誤的是

A.對(duì)于float類型數(shù)組,不可以直接用數(shù)組名完成對(duì)數(shù)組進(jìn)行整體輸入或輸出

B.?dāng)?shù)組名代表的是數(shù)組所占存儲(chǔ)區(qū)的首地址,其值是常量,是不可改變的

C.當(dāng)執(zhí)行程序時(shí),數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時(shí),系統(tǒng)將給出“下標(biāo)越界”的出錯(cuò)信息

D.可以通過賦初值的方式確定數(shù)組元素的個(gè)數(shù)

68.數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)模式定義的語言是()。A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

69.有以下程序:

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

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

70.

71.若有說明語句:double*p,a;則通過scanf語句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是()。A.A.*p=&a;scanf("%1f”,p);

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

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

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

72.軟件生命周期是指()。

A.軟件的開發(fā)過程

B.軟件的運(yùn)行維護(hù)過程

C.軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程

D.軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測(cè)試完成的過程

73.當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出結(jié)罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

74.

75.“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是()。

A.一對(duì)一B.多對(duì)一C.一對(duì)多D.多對(duì)多

76.以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時(shí),值為0的表達(dá)式是()。

A.x%2==0B.x/2C.x%21=0D.x%2==1

77.閱讀以下程序:

#include<stdio.h>

main()

{intcase;floatprintF;

printf("請(qǐng)輸人2個(gè)數(shù):");

scanf("%d%fl"&case,&printF);

printf("%dofof\n",case,printF);

}

該程序在編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是()。

A.定義語句出錯(cuò),case是關(guān)鍵字,不能用做用戶自定義標(biāo)識(shí)符

B.定義語句出錯(cuò),printF不能用做用戶自定義標(biāo)識(shí)符

C.定義語句無錯(cuò),scanf不能作為輸入函數(shù)使用

D.定義語句無錯(cuò),printf不能輸出case的值

78.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的運(yùn)行結(jié)果是

A.A.331

B.41

C.2

D.1

79.運(yùn)行下面程序時(shí),從鍵盤輸入字母H,則輸出結(jié)果是()。

A.

B.

C.

D.

80.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:將字符串str中的所有字符復(fù)制到字符串b中,要求在每復(fù)制3個(gè)字符之后插入1個(gè)空格。例如,在調(diào)用proc()函數(shù)之前給字符

串str輸入abcdefghijk,調(diào)用函數(shù)之后,字符串b中的內(nèi)容則為abcdefghijk。

請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

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

試題程序:

六、程序設(shè)計(jì)題(1題)82.編寫函數(shù)fun(),其功能是:求SS所指字符串中指定字符的個(gè)數(shù),并返回此值。例如,若輸入字符串“123412132”,輸入字符為“1”,則輸出3。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入編寫的若干語句。試題程序:

參考答案

1.C

2.C

3.C

4.C解析:轉(zhuǎn)義字符有1個(gè)\\\\、2個(gè)\\'、1個(gè)\\b,普通字符有3個(gè)a、3個(gè)c、3個(gè)d,共13個(gè)字符。

5.B解析:scanf函數(shù)的一般格式是:

scanf(格式控制,地址表列)

該格式中,地址表列中應(yīng)是變量地址,而不是變量名。注意:調(diào)用putchar和getchar函輸出和輸入字符。

6.D解析:字符串比較函數(shù)“strcmp(char*s1,char*s2)”的比較規(guī)則是對(duì)兩個(gè)字符串自左至右逐個(gè)字符相比(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到到"\\0"為止。如果全部相同,則認(rèn)為相等:若出現(xiàn)不相同的字符,則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn)。當(dāng)s1<s2,返回值<0;當(dāng)s1=s2時(shí),返回值二0:當(dāng)s1>s2時(shí),返回值>0。故本題經(jīng)過排序后,得到第二個(gè)字符串是“abbd”,所以輸出結(jié)果是4。

7.C

8.A

9.D當(dāng)k=1時(shí),循環(huán)成立,輸出w[l]的數(shù)組即EFGH,接著執(zhí)行k++后k為2;當(dāng)k=2時(shí),循環(huán)成立,輸出w[2]的數(shù)組即IJKL,接著執(zhí)行k++后,k為3;當(dāng)k=3時(shí),循環(huán)不成立,退出。

10.C解析:自增運(yùn)算符“++”,出現(xiàn)在變量之前,表示先使變量的值加1,再使用變量的值進(jìn)行運(yùn)算;出現(xiàn)在變量之后,表示先使用變量的值進(jìn)行運(yùn)算,冉使變量的值加1。例如題中的“b++”,題中第一條語句先輸出字符b的值,此時(shí)變量b='2',因此輸出值為2;再使b的值加1,b='3',因此第二條語句輸出:b-a='3'-'1'=2。

11.B

12.B

13.B

14.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

15.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個(gè)源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時(shí),應(yīng)該在引用它的函數(shù)中用extern對(duì)此全局變量進(jìn)行說明,以便通知編譯程序該變量是一個(gè)已在外部定義了的全局變量,這時(shí)全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

16.D本題考查邏輯運(yùn)算符的使用。當(dāng)“&&”的兩個(gè)運(yùn)算對(duì)象都是邏輯1時(shí),表達(dá)式返回值才是1;“||”的兩個(gè)運(yùn)算對(duì)象至少有一個(gè)是邏輯1時(shí),表達(dá)式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

17.C解析:C語言中字符常量是以單引號(hào)括起來的單個(gè)字符,或?yàn)橐浴癨\”與三位八進(jìn)制數(shù)值或兩位十六進(jìn)制數(shù)值代替單個(gè)字符。

18.C

19.A解析:n--是先使用后自減,--n是先自減后使用。n=4時(shí),執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時(shí),n為2;同上過程,第二次輸出時(shí),n為0。

20.C程序定義一個(gè)字符數(shù)組b和一個(gè)字符變量k。for循環(huán)通過循環(huán)變量k,遍歷數(shù)組b中的各個(gè)字符,通過if語句判斷當(dāng)前下標(biāo)為k的字符的ASCII值與字符'm'的ASCII值的大小,ASCII值小于‘m’的ASCII值的字符改成大寫字母(b[k]=b[k]-'a'+'A'),然后輸出b[k]。在字符串“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所以程序輸出:HAppyCHrIstmAs。本題答案為C選項(xiàng)。

21.a=14a=14解析:逗號(hào)表達(dá)式的值是以逗號(hào)分隔的最后一個(gè)表達(dá)式的值。所以題目中的語句a=(3*5,a+4);就等價(jià)于a=a+4;。故本題輸出結(jié)果是a=14。

22.1098

23.DDBBCCDDBBCC解析:c語言對(duì)枚舉的定義規(guī)定定:在枚舉中聲明的各個(gè)枚舉元素,如果沒有明確指出某個(gè)枚舉元素的值,它的上一個(gè)元素存在并有明確值的情況下,這個(gè)枚舉元素的值為其上一個(gè)元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。

24.實(shí)例將屬性、操作相似的對(duì)象歸為類,也就是說,類是具有共同屬性、共同方法的對(duì)象的集合。所以,類是對(duì)象的抽象,對(duì)象則是其對(duì)應(yīng)類的一個(gè)實(shí)例。

25.*(str+I)或str[I]*(str+I)或str[I]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,可以用*(str+I)來訪問字符串中的第I個(gè)元素,判斷是否為結(jié)束標(biāo)志,如果不是,I=I+1,繼續(xù)取下一個(gè)元素進(jìn)行判斷,直到*(str+I)的值為'\\0'為止,也可以用下標(biāo)的方式引用字符,如*(str+I)相當(dāng)于str[I]。

26.相鄰相鄰

27.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級(jí)模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲(chǔ)結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

28.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

29.1515解析:在函數(shù)f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1);,否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3]……直到f(aa,0)返回0.故f(aa,5)實(shí)際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。

30.投影專門關(guān)系運(yùn)算包括對(duì)單個(gè)關(guān)系進(jìn)行垂直分解(投影操作)或水平分解(選擇操作)和對(duì)多個(gè)關(guān)系的結(jié)合(連接操作)等。

31.ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;priintf("\n");或putchar('\n');ch++;或++ch;或ch=ch+1;或ch=1+ch;或ch+=1;\r\npriintf('\\n');或putchar(\'\\n\');解析:因?yàn)閏h被初始化為\'A\',而內(nèi)循環(huán)中有—條輸出ch的語句,整個(gè)程序都沒有一條改變ch值的語句。所以,第1空應(yīng)該填ch++或其它類似的表達(dá)式,以使每次輸出一個(gè)字母后ch都能變?yōu)橄乱粋€(gè)字母。內(nèi)循環(huán)結(jié)束后,代表這一行已經(jīng)輸出完畢,此時(shí)即將開始下一行的輸出,所以在第2空位置應(yīng)該輸出一個(gè)換行符,故應(yīng)填入printf('\\n');或其他等價(jià)形式。

32.軟件工程管理軟件工程管理解析:軟件工程足指,采用工程的概念、原理、技術(shù)和方法指導(dǎo)軟件的開發(fā)與維護(hù):軟件工程學(xué)的主要研究對(duì)象包括軟件開發(fā)與維護(hù)的技術(shù)、方法、工具和管理等方面。即軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。

33.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個(gè)程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

34.efghefgh解析:本題定義了一個(gè)字符型指針變量p并通過賦初值讓它指向了一個(gè)字符串,定義了另一個(gè)字符型指針變量r和一個(gè)長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強(qiáng)制轉(zhuǎn)換為長整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句“r=(char*)q”,把長整型指針變量q的值再強(qiáng)制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址,最后輸出r指向的字符串,是“efgh”。

35.a=a+ba=a+b解析:a+=b與a=a+b等價(jià),作用是把變量a的值加b后再賦給變量a。

36.11解析:本題中的ch是一個(gè)字符變量,其初始值為'$'(非0值即為真),所以!ch的結(jié)果為假,此時(shí)&&右邊的i++被“短路”,即不會(huì)被計(jì)算。由此可見,i的值不會(huì)改變,故本題應(yīng)該填1。

37.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[i+1]值相加后的值賦予數(shù)組b中元素b[i],即可實(shí)現(xiàn)將一個(gè)數(shù)組的前項(xiàng)和后項(xiàng)之和存入另一數(shù)組。

38.11371,13,7解析:本題考查3個(gè)知識(shí)點(diǎn):①余數(shù)的計(jì)算,題中的a=10,b=3,a%b=1;②(表達(dá)式1,表達(dá)式2)形式的結(jié)果為最后一個(gè)表達(dá)式的值,題中的a=10,b=3,(a-b,a+b)=a+b=13;③條件運(yùn)算符的使用,題中的a-b?a-b:a+b,判斷語句a-b=7不為0,所以執(zhí)行a-b,結(jié)果為7。

39.010111212010111212解析:本題考查的是靜態(tài)局部變量的運(yùn)用。靜態(tài)局部變量的作用域與普通局部變量一樣,但它的生存期將延長到程序運(yùn)行結(jié)束。本題的主函數(shù)中使用一個(gè)for循環(huán)輸出循環(huán)變量i和fun(a)的值,由于a的值一直沒被修改過,所以三次調(diào)用的都是fun(5)。第1次調(diào)用,b=0,c=3,所以返回值為5+1+4=10;第2次調(diào)用,因?yàn)閏是靜態(tài)局部變量,它仍然保存著上次調(diào)用結(jié)束時(shí)的值4,而b重新被創(chuàng)建和初始化為0,所以返回值為5+1+5=11;同理,第3次調(diào)用返回的是12。所以,程序最終輸出為:010111212。

40.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實(shí)際上是要求s2字符串的長度,即是4。

41.A解析:數(shù)據(jù)流圖包括4個(gè)方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲(chǔ)文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實(shí)體)。不包括選項(xiàng)中的控制流。

42.AA)【解析】軟件生命周期的主要活動(dòng)階段為:可行性研究和計(jì)劃制定、需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測(cè)試、運(yùn)行和維護(hù)。其中需求分析是對(duì)開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能,編寫軟件規(guī)格說明書及初步的用戶手冊(cè),提交評(píng)審。

43.D解析:在switch語句中,若case語句后沒有break語句,則執(zhí)行完本層case后會(huì)繼續(xù)執(zhí)行后面case中的操作。k的初值為5,while條件成立,進(jìn)入switch(5),執(zhí)行default語句,退出switch,執(zhí)行k--后得4,再進(jìn)入while循環(huán),執(zhí)行switch(4),退出switch,再執(zhí)行k--后得3,繼續(xù)while循環(huán),執(zhí)行switch(3),n=n+k=3,再執(zhí)行k--后得2,進(jìn)入while循環(huán),執(zhí)行case2,再執(zhí)行n=n+k=5,然后執(zhí)行k--后得1,最后一次進(jìn)入while循環(huán),執(zhí)行case1,n=n+k=6,然后繼續(xù)執(zhí)行case2和case3后的語句,n=n+k=7,且執(zhí)行k--后得0,此時(shí)while條件不滿足,退出循環(huán),輸出n的值為7。

44.A解析:在C語言中,雖然字符都是變?yōu)槠鋵?duì)應(yīng)的ASCII碼值來參與算術(shù)運(yùn)算的,但字符間的相對(duì)位置關(guān)系還是不變的,字符8和字符2的ASCII碼值相差仍是6。

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

46.B解析:本題考查對(duì)外部存儲(chǔ)類型的結(jié)構(gòu)體變量進(jìn)行初始化。初始化后,data[0]x的值為10,data[0]y的值為100。輸出++(p->x)時(shí),++(p->x)就相當(dāng)于++data[0].x,這時(shí)data[0].x先自增,再使用,所以輸出11。

47.C解析:C語言規(guī)定每條語句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào),分號(hào)是C語句的必要組成部分。復(fù)合語句也稱為“語句塊”,其形式如下:{語句1;語句2;……語句n;},即用一對(duì)大括號(hào)把若干語句括起來構(gòu)成一個(gè)語句組。一個(gè)復(fù)合語句在語法上視為一條語句,在一對(duì)花括號(hào)內(nèi)的語句數(shù)量不限。一個(gè)賦值表達(dá)式的最后加一個(gè)分號(hào)就成為一條語句,即賦值語句??照Z句是只有一個(gè)分號(hào)的語句,它什么也不做,程序設(shè)計(jì)中有時(shí)需要加一個(gè)空語句來表示存在一條語句,但隨意加分號(hào)會(huì)導(dǎo)致邏輯上的錯(cuò)誤,而且這種錯(cuò)誤十分隱蔽,編輯器也不會(huì)提示邏輯錯(cuò)誤,需要慎用。

48.A解析:本題考查軟件工程的程序設(shè)計(jì)風(fēng)格。軟件在編碼階段,力求程序語句簡(jiǎn)單、直接,不能只為了追求效率而使語句復(fù)雜化。除非對(duì)效率有特殊的要求,程序編寫要做到清晰第一、效率第二。

人們?cè)谲浖嫫谝?jīng)常閱讀程序,特別是在軟件測(cè)試和維護(hù)階段,編寫程序的人和參與測(cè)試、維護(hù)的人都要閱讀程序,因此要求程序的可讀性要好。

正確的注釋能夠幫助讀者理解程序,可為后續(xù)階段進(jìn)行測(cè)試和維護(hù)提供明確的指導(dǎo)。

所以注釋不是可有可無的,而是必須的,它對(duì)于理解程序具有重要的作用。

I/O信息是與用戶的使用直接相關(guān)的,因此它的格式應(yīng)當(dāng)盡可能方便用戶的使用。在以交互式進(jìn)行輸入/輸出時(shí),要在屏幕上使用提示符明確提示輸入的請(qǐng)求,指明可使用選項(xiàng)的種類和取值范圍。經(jīng)過上述分析可知,選項(xiàng)A是不符合良好程序設(shè)計(jì)風(fēng)格要求的。

49.D解析:形參在個(gè)數(shù)和類型上要與實(shí)參匹配,形參在未被調(diào)用之前,不占用存儲(chǔ)單元。

50.B解析:程序運(yùn)行初始時(shí),x被賦值7,y被賦值3,因?yàn)閥為整型變量,因此表達(dá)式:y=x/y=7/3=2。

51.C解析:本題考查了字符的輸入函數(shù)getchar和利用scanf函數(shù)輸入一個(gè)字符。用scanf輸入字符時(shí),格式說明字符應(yīng)該為%c。本題選項(xiàng)C)因?yàn)橹羔榩沒有賦初值,所以是一個(gè)不定值,不能直接將getchar讀入的字符賦給指針p所指向的字符,所以選項(xiàng)C錯(cuò)誤。

52.A解析:樹的結(jié)點(diǎn)數(shù)等于所有結(jié)點(diǎn)的度與對(duì)應(yīng)的結(jié)點(diǎn)個(gè)數(shù)乘積之和加1。對(duì)任何一棵二叉樹T,如果其葉子結(jié)點(diǎn)數(shù)為n0,度為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+1,即葉子結(jié)點(diǎn)數(shù)總是比度為2的結(jié)點(diǎn)數(shù)多1。由于葉子結(jié)點(diǎn)個(gè)數(shù)為70,則度為2的結(jié)點(diǎn)數(shù)為70-1=69,所以總結(jié)點(diǎn)個(gè)數(shù)為69×2+80×1十1=219。

53.A解析:按位異或“^”運(yùn)算,是當(dāng)對(duì)應(yīng)位上的二進(jìn)制數(shù)值相同時(shí)結(jié)果為0,否則為1。因?yàn)閏1,c2的值相同,所以異或的結(jié)果為0,選項(xiàng)A)正確。按位與“&”運(yùn)算符只有當(dāng)所有對(duì)應(yīng)位上的數(shù)都不相同時(shí)結(jié)果才為0,所以c1&c2的值不可能為0,選項(xiàng)B)錯(cuò)誤?!啊笔前次蝗》?,由于十進(jìn)制數(shù)92轉(zhuǎn)化成二進(jìn)制數(shù)并不是全為1,所以即使取反也不能得到全為。的答案,所以錯(cuò)誤?!皘”是按位或運(yùn)算,由于十進(jìn)制數(shù)92轉(zhuǎn)化為二進(jìn)制數(shù)也不是全為0,所以按位或運(yùn)算后也不會(huì)全為0。

54.B解析:函數(shù)scanf()的調(diào)用形式是:scanf(格式字符串,輸入項(xiàng)地址表)。其中,“格式字符串”是要輸入的變量的格式符:“輸入項(xiàng)地址表”是要輸入的變量的地址。若在格式符中插入了其他字符,則在輸入時(shí)要求按一一對(duì)應(yīng)的位置原樣輸入這些字符,其中的逗號(hào)也必須輸入。

55.BB)【解析】數(shù)據(jù)元素是由多個(gè)數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)是能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng)。

56.B解析:一個(gè)函數(shù)可以帶回一個(gè)整型值、字符值、實(shí)型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號(hào)和*號(hào),由于()優(yōu)先級(jí)高于*。故它是—個(gè)返回整型指針的函數(shù)。

57.B解析:共用體變量中的所有成員共享存儲(chǔ)空間,因此變量中的所有成員的首地址相同,且變量的地址也就是該變量成員的地址。

58.A解析:本題考查的是函數(shù)調(diào)用時(shí)的參數(shù)傳遞問題。程序在調(diào)用函數(shù)f時(shí),傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個(gè)拷貝,函數(shù)f的所有操作只是針對(duì)這個(gè)數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會(huì)影響變量c的值。

59.D解析:本題的函數(shù)f是將兩個(gè)指針?biāo)傅膬蓚€(gè)單元中的數(shù)值對(duì)換。指針p指向數(shù)組a的第一個(gè)元素a[0]而指針q指向數(shù)組a的元素a[7]。調(diào)用f將p和q所指元素值對(duì)換,也就是將a[0]和a[7]的值對(duì)換,對(duì)換后結(jié)果分別是8、1。P++指向a[1],q-指向a[6J,繼續(xù)循環(huán),調(diào)用f將a[1]和a[6]交換,結(jié)果變成7、1。以此類推,直到p和q相遇循環(huán)站束。數(shù)組a的值由{1,2,3,4,5,6,7,8}變成了{(lán)8,7,6,5,4,3,2,1}。輸出9結(jié)果應(yīng)該是:8,7,6,5,4,3,2,1。

60.A解析:C語言中不能將字符串常量直接賦給數(shù)組。但在賦初值時(shí)可以。

61.A本題中由fllIl函數(shù)可知,b[o]-a[o][0卜a[0][3]_l-4=一3,b[1]=a[1][l]a[1][2]-6—7=-1,b[2]=a[2][2]a[2][l]-1\r\n1-113=-1,b[3]=a[3][3]a[3l]=16—13=3。因此主函數(shù)中打印Y數(shù)組元素的值為A)選項(xiàng)。

62.D

63.D聲明data是結(jié)構(gòu)S數(shù)組。初始化data『0].a(chǎn)=10;data[0].b=100;data[1].a(chǎn)=20;data[1].b=200。主函數(shù)中P=data[1];即P.a(chǎn)=data[1].a(chǎn);P.b=data[1].b;執(zhí)行語句prinff(”%d\n”,++(P.a(chǎn)));打印輸出時(shí)p.a(chǎn)先增l再打印。P.a(chǎn)=data[1].a(chǎn)=20,先增1等于21。

64.D根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點(diǎn)總比度為2的結(jié)點(diǎn)多一個(gè),因此本題中度為2的結(jié)點(diǎn)為l一1=0個(gè),據(jù)此可以知道本題目中的二叉樹的每一個(gè)結(jié)點(diǎn)都有一個(gè)分支,所以共7個(gè)結(jié)點(diǎn)共7層,即深度為7,選擇D)。

65.B本題中要求輸出右上半角的數(shù),對(duì)角線上的數(shù)的下標(biāo)相同,所以j=i。

66.C本題中指針p1、p2、p3指向a、b、c值所存放的地址空間,然后再將指針變量*p1、*p2中值的乘積賦給指針變量*P,即賦給變量c,輸出c的值3。

67.C選項(xiàng)A“對(duì)于float類型數(shù)組,不可以直接用數(shù)組名完成對(duì)數(shù)組進(jìn)行整體輸入或輸出”,是正確的。C語言中規(guī)定,只有字符型的數(shù)組才可以用數(shù)組名完成對(duì)數(shù)組進(jìn)行整體輸入或輸出,主要是因?yàn)闆]有字符串型的變量,通常用一個(gè)字符數(shù)組來存放字符串。采用字符串方式后,便可用數(shù)組名對(duì)數(shù)組進(jìn)行整體輸入和輸出。

選項(xiàng)B“數(shù)組名代表的是數(shù)組所占存儲(chǔ)區(qū)的首地址,其值是常量,是不可改變的”,是正確的。數(shù)組名本身是沒有方括號(hào)和下標(biāo)的,它實(shí)際上是表示數(shù)組起始的地址,該地址在數(shù)組初始化時(shí)由系統(tǒng)分配。

選項(xiàng)C“當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時(shí),系統(tǒng)將給出‘下標(biāo)越界’的出錯(cuò)信息”,是錯(cuò)誤的。在某些編程語言中,下標(biāo)的取值是不允許超出數(shù)組定義中所設(shè)的界限的。但是在C和C++中,編譯器不對(duì)下標(biāo)的范圍進(jìn)行檢查。不檢查下標(biāo)范圍的目的有兩個(gè),一個(gè)是提高運(yùn)行效率,不檢查下標(biāo),程序編譯耗費(fèi)時(shí)間少。另一個(gè)是能夠方便指針的使用,數(shù)組名并沒有包含該數(shù)組長度的信息,只包含地址信息,可以看成是一個(gè)指針,若檢查下標(biāo),將限制數(shù)組名的使用功能。

選項(xiàng)D“可以通過賦初值的方式確定數(shù)組元素的個(gè)數(shù)”是正確的。C語言規(guī)定,如果對(duì)數(shù)組中所有的元素賦初值,可以省略定義元素的個(gè)數(shù)。

68.AA。數(shù)據(jù)定義語言(DDL)是集中負(fù)責(zé)數(shù)據(jù)庫模式定義與數(shù)據(jù)庫對(duì)象定義的語言。數(shù)據(jù)操縱語言(DML)是指用來查詢、添加、修改和刪除數(shù)據(jù)庫中數(shù)的語句。數(shù)據(jù)控制語言(DCL)是用來設(shè)置或者更改數(shù)據(jù)為用戶或角色權(quán)限的語句。據(jù)此,本題正確答案為選項(xiàng)A。

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

70.B

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

72.C\n通常將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用、退役的過程稱為軟件生命周期。

\n

73.A當(dāng)執(zhí)行g(shù)ets(ss)后,ss數(shù)組中的元素為ABC,再執(zhí)行strcat(ss,"6789"),strcat的作用,是把6789連接到了ss數(shù)組后面,執(zhí)行完后SS數(shù)組為ABC6789,故選擇A選項(xiàng)。

74.A

75.D商品與顧客兩個(gè)實(shí)體集之間的買與被買聯(lián)系是多對(duì)多的,因?yàn)橐环N商品可以被多個(gè)顧客購買,而一個(gè)顧客也可以買多個(gè)商品。

76.A算術(shù)運(yùn)算符的優(yōu)先級(jí)高于關(guān)系運(yùn)算符的優(yōu)先級(jí),所以當(dāng)x為大于1的奇數(shù)時(shí),A選項(xiàng)的值為假,即0。B選項(xiàng)的值為不定值,但絕對(duì)不是0。c選項(xiàng)的值為真,即l。D選項(xiàng)的值為真,即l。

77.A\n本題中定義了整形變量case,但case是關(guān)鍵字,關(guān)鍵字不能用做標(biāo)識(shí)符。單精度printF不是關(guān)鍵字,因?yàn)闃?biāo)識(shí)符區(qū)分大小寫。所以A不正確。

\n

78.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或?yàn)椤凹佟睍r(shí)執(zhí)行指定的動(dòng)作,由if引導(dǎo)條件為“真”時(shí)執(zhí)行的操作;由else引導(dǎo)條件為“假”時(shí)執(zhí)行的操作。else語句要與上面最近的if語句進(jìn)行匹配,如果要嵌套調(diào)用if-else語句,需要將嵌套部分用{}括起來,避免程序報(bào)錯(cuò)。題目中給出了一個(gè)if語句和一個(gè)if-else語句,if-else語句為第一個(gè)if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進(jìn)行x++操作。x的初始值為1,輸出結(jié)果為1。

79.C參考答案

80.B解析:條件表達(dá)式的形式為:“表達(dá)式1?表達(dá)式2:表達(dá)式3”。其含義為:當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí)“表達(dá)式2”的值就是整個(gè)條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),求出“表達(dá)式3”的值,此時(shí)“表達(dá)式3”的值就是整個(gè)條件表達(dá)式的值。對(duì)于本題來說,當(dāng)表達(dá)式EXP為非0值時(shí)條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時(shí),執(zhí)行語句j--;這等同于條件表達(dá)式“(EXP!=0)?i++:i++;”。

81.

82.

【解析】此題考查用for循環(huán)遍歷字符串和通過條件表達(dá)式*ss!=ˊ\0ˊ來判斷字符串是否結(jié)束。給字符串加上結(jié)束標(biāo)識(shí)ˊ\0ˊ,通過for循環(huán)遍歷字符串中每一個(gè)字符,在遇到結(jié)束標(biāo)識(shí)前,如果遇到指定(即用戶輸入)字符,變量i加1,最后將變量i返回,即用戶輸入字符在字符串中出現(xiàn)的次數(shù)。

</y&&!z||1>2021年廣東省廣州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.

2.若一個(gè)棧以向量V[1..n]存儲(chǔ),初始棧頂指針top為n+1,則下面x進(jìn)棧的正確操作是()。

A.top=top+1;V[top]=x

B.V[top]=x;top=top+1

C.top=top-1;V[top]=x

D.V[top]=x;top=top-1

3.在目標(biāo)串T[0,n-1]=”xwxxyxy”中,對(duì)模式串p[0,m-1]=”xy”進(jìn)行子串定位操作的結(jié)果_______

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

4.下列程序段輸出的字符串長度為()。printf("\\aaa\'ccc\bddd\'");

A.11B.12C.13D.17

5.x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是

A.INPUTx、v、z;

B.scanf("%d%d%d",&x,&y,&z);

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

6.有以下程序,其中函數(shù)f的功能是將多個(gè)字符串按字典順序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)ifstrcmp(p[i],p[j])>0{t=p[i]p[i]=p[j];p[j]=t;}}main(){char*p[5]=("abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序運(yùn)行后的輸出結(jié)果是______。A.2B.3C.6D.4

7.下面結(jié)構(gòu)中最適于表示稀疏無向圖的是()。

A.鄰接矩陣B.逆鄰接表C.鄰接多重表D.十字鏈表

8.

9.以下程序的輸出結(jié)果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

10.數(shù)字字符0的ASCII值為48,運(yùn)行下列程序的輸出結(jié)果是()。main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-A);}

A.3,2B.50,2C.2,2D.2,50

11.算法應(yīng)該是()

A.程序B.問題求解步驟的描述C.要滿足五個(gè)基本特性D.B和C

12.

13.設(shè)有二維數(shù)組A7×8,每個(gè)數(shù)據(jù)元素占8個(gè)字節(jié)存儲(chǔ)單元,順序存放,A第一個(gè)元素A0,0的存儲(chǔ)地址為1000,數(shù)組A的最后一個(gè)元素A6,7的存儲(chǔ)地址為()。

A.1024B.1440C.1448D.1432

14.若有定義:“inta[2][3];”,則對(duì)a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

15.在一個(gè)C語言源程序文件中所定義的全局變量,其作用域?yàn)椋ǎ?/p>

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

16.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

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

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

18.設(shè)n、m為一棵二叉樹上的兩個(gè)結(jié)點(diǎn),在中序遍歷時(shí),n在m之前的條件是_____________。

A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孫

19.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

20.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.hAppychristmAs

B.happychristmas

C.HAppyCHrIstmAs

D.HAPPYCHRISTMAS二、2.填空題(20題)21.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

22.有以下程序片段,請(qǐng)問執(zhí)行后的輸出結(jié)果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

23.下面程序的輸出是【】。

main()

{enumern{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

24.類是一個(gè)支持集成的抽象數(shù)據(jù)類型,而對(duì)象是類的【】。

25.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長度,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡?/p>

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

26.順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置______的存儲(chǔ)單元中。

27.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級(jí)模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

28.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

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

intf(inta[],intn)

{

if(n>=l)

returnf(a,n-1)+a[n-1];

else

return0;

}

main{)

{

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

s=f(aa,5);

printf{'%d\n",s);

}

30.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括選擇、連接和【】。

31.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始構(gòu)成的三角形字符陣列圖形。例如,輸入整數(shù)5時(shí)(注意:n不得大于10),程序運(yùn)行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請(qǐng)?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

{for(i=1;i<=n;i++)

{for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

}

elseprintf("nistoolarge!\n")

printf("\n"0);

}

32.軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和【】。

33.注釋一般分為序言性注釋和______注釋。

34.以下程序的輸出結(jié)果是______。

main()

{char*p-"abcdefgh",*r;

long*q;

q=(long*)p;

q++;

r=[char*)q;

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

}

35.與表達(dá)式a+=b等價(jià)的另一書寫形式是______。

36.己定義charch='$';inti=l,j;,執(zhí)行j=!ch&&ii++以后,i的值為【】。

37.下列程序中的數(shù)組a包括10個(gè)整數(shù)元素,分別將前項(xiàng)和后項(xiàng)之和存入數(shù)組b,并按每行4個(gè)元素輸出數(shù)組bo請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4==0)printf("\n");

printf("%3d",b[i]);

}

}

38.下列程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{inta=10,b=3;

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

printf("%d,",(a-b,a+b));

printf("%d\n",a-b?a-b:a+b);

}

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

40.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果為______。

三、1.選擇題(20題)41.數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

A.控制流B.加工C.數(shù)據(jù)存儲(chǔ)D.源和潭

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

A.需求分析B.詳細(xì)設(shè)計(jì)C.軟件設(shè)計(jì)D.概要設(shè)計(jì)

43.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是______。

A.0B.4C.6D.7

44.表達(dá)式'8'-'2'的值是()。

A.整數(shù)6B.字符6C.表達(dá)式不合法D.字符8

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

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

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

46.有以下程序:#include<stdio.h>structs{intx,y;}data[2]={10,100,20,200};main(){structs*p=data;printf("%d\n",++(p->x));程序運(yùn)行后的輸出結(jié)果是()。

A.10B.11C.20D.21

47.下列敘述中錯(cuò)誤的是()。

A.C語句必須以分號(hào)結(jié)束

B.復(fù)合語句在語法上被看作一條語句

C.空語句出現(xiàn)在任何位置都不會(huì)影響程序運(yùn)行

D.賦值表達(dá)式末尾加分號(hào)就構(gòu)成賦值語句

48.下列敘述中,不符合良好程序設(shè)計(jì)風(fēng)格要求的是()

A.程序的效率第一,清晰第二B.程序的可讀性好C.程序中要有必要的注釋D.輸入數(shù)據(jù)前要有提示信息

49.以下正確的說法是______。

A.實(shí)參和與其對(duì)應(yīng)的形參各占用獨(dú)立的存儲(chǔ)單元

B.實(shí)參和與其對(duì)應(yīng)的形參共用一個(gè)存儲(chǔ)單元

C.只有當(dāng)實(shí)參和與其對(duì)應(yīng)的形參同名時(shí)才共用存儲(chǔ)單元

D.型參是虛擬的,函數(shù)在沒有被調(diào)用時(shí),不占用存儲(chǔ)單元

50.下面程序的輸出結(jié)果是()。#include<stdio.h>main(){intx=7,y=3;printf("%d",y=x/y);}

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

51.下列程序段中,不能正確賦值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

52.一顆二叉樹中共有70個(gè)葉子節(jié)點(diǎn)與80個(gè)度為1的節(jié)點(diǎn),則二叉樹的總節(jié)點(diǎn)數(shù)為()。

A.219B.221C.229D.231

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

A.c1∧c2B.c1&c2C.~c2D.c1|c2

54.已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使i、j、k的值分別為2、3、4,下列正確的輸入語句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scanf("%d,%d,%d",&i,&j,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

55.在數(shù)據(jù)處理中,其處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)項(xiàng)C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)元素

56.定義int*swap()指的是______。

A.一個(gè)返回整型值的函swap()

B.—個(gè)返回指向整型值指針的swap()

C.一個(gè)指向函數(shù)swap()的指針,函數(shù)返回一個(gè)整型值

D.以上說法均錯(cuò)

57.已知字符0的ASCⅡ碼為十六進(jìn)制數(shù)30,下面程序的輸出是______。main(){inti;union{unsignedcharc;unsignedinti[4];}z;z.i[0]=0x39;z.i[1]=0x36;printf("%d\n",z.c);}

A.56B.57C.58D.59

58.有以下程序

#include<stdio.h>

#include<string.h>

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

voidf(STUa)

{STUb={"Zhao",′m′,850,900};inti;

strcpy(,);

a.sex=b.sex;

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

}

main()

{STUc={"Qian",′f′,95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);

}

程序的運(yùn)行結(jié)果是

A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90

59.有以下程序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{f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是______。

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,

60.以下選項(xiàng)中,不能確定賦值的是______。

A.chars1[10];s1="chest";

B.chars2[]={'C','t','e','s','t'};

C.chars3[20]="Chest";

D.char*s4="Ctest\n"

四、選擇題(20題)61.有以下程序程序運(yùn)行后的輸出結(jié)果是(.)。

A.-3,-1,1,3,B.-12,一3,0,0C.0,1,2,3,D.一3,-3,一3,一3,

62.

63.有以下程序:

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

A.10B.11C.20D.21

64.某二叉樹共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有l(wèi)個(gè),則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。

A.3B.4C.6D.7

65.有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",'');

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應(yīng)填入的是()。A.A.i-1B.iC.i+1D.4一i66.有以下程序:main{inta=1,b=3,C=5,*P;int*p1=&a,*p2=&b,*p3=&c;*p=*p1*(*p2);}執(zhí)行后的輸出結(jié)果是()。A.1B.2C.3D.4

67.28.以下敘述中錯(cuò)誤的是

A.對(duì)于float類型數(shù)組,不可以直接用數(shù)組名完成對(duì)數(shù)組進(jìn)行整體輸入或輸出

B.?dāng)?shù)組名代表的是數(shù)組所占存儲(chǔ)區(qū)的首地址,其值是常量,是不可改變的

C.當(dāng)執(zhí)行程序時(shí),數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時(shí),系統(tǒng)將給出“下標(biāo)越界”的出錯(cuò)信息

D.可以通過賦初值的方式確定數(shù)組元素的個(gè)數(shù)

68.數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)模式定義的語言是()。A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

69.有以下程序:

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

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

70.

71.若有說明語句:double*p,a;則通過scanf語句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是()。A.A.*p=&a;scanf("%1f”,p);

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

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

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

72.軟件生命周期是指()。

A.軟件的開發(fā)過程

B.軟件的運(yùn)行維護(hù)過程

C.軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程

D.軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測(cè)試完成的過程

73.當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出結(jié)罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

74.

75.“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是()。

A.一對(duì)一B.多對(duì)一C.一對(duì)多D.多對(duì)多

76.以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時(shí),值為0的表達(dá)式是()。

A.x%2==0B.x/2C.x%21=0D.x%2==1

77.閱讀以下程序:

#include<stdio.h>

main()

{intcase;floatprintF;

printf("請(qǐng)輸人2個(gè)數(shù):");

scanf("%d%fl"&case,&printF);

printf("%dofof\n",case,printF);

}

該程序在編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是()。

A.定義語句出錯(cuò),case是關(guān)鍵字,不能用做用戶自定義標(biāo)識(shí)符

B.定義語句

溫馨提示

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

評(píng)論

0/150

提交評(píng)論