2021-2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2021-2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2021-2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2021-2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2021-2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年浙江省杭州市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列定義數(shù)組的語句中錯誤的是()。

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

B.intx[][3]={0};

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

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

2.設(shè)有二元關(guān)系R和三元關(guān)系s,下列運算合法的是()。

A.R∩SB.R∪SC.R-SD.R×S

3.下列說法錯誤的是______。

A.關(guān)系中每一個屬性對應(yīng)一個值域

B.關(guān)系中不同的屬性可對應(yīng)同一值域

C.對應(yīng)同一值域的屬性為不同的屬性

D.DOM(A)表示屬性A的取值范圍

4.數(shù)據(jù)結(jié)構(gòu)若采用鏈式存儲結(jié)構(gòu),要求內(nèi)存中可用存儲單元的地址()。

A.必須是連續(xù)的B.部分地址必須是連續(xù)的C.一定是不連續(xù)的D.連續(xù)不連續(xù)都可以

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

B.intN=10;int[N];

C.intx0..10];

D.Intx[];.

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

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

7.下列選項中不合法的十六進制數(shù)是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

8.下列敘述中錯誤的是()。

A.C語言程序必須由一個或一個以上的函數(shù)組成

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

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

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

9.在ASC算法team日常開發(fā)中,常常面臨一些數(shù)據(jù)結(jié)構(gòu)的抉擇,令人糾結(jié)。目前大家在策劃一個FBI項目(FastBinaryIndexing),其中用到的詞匯有6200條,詞匯長度在10-15之間,詞匯字符是英文字母,區(qū)分大小寫。請在下面幾個數(shù)據(jù)結(jié)構(gòu)中選擇一個使檢索速度最快的()

A.二叉搜索樹,比較函數(shù)開銷:1次運算/每字符

B.哈希表,hash算法開銷:10次運算/每字符

C.鏈表,比較函數(shù)開銷:1次運算/每字符

D.TRIE樹,尋找子節(jié)點開銷:1次運算/每字符

10.插入和刪除只能在一端進行線性表,稱為()。

A.隊列B.循環(huán)隊列C.棧D.循環(huán)棧

11.

12.設(shè)有以下程序段:structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求輸入字符串給結(jié)構(gòu)體變量rec的title成員,錯誤的輸入語句是()。

A.scanf(“%s”,ptr.title);

B.scanf(“%s”,rec.title);

C.scanf(“%s”,(*ptr).title);

D.scanf(“%s”,ptr->title);

13.有以下程序:main{inti,j;for(j=10;j<11;j++){for(i=9;i<j;i++)if(!(j%i))break;if(i==j-1)printf("%d",j);}}輸出結(jié)果是()。A.11B.10C.9D.1011

14.有以下程序: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ù)組右上半三角1234678111216則在程序下劃線處應(yīng)填入的是()。A.i-1B.iC.i+1D.4一i

15.有以下程序程序執(zhí)行后的輸出結(jié)果是()

A.60B.50C.45D.55

16.設(shè)已包含頭文件<string.h>,下列程序段的運行結(jié)果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

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

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

18.在一個具有n個結(jié)點的有序單鏈表中插入一個新結(jié)點并仍然保持有序的時間復(fù)雜度是()。

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

19.在Internet中,域名服務(wù)器的主要功能是實現(xiàn)()的轉(zhuǎn)換。

A.IP地址到域名(主機名字)B.域名到IP地址C.主機IP地址和路由器IP地址之間D.路由器IP地址之問

20.若有以下定義和語句

chars1[10]="abcd!",*s2="\n123\\";

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

則輸出結(jié)果是A.A.55B.105C.107D.58

二、2.填空題(20題)21.以下程序的運行結(jié)果是()。

main()

(inta=2,b=7,c=5;

switch(a>0)

{case1:switch(b<0)

{case1:switch(");break;

case2:printf("!");break;

}

case0:switch(c==5)

{case0:printf("*");break;

case1:printf("#");break;

case2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

22.有以下程序:

main()

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

p=&a[0][0];

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

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

}

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

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

main()

{unsignedshorta=65536;intb;

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

}

24.輸出若干學(xué)生3門課程的成績。

#include<stdio.h>

【】

structstudent

{intnum;

floatscore[3];

}

main()

{inti=0,n;

floata[3];

【】*ptr[200];

printf("請輸入學(xué)生學(xué)號和3門課成績,學(xué)號為0表示數(shù)據(jù)輸入結(jié)束\n");

do

{ptr[i]=(structstudent*)malloc(sizeof(structstudent));

scanf("%d%f%f%f",&ptr[i]->num,&a[O],&a[1],&a[2]);

ptr[i]->score[O]=a[O];

ptr[i]->score[1]=a[1];

ptr[i]->score[2]=a[2];

if(【】)break;

i++;

}while(1);

n=i-1;

【】;

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

printf("%-6d%.1f%.1f%.1f\n",ptr[i]->num,ptr[i]->score[0],

ptr[i]->score[1],ptr[i]->score[2]);}

25.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",【】);

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

{if(a[i]>0)

{count++;

sum+=【】;

}

}

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

}

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

27.在關(guān)系運算中,【】運算是在給定關(guān)系的某些域上進行的運算。

28.下述函數(shù)統(tǒng)計字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=")flag=0;

elseif【】{flag=1;num++}

}

return【】;}

29.在一個容量為15的循環(huán)隊列中,若頭指針front=6,尾指針Year=9,則該循環(huán)隊列中共有【】個元素。

30.僅依據(jù)規(guī)格說明書描述的程序功能來設(shè)計測試實例的方法稱為【】。

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

main()

{charm;

m='B'+32;printf("%c\n",m);

}

32.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

33.當(dāng)運行以下程序時,從鍵盤輸入abcdabcdef<CR>

cde<CR>

(<CR>表示回車),則下面程序的運行結(jié)果是【】。

#include<stdio.h>

main()

{inta;chars[80],t[80];

gets(s);gets(t);

a=fun(s,t);

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

fun(char*p,char*q)

{inti;

char*p1=p;

char*q1;

for(i=0;*p!='\0';p++,i++)

{p=p1+i;

if(*p!=*q)continue;

for(q1=q+1,p=p+1;*p!='\0'&&*q1!='\0';q1++,p++)

if(*p!=*q1)break;

if(*q1=='\0')returni;}

return(-1);}

34.數(shù)據(jù)庫保護分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

35.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)

while(s[i]){d[j]=【】;j++;}

d[j]=0;

36.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

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

main()

{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

40.以下程序用業(yè)統(tǒng)計文件十字符個數(shù)。請?zhí)羁铡?/p>

#include"stdio.h"

main()

{FTLE*fp;longnum=OL;

if((fp=fopen("fname.dat","r"))==NUlL)

{pirntf("Openerror\n");exit(0);}

while()

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

三、1.選擇題(20題)41.假定所有變量均已正確說明,下列是程序段運行后x的值是()a=b=C=O;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

42.以下敘述中正確的是

A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B.花括號“{”和“}”只能作為函數(shù)體的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

43.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()

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

44.有以下程序#include<stdio.h>main(){intk=5,n=0;while(k>0){switch(k){defhult:break;case1:n+=k:case2:case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是()

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

45.有以下程序#include<string.h>structSTU{charname[10];intnum;};voidf(char*name,intnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].num;strcpy(name,s[0].name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;p=&s[1];f(p->name,p->num);printf("%s%d\n",p->name,p->num);}程序運行后的輸出結(jié)果是

A.SunDan20042B.SunDan20044C.LiSiGuo20042D.YangSan20041

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

A.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間具有密切的聯(lián)系

B.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象都是公用的

C.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間相對獨立,相互依賴性小

D.上述三種說法都不對

47.語句“printf("%d\n",12&012);”的輸出結(jié)果是______。

A.12B.8C.6D.12

48.下列敘述中,正確的一條是______。

A.putchar函數(shù)可以輸出一個字符串

B.在printf("%c",c)函數(shù)中,兩個c是一樣的

C.語句printf("%d%%",1)的輸出結(jié)果為1%

D.用scar函數(shù)輸入數(shù)據(jù)時可以規(guī)定精度,例如scanf("%7.2f",&a)

49.下列程序的輸出結(jié)果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}

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

50.有以下程序

#include

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

從第一列開始輸入以下數(shù)據(jù)代表一個回車符。

2743

程序的輸出結(jié)果是

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

51.下面程序main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%d\n",k,a,B);}的輸出是_______。

A.003B.012C.103D.112

52.詳細設(shè)計主要確定每個模塊具體執(zhí)行過程,也稱過程設(shè)計,下列不屬于過程設(shè)計工具的是()

A.DFD圖B.PAD圖C.N-S圖D.PDL

53.設(shè)有如下程序段:intx=2002,y=2003;printf("%d\n",(x,y));則以下敘述中正確的是()。

A.輸出語句中格式說明符的個數(shù)少于輸出項的個數(shù),不能正確輸出

B.運行時產(chǎn)生出錯信息

C.輸出值為2002

D.輸出值為2003

54.若有以下函數(shù)首部intfun(doublex[10],int*n)則下面針對此函數(shù)的函數(shù)聲明語句中正確的是______。A.intfun(doublex,int*n);

B.intfun(double,int);

C.intfun(double*x,intn);

D.intfun(double*,int*);

55.在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為A.32B.31C.16D.15

56.經(jīng)下列語句定義后,sizeof(x)、sizeof(y)、sizeof(a)、sizeof(b)在IBM-PC機上的值分別為______。charx=65;floaty=7.3;inta=100;doubleb=4.5;

A.2,2,2,4B.1,2,2,4C.1,4,2,8D.2,4,2,8

57.若fp是指向某文件的指針,且已讀到文件末尾,則函數(shù)feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

58.以下敘述中正確的是()。

A.C語言的源程序不必通過編譯就可以直接運行

B.C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令

C.C源程序經(jīng)編譯形成的二進制代碼可以直接運行

D.C語言中的函數(shù)不可以單獨進行編譯

59.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項中正確的輸入語句是()。

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

B.scanf("%d%d%d",a,b,C);

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

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

60.結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是()。

A.過程、子程序和分程序B.順序、選擇和重復(fù)C.遞歸、堆棧和隊列D.調(diào)用、返回和轉(zhuǎn)移

四、選擇題(20題)61.以下程序的運行結(jié)果是()。

#include<stdio.h>

main{inta=1,b=2,c=3,x;

x=(a^b)&c;printf("%d\n",x);}

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

62.有以下程序段:

以下選項中表達式的值為11的是()。

A.

B.

C.

D.

63.

64.一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯(lián)系是()。

A.1:1聯(lián)系B.1:m聯(lián)系C.m:1聯(lián)系D.m:n聯(lián)系

65.有以下程序

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)

puts(ps);

}

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

A.yzB.zC.zD.x

xyzyzyzxy

xyzxyz

66.有以下程序:

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

A.1,2,3,0,0,0,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

67.

有下列程序:

intfun(intx[],intn)

{staticintsum=0,i:

for(i0;i<n;i++)sum+=x[i];

returnsum;

}

main

{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:

s=fun(a,5)+fun(b,4);printf("%d\n",s):

}

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

A.45B.50C.60D.55

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

A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)

69.

70.

71.

72.

73.

74.當(dāng)執(zhí)行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤

75.表示關(guān)系M<=N<=P的C語言表達式為()。

A.(M<=N.AND(N<=P.

B.(M<=N.&&(N<=P.

C.(M<=N<=P.

D.(M<=N.&(N<=P.

76.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

77.第

42

下面說明不正確的是

A.chara[10]="china";

B.chara[10],*p=a;p="china"

C.char*a;a="china";

D.chara[10],*p;p=a="china"

78.

下列程序的輸出結(jié)果是()。

char*point(char*pt):

main

{charb[4]={a,c,s,f),*pt=b;

pt=point(pt);

printf("%c\n",*pt);

}

point(char*p)

{p+=3;

returnp;

}

A.sB.cC.fD.a

79.若有定義:charc;doubled;程序運行時輸入:12<;回車>;,能把字符1輸入給變量c、數(shù)值2輸入給變量d的輸入語句是()。

80.在關(guān)系數(shù)據(jù)庫系統(tǒng)中,當(dāng)關(guān)系的模型改變時,用戶程序可以不變,這是

A.?dāng)?shù)據(jù)的物理獨立性B.?dāng)?shù)據(jù)的邏輯獨立性C.?dāng)?shù)據(jù)的位置獨立性D.?dāng)?shù)據(jù)的存儲獨立性

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:從低位開始依次取出長整型變量s中奇數(shù)位上的數(shù),構(gòu)成一個新數(shù)存放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為7654321時,t中的數(shù)為7531。請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<;stdi0.h>;

六、程序設(shè)計題(1題)82.N名學(xué)生的成績已在主函數(shù)中放人一個帶頭節(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)值返回。

例如,若學(xué)生的成績是:8576698591726487,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。

參考答案

1.DD選項中“x[2][3]”定義的是一個2行3列的二維數(shù)組,而在給數(shù)組元素賦值時卻賦成了3行,所以錯誤。故本題答案為D選項。

2.D本題給出的兩個關(guān)系R與S的表結(jié)構(gòu)是不同的(R是二元關(guān)系,S是三元關(guān)系),它們不能進行∩、∪、一運算。而兩個不同結(jié)構(gòu)的關(guān)系是可以進行笛卡兒積(×)運算的。

3.C解析:關(guān)系中每一個屬性都有一個取值范圍,稱為屬性的值域。每—個屬性對應(yīng)一個值域,不同屬性可對應(yīng)同一個值域。對應(yīng)同一值域的卻不一定是不同的屬性。屬性的值域用DOM(A)表示,A表示屬性的名稱。

4.D

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

6.B解析:fun()函數(shù)是將傳進來的兩個整型參數(shù)相加,把和作為函數(shù)值返回,注意返回值為float型。在主函數(shù)調(diào)用了兩次fun()函數(shù),第一次調(diào)用時把表達式“a+c”和變量“b”的值求和,得到15轉(zhuǎn)換為15.0作為函數(shù)的返回值。第二次調(diào)用把第一次調(diào)用的返回值通過強制類型轉(zhuǎn)換成int型15,再和表達式“a-c”相加,得到結(jié)果9,轉(zhuǎn)換成float型作為函數(shù)值返回。由于輸出格式符為“%3.of輸出時沒有小數(shù)位,故輸出為9。

7.C十六進制是以“0x、0X”開頭的字符串,字符串中只能含有0~9這l0個數(shù)字和a、b、C、d、e、f這6個字母。

8.D形參是定義函數(shù)時由用戶定義的。實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是“值傳遞'是單向傳遞。故本題答案為D選項。

9.D

10.C

11.C

12.A運算符“->”適用指針訪問成員變量,運算符“.”適用普通變量訪問成員變量。ptr是指針,只能用“->”,因此選項A錯誤。選項B中,rec.title代表數(shù)組title,選項B正確,同理選項C正確?!?ptr”是結(jié)構(gòu)體變量rec,可以使用運算,因此選項D正確。故本題答案為A選項。

13.B本題考多循環(huán)的使用,當(dāng)j=10,i=9時,循環(huán)成立,第一個if條件為假,第二個if條件i==j-1成立,則輸出j的值為10,接者執(zhí)行i++后,i為10;當(dāng)i為10,for循環(huán)不成立,退出內(nèi)層循環(huán),此時執(zhí)行j++后,j為11,循環(huán)不成立,退出循環(huán)。

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

15.A函數(shù)fun的功能是求數(shù)組的n個元素之和。fun(a,5)=15。由于s岫是靜態(tài)局部變量,所以保持l5不變,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。

16.A解析:頭文件<string.h>是字符串處理函數(shù)對應(yīng)的頭文件,要想調(diào)用C語言的庫函數(shù)時,都要在程序中嵌入該函數(shù)對應(yīng)的頭文件,否則無法使用庫函數(shù)。

strcpy(s1,s2)把s2中的字符串復(fù)制到s1中,所以結(jié)果就為s2的長度。

17.D解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。

選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。

選項C錯誤,因為根據(jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。

所以,本題的正確答案為D。

18.B

19.B在Internet中,把域名翻譯為IP地址的軟件稱為域名系統(tǒng)DNS,運行域名系統(tǒng)的主機稱為域名服務(wù)器。域名服務(wù)器的主要功能是實現(xiàn)入網(wǎng)主機名字和IP地址的轉(zhuǎn)換。

20.A

21.#&#&解析:剛開始時,switch后面的表達式a>0為真(1),與case1匹配,然后執(zhí)行case1后面的switch語句,表達式b<0值為0,沒有與其匹配的語句,返回外層,因為外層沒有break語句,順序執(zhí)行case0后面的switch語句,表達式“c==5”值為1,與其后面的case1匹配,因此輸出#,遇到break返回外層,又因為外層沒有break語句,順序執(zhí)行default后的語句,輸出&。

22.66解析:本題定義了二維數(shù)組a和指針變量p,p指向數(shù)組的首地址,for循環(huán)語句的功能是給數(shù)組元素賦值,結(jié)果為a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函數(shù)的輸出結(jié)果為6。

23.00解析:對于一個unsignedshort來說,它能取的最大值是65535。這里給a賦值65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實際為0。

24.#include<alloc.h>structstudentptr[i]->num==Ofree(ptr[i])#include<alloc.h>\r\nstructstudent\r\nptr[i]->num==O\r\nfree(ptr[i])

25.&a[i]或a+ia[i]或*(a+i)&a[i]或a+i\r\na[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20的整型數(shù)組,然后通過一個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[i]或a+i,然后再通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于0將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,所以應(yīng)該填a或*(a+i)。

26.一對多一對多解析:由于一個項目主管可以管理多個項目,而一個項目只能有一個項目主管,“項目主管”這個實體與“項目”這個實體的管理關(guān)系囑于一對多。

27.投影投影解析:在關(guān)系運算中,投影運算是在給定關(guān)系的某些域上進行的運算。

28.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計字符串單詞個數(shù)的算法中,本題的flag是為了記錄一個單詞是否結(jié)束。第13空應(yīng)填*s++;如果某個字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空恪,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是—個單詞的開始,將flag標志為1,num的值加1,如果不是,則不必記錄。故第14空應(yīng)填flag=0或*(s-1);最后一個空格需填寫的是返回的單詞的個數(shù),即num。

29.3

30.黑箱法黑箱法

31.BB解析:字符類型的數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,另外,字符數(shù)據(jù)還可以作為整數(shù)參加運算。格式控制參數(shù)中的格式字符用以指定輸出項的數(shù)據(jù)類型和輸出格式,輸出字符與其對應(yīng)的輸出項的類型要一致。本題中,“b”的ASCII碼為98,字符類型m的ASCII碼為98+32=130,所以最后輸出為b。

32.空間復(fù)雜度和時間復(fù)雜度算法的復(fù)雜性是指對一個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計算量是算法的時間復(fù)雜性。

33.a=6a=6解析:字符指針p++使指針向后移動一個字符的位置,而*p則是取得指針p所在位置的字符元素。

34.完整性控制完整性控制

35.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應(yīng)使用i的自增后置來實現(xiàn)。

36.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。

37.66解析:本題變量z的值應(yīng)為最后一次給它賦的值,且最后一次for循環(huán)使prt指向a[2]

38.3131解析:在函數(shù)調(diào)用時,形參值和改變,不會改變實參的值。

39.86518651解析:主程序中,第一次循環(huán)時,i=0,調(diào)用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調(diào)用sb(s,x)子函數(shù),因為將n定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調(diào)用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調(diào)用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。

40.!feof(fp)!feof(fp)解析:本題中統(tǒng)計文件中字符個數(shù)的算法可描述如下:首先判斷文件位置指針是否指向了文件尾,如果不是則讀出一個字符,同時字符的個數(shù)加1,再判斷文件位置指針是否位于文件尾,如此循環(huán),直到文件位置指針位于文件尾為止。本題首先以讀文件的方式打開了文件“fname.daf”,如果打開成功則把返回的文件型指針賦值給fp,然后通過循環(huán)求文件中的字符數(shù)。首先判斷文件位置指針是否位于文件尾,如果不是則循環(huán)讀取字符,每次字符數(shù)加1。所以下劃處應(yīng)填循環(huán)條件,文件位置指針不是指向文件尾,即“!feof(fp)”。

41.B

42.A解析:“/*”與“*/”之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選項A正確;在C語言中,函數(shù)體是從花括號“{”開始,到花括號“}”結(jié)束.但沒有規(guī)定花括號“{”和“}”只能作為函數(shù)體定界符,故選項B錯誤;選項C中前半句是正確的,在C程序中由有一個或多個函數(shù)所組成,但不是所有的函數(shù)都由用戶自己命名,有些函數(shù)比如庫函數(shù),主函數(shù)main()就不能由用戶來命名,故選C不正確;在C語言中明確規(guī)定每條語句以分號“;”結(jié)束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。

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

44.D解析:因為沒有break語句,當(dāng)k=2的時候,會順序執(zhí)行兩條語句,k=1的時候,會順序執(zhí)行3條語句。

45.A解析:題目中定義的函數(shù)f()包含兩個參數(shù),一個字符指針,—個整型變量。當(dāng)修改參數(shù)指針所指向的內(nèi)容的時候,實參所指的內(nèi)容也被修改,即傳址調(diào)用;但只是修改參數(shù)變量的內(nèi)容,則實奉不受影響,即傳值調(diào)用。因此,主函數(shù)調(diào)用f()函數(shù)后,第1個參數(shù)被修改成函數(shù)中s[0]的name成員,第2個參數(shù)不受影響,還是主函數(shù)中s[1]的num成員。故最終輸出SunDan20042。應(yīng)該選擇A。

46.C解析:在面向?qū)ο蟮某绦蛟O(shè)計中,對象是面向?qū)ο蟮能浖幕灸K,它是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作所組成的統(tǒng)一體,而且對象是以數(shù)據(jù)為中心的,操作圍繞對其數(shù)據(jù)所需做的處理來設(shè)置,沒有無關(guān)的操作。從模塊的獨立性考慮,對象內(nèi)部各種元素彼此結(jié)合得很緊密,內(nèi)聚性強。由于完成對象功能所需要的元素(數(shù)據(jù)和方法)基本上都被封裝在對象內(nèi)部,它與外界的聯(lián)系自然就比較少,所以,對象之間的耦合通常比較松。所以,選項A與B錯誤,選項C正確。

47.B解析:012是八進制數(shù),轉(zhuǎn)換成十進制為10,12&10轉(zhuǎn)換成二進制為00001100&00001010=00001000,00001000轉(zhuǎn)換成十進制為8。

48.C

49.C解析:帶參數(shù)的宏定義命令行形式如下:

#define宏名(形參表)替換文本

在編譯的時候編譯預(yù)處理程序用“替換文本”來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結(jié)果賦給a。注意,宏替換是在編譯時由預(yù)處理程序完成的,宏替換不占用運行的時間,而函數(shù)調(diào)用是在程序運行時進行的,在函數(shù)的調(diào)用過程中需要占用一系列的處理時間。

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

51.C解析:a++是先使用a值再將a的值加1,b-是先使用b的值再將b的值減1,所以題中的邏輯運算表達式的值應(yīng)當(dāng)為真,即為1,而經(jīng)過運算后,a和b的值已經(jīng)分別變成0和3了。

52.AA)【解析】DFD圖(數(shù)據(jù)流圖)是以圖形的方式描述數(shù)據(jù)在系統(tǒng)中流動和處理的過私,只反映系統(tǒng)必須完成的邏輯功能,它是需求分析階段的圖形工具。盒式圖(N—S圖)、問題分析圖

\n(PAD圖)和PDL(偽碼)是詳細設(shè)計的常用工具。

53.D解析:本題考查逗號表達式。逗號表達式的形式為:表達式1,表達式2,其求解過程為:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。

54.D解析:函數(shù)聲明可以照寫已定義的函數(shù)的首部,再加一個號就成為了對函數(shù)的聲明,在函數(shù)聲明中也可以不寫形參名,而只寫形參的類型,但要保證與函數(shù)首部寫法上的—致,即函數(shù)類型、函數(shù)名、參數(shù)個數(shù)、參數(shù)類型和參數(shù)順序相同。字符數(shù)組可用指針來表示,所以選頂D正確。

55.C2(n-1)

=2(5-1)=16

56.C

57.C解析:EOF是指向文本文件的結(jié)束標志,NULL是打開文件錯誤時的返回值。feof(fp)用來判斷文件是否在文件末尾,文本文件和二進制文件均可以使用此函數(shù),如果遇到文件結(jié)束就返回1,否則返回0。

58.B解析:本題考核的知識點是C程序從編寫到生成可執(zhí)行文件的步驟。C語言采用編譯方式將源程序轉(zhuǎn)換為二進制的目標代碼,編寫好一個C程序到完成運行一般經(jīng)過以下幾個步驟:編輯;編譯,就是將已經(jīng)編輯好的源程序翻譯成二進制的目標代碼,經(jīng)編譯后的得到的二進制代碼還不能直接執(zhí)行,因為每一個模塊往往是單獨編譯的,必須把經(jīng)過編譯的各個模塊的目標代碼與系統(tǒng)提供的標準模塊連接后才能運行;連接,將各模塊的二進制目標代碼與系統(tǒng)標準模塊經(jīng)連接處理后,得到具有絕對地址的可執(zhí)行文件,它是計算機能直接執(zhí)行的文件;執(zhí)行,執(zhí)行一個經(jīng)過編譯和連接的可執(zhí)行的目標文件。由以上定義可知,選項A、C、D均不正確。所以,4個選項中選項B符合題意。

59.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時,接收參數(shù)的使用變量的地址值,所以選項A和B是錯誤的。選項D要求輸入時以逗號間隔,故按題目要求的輸入方式不能正確讀取到3個數(shù),也是錯誤的。所以正確答案是C。

60.BB。【解析】程序的三種基本控制結(jié)構(gòu)包括:順序、選擇和重復(fù)(循環(huán)),這三種結(jié)構(gòu)就足以表達出各種其他形式的結(jié)構(gòu)。

61.D

62.C→的運算優(yōu)先級比++高,此時,pt→x=10,執(zhí)行自加運算后為11。

63.D

64.D多對多聯(lián)系:多對多的聯(lián)系表現(xiàn)為一個表中的多個記錄在相關(guān)表中同樣有多個記錄與其匹配。

一個教師可講授多門課程,一門課程可由多個教師講授,所以實體教師和課程間的聯(lián)系是多對多的聯(lián)系。

65.B本題主要考查循環(huán)結(jié)構(gòu)和字符串的存儲結(jié)構(gòu)。在C語言中,為了方便確定字符串的長度,編譯系統(tǒng)在字符串后增加了一個結(jié)束標識‘\\0’,即ASCII碼的0。

在程序中,首先定義了一個字符型數(shù)組str,并賦初值,然后定義一個同類型的指針變量ps,并使ps指向字符數(shù)組str。

在while循環(huán)中,循環(huán)結(jié)束的條件是*ps的值為0,由于循環(huán)開始前,指針變量ps是指向數(shù)組的第一個元素,即*ps等價于str[0],值為x,其ASCII碼值不為0,循環(huán)繼續(xù),使ps指向數(shù)組的第二個元素,很明顯,結(jié)果不為0,第三個元素也不為0,而第四個元素才為0,循環(huán)結(jié)束,此時ps指向數(shù)組中的結(jié)束標識符。

在for循環(huán)中,首先將指針變量ps做自減運算,即使指針變量ps執(zhí)行數(shù)組的最后一個元素值,即第三個元素z,然后用輸出函數(shù)puts輸出,該輸出函數(shù)的功能是輸出字符串或字符數(shù)組到終端上

溫馨提示

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

評論

0/150

提交評論