2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第1頁
2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第2頁
2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第3頁
2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第4頁
2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下敘述中正確的是()。

A.結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組或指針變量

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型

D.結(jié)構(gòu)體定義時,類型不同的成員項之間可以用逗號隔開

2.有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序運(yùn)行后的輸出結(jié)果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1

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

A.用C語言編寫的程序只能放在一個程序文件中

B.C語言程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個語句

C.C語言程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

D.C語言程序書寫格式自由,一個語句可以寫在多行上

4.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

5.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題

6.以下敘述中錯誤的是A.算法正確的程序最終一定會結(jié)束

B.算法正確的程序可以有零個輸出

C.算法正確的程序可以有零個輸入

D.算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果

7.排序方法中,將整個無序序列分割成若干小的子序列并分別進(jìn)行插入排序的方法,稱為______。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

8.若在以下定義和賦值語句,則才s數(shù)組的第i行第j列(假設(shè)i,j已正確說明并賦值)元素地址的合法引用為ints[2][3]={0},(*p)[3];p=s;

A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]

9.以下說法錯誤的是A.A.高級語言都是用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式

B.計算機(jī)只能處理由0和1的代碼構(gòu)成的二進(jìn)制指令或數(shù)據(jù)

C.C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.EXE的二進(jìn)制文件

D.每一種高級語言都有它對應(yīng)的編譯程序

10.計算機(jī)識別.存儲和加工處理的對象被統(tǒng)稱為_________

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)類型

11.下列合法的聲明語句是()。

A.int_abc=50;

B.doubleint=3+5e2.5;

C.longdo=1L:

D.float3_asd=3e-3;

12.下列描述中正確的是______。A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題

13.在順序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找關(guān)鍵碼12需做()次關(guān)鍵碼比較。

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

14.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實(shí)現(xiàn)一種算法

C.程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨(dú)作為一一個c程序文件存在

15.以下函數(shù)的時間復(fù)雜度和空間復(fù)雜度為()A.T(n)=O(2^n),S(n)=O(n)

B.T(n)=O(1),S(n)=O(1)

C.T(n)=O(2^n),S(n)=O(1)

D.T(n)=O(n),S(n)=O(n)

16.有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=i;i<3;i++)j+=f(i);printf("%d\n",j);}程序運(yùn)行后的輸出結(jié)果是()。

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

17.有以下程序:#includeintadd(inta,intb){return(a+b);}Main(){Intk,(*f)(),a=5,b=10;f=add;...}則以下函數(shù)調(diào)用語句錯誤的是()。A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);

18.C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。

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

19.有以下程序:

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

A.10B.40C.32D.8

20.有以下程序:#include<stdio.h>intfun{staticintx=1;x+=1;returnX;}main{inti,S=1;for(i=1;i<=S;i++)s+=fun;printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。A.11B.21C.6D.120

二、2.填空題(20題)21.下述函數(shù)用于統(tǒng)計—行字符中的單詞個數(shù),單詞之間用空格分隔。

word_num(str)

charstr[];

{int,num=O,word=O;

for(i=0;str[i]!=【】;i++)

if(【】=")wprd=0

elseif(word=O)

{

word=1:

【】;

}

return(num);

}

22.下面的程序可對指定字符串中的字符串進(jìn)行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

23.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設(shè)計來實(shí)現(xiàn)。

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

intword(char*s)

{intnum=0,flag=0;

while(*s)

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

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

}

return【】}

25.已知存儲結(jié)構(gòu)如下所示,請?zhí)羁铡?/p>

datanext

structlink{chardata;

【】;

}node;

26.以下程序調(diào)用函數(shù)swap將指針s和t所指單元(a和B)中的內(nèi)容交換,請?zhí)羁?。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}

27.數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)中用于提供信息表示和操作手段的結(jié)構(gòu)形式。實(shí)際數(shù)據(jù)庫系統(tǒng)中所支持的數(shù)據(jù)模型主要有層次模型、網(wǎng)狀模型和【】3種。

28.數(shù)據(jù)流的類型有______和事務(wù)型。

29.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

30.以下程序的輸出是【】。

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

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

voiddelete(chars[],inti,intn)

{intj,k,legth=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'

}

32.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");

}

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

33.有以下程序

voidf(inty,int*x)

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

main()

{intx=2,y=4;

f(y,&x);

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

}

執(zhí)行后輸出結(jié)果是______。

34.下面程序執(zhí)行后輸出的結(jié)果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

36.下面程序的功能:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,j;

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

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

37.x、y、x均為int型變量,描述"x、y和z中至少有兩個為正數(shù)"的表達(dá)式是______。

38.最簡單的交換排序方法是______。

39.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

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

#include<stdio.h>

main()

{intx=27;

while(x>20&&x<30)

{x++;

if(x/3){x++;break;}

else

continue;

}

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

}

三、1.選擇題(20題)41.結(jié)構(gòu)化分析方法是一種面向______的需求分析方法。

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.控制流D.數(shù)據(jù)流

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

A.C語言編譯時不檢查語法B.C語言的子程序有過程和函數(shù)兩種C.C語言的函數(shù)可以嵌套定義D.C語言的函數(shù)可以嵌套調(diào)用

43.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為()。

A.125B.n/2C.nD.n+1

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

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

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

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

D.上述3種說法都不對

45.有以下程序:#include<stdio.h>main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}{}程序運(yùn)行時,從鍵盤輸入:01<回車>,程序執(zhí)行后的輸出結(jié)果是()。

A.anothernumber

B.anothernumberanother

C.anothernumber

D.numbernumber

46.以下程序的輸出結(jié)果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

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

48.在位運(yùn)算中,操作數(shù)右移一位,其結(jié)果相當(dāng)于

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)乘以4D.操作數(shù)除以4

49.若整型變量a、b、c、d中的值依次為1、4、3、2。則條件表達(dá)式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

50.設(shè)有如下定義,則以下敘述中正確的是______。int(*ptr)();

A.ptr是指向一維數(shù)組的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

51.簡單的交換排序方法是()。

A.快速排序B.選擇排序C.堆排序D.冒泡排序

52.算法的時間復(fù)雜度是指______。

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

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

A.EOFB.0C.非零值D.NULL

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

A.線性鏈表中的各元素在存儲空間中的位置必須是連續(xù)的

B.線性鏈表中的表頭元素一定存儲在其他元素的前面

C.線性鏈表中的各元素在存儲空間中的位置不一定是連續(xù)的,但表頭元素一定存儲在其他元素的前面

D.線性鏈表中的各元素在存儲空間中的位置不一定是連續(xù)的,且各元素的存儲順序也是任意的

55.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)

56.以下程序輸出的結(jié)果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

57.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j*2)continue;x++;}x++;}printf("x=%d\n”,x);}程序執(zhí)行后的輸出結(jié)果是()。

A.x=4B.x=8C.x=6D.x=12

58.若有以下說明和語句intc[4][5],(*p)[5];p=c;能夠正確引用c數(shù)組元素的是

A.p+1B.*(p+3)C.*(p+1)+3D.*(P[0]+2)

59.利用E-R模型進(jìn)行數(shù)據(jù)庫的概念設(shè)計,可以分成三步:首先設(shè)計局部E-R模型,然后把各個局部E-R模型綜合成一個全局的模型,最后對全局E-R模型進(jìn)行______,得到最終的E-R模型。

A.簡化B.結(jié)構(gòu)化C.最小化D.優(yōu)化

60.若要“向文本文件尾增加數(shù)據(jù)”,在fopen函數(shù)中應(yīng)使用的文件方式是()

A.ab+B.aC.abD.a+

四、選擇題(20題)61.有以下程序#include<stdi0.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(”%d\n”,m);}intf(intx){returnx*2;}程序運(yùn)行后的輸出結(jié)果是()A.8B.2C.4D.1

62.有以下程序段intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是

A.任意正奇數(shù)B.任意負(fù)偶數(shù)C.任意正偶數(shù)D.任意負(fù)奇數(shù)

63.

64.以下敘述中錯誤的是()。

A.使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題

B.結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成

C.C語言是-種結(jié)構(gòu)化程序設(shè)計語言

D.結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法

65.

66.函數(shù)fgetc的功能是從指定文件中讀入一個字符,以下與其功能完全相同的函數(shù)是()。

A.freadB.fscanfC.fgetsD.getc

67.以下敘述中正確的是(

)。A.C語言中的全部數(shù)據(jù)類型都是基本類型B.C語言中的全部數(shù)據(jù)類型都是構(gòu)造類型C.C語言中的數(shù)據(jù)類型只有兩種,即基本類型和構(gòu)造類型D.以上都不對

68.有以下程序:

voidmain()

{inta=1,b;

for(b=1;b<1;b++)

{if(a>=8)break;

if(a%2==1){a+5;continue;}

a-=3;

}

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

}

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

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

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

main()

{inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;

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

for(j=0;j<=i;j++)s+=a[i][j];

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

}

A.18

B.19

C.20

D.21

70.以下選項中與

71.

72.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;

A.10B.20C.40D.30

73.

74.

75.以下敘述不正確的是()。

A.在C程序中,逗號運(yùn)算符的優(yōu)先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若a和b類型相同,在計算賦值表達(dá)式a=b后,b的值將放入a中,而b的值不變

D.當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實(shí)型變量只能輸入實(shí)型數(shù)值

76.定義如下變量和數(shù)組:inti,x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的輸出結(jié)果是()

A.159B.147C.357D.369

77.有以下程序:

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

A.0304B.2050C.3344D.3040

78.若有以下程序

#include<stdio.h>

main()

{inti;

inta[]={1,3,5,7,9}

int*p=a;

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

a[i]=*p;

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

}

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

A.3,9B.5,9

C.1,9D.1,1

79.

有以下函數(shù):

charfun(char*p)

{returnP;}

該函數(shù)的返回值是()。

A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

80.有以下程序

#include<stdio.h>

#defineP24;

#defineS(x)P*x+x;

main()

{inta=2,b=2;

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

}

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

A.程序編譯運(yùn)行時報錯,無法輸出B.54

C.96D.100

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:給一維數(shù)組arr輸人任意4個整數(shù),并按如下的規(guī)律輸出。例如,若輸入2345,則程序運(yùn)行后輸出以下矩陣:請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:將兩個兩位數(shù)的正整數(shù)num1,num2合并形成一個整數(shù)放在num中。合并的方式是:將num1數(shù)的十位和個位數(shù)依次放在num數(shù)的十位和千位上,num2數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。

例如,當(dāng)num1=64,num2=18時,調(diào)用到該函數(shù)后,num=4168。

注意:部分源程序給出如下。

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

試題程序:

參考答案

1.A結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組、指針變量或者結(jié)構(gòu)體變量,選項A正確;不同結(jié)構(gòu)體成員名可以相同,選項B錯誤;結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是本結(jié)構(gòu)體類型,選項C錯誤;結(jié)構(gòu)體定義時,類型不同的成員項之間使用分號隔開,選項D錯誤。本題答案為A選項。

2.C解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使\u3000y的值加1。此題中執(zhí)行z=x++,是將x的值先賦給z,所以z=1,接下來x自行加1,其結(jié)果為2:執(zhí)行y++后,y=2,執(zhí)行++后,y=3;故答案選C。

3.D用C語言編寫的程序可以放置于多個程序文件中,所以A選項錯誤。C語言程序中的一行可以有多條語句,所以B選項錯誤。C語言中的注釋語句可以與原語句放在一行,也可以不放在一行,所以C選項錯誤。故本題答案為D選項。

4.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應(yīng)該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨(dú)的變量,故選項A不正確;選項B在p=data.a表達(dá)式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應(yīng)該將一地址賦給它,故選項B不正確;選項D表達(dá)式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確:4個選項中只有C正確。

5.CC?!窘馕觥寇浖こ淌侵笇⒐こ袒乃枷霊?yīng)用于軟件的開發(fā)、應(yīng)用和維護(hù)的過程,包括軟件開發(fā)技術(shù)和軟件工程管理。

6.B(45)B)解析:算法應(yīng)該具有下列五個特性:

①有窮性:一個算法必須在執(zhí)行有窮步之后結(jié)束。

②確定性:算法中的每一步,必須有確切的含義,在他人理解時不會產(chǎn)生二義性。

③動態(tài)性:算法中描述的每一步操作都可以通過已有的基本操作執(zhí)行有限次實(shí)現(xiàn)。

④輸入:一個算法應(yīng)該有零個或多個輸入。

⑤輸出:一個算法應(yīng)該有一個或多個輸出。這里所說的輸出是指與輸入有某種特定關(guān)系的量。

7.A解析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進(jìn)行插入排序。

8.A解析:p+i是數(shù)組s的第i+1行的首地址,而*(p+i)則是數(shù)組第i+1行第1列的元素的地址,*(p+i)+j則是第i+1行的第j+1列的地址,*(*(p+i)+j)引用的是數(shù)組元素s[i][j]的值。注意:通過建立一個指針數(shù)組來引用二維數(shù)組元素。

9.C本題主要考查我們對C語言一些基礎(chǔ)知識的掌握情況。下面分別分析本題的四個選項。

由于高級程序設(shè)計語言具有可讀寫、可理解性好等特點(diǎn),這就要求高級程序設(shè)計語言用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式,選項A的說法正確。

在計算機(jī)中,機(jī)器可以接受和處理的只能是由0和1組成的二進(jìn)制代碼,用高級語言編寫的程序都需要經(jīng)過編譯和連接,使其轉(zhuǎn)化為二進(jìn)制代碼才能被機(jī)器執(zhí)行。因此,選項B的說法正確。

C語言源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進(jìn)制文件(稱為目標(biāo)文件);最后要由“連接程序”把此.OBJ文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。因此,選項C的說法不正確。

由于高級語言編寫的程序都需要經(jīng)過編譯和連接,才能被計算機(jī)執(zhí)行,因此,每一種高級語言都有它對應(yīng)的編譯程序,D選項的說法正確。

10.A

11.A解析:C語言規(guī)定,標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。另外C語言規(guī)定了一些專用的標(biāo)識符,它們有著固定的含義,不能更改。int就是表達(dá)變量類型的標(biāo)識符,它不能再用做變量名和函數(shù)名,所以選項B)不正確。do是C語言的一個關(guān)鍵字,也不能再用做變量名和函數(shù)名,所以選項C)不正確。

12.C\r\n軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計算機(jī)軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控制、軟件質(zhì)量難以保證、軟件不可維護(hù)或維護(hù)程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。軟件項目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術(shù)都是軟件工程需要解決的部分問題。因此選項C正確。

13.B

14.B[解析]在一個C語言程序中可以進(jìn)行多種算法的實(shí)現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。

15.A

16.B解析:通過分析不難寫出,f()函數(shù)的數(shù)學(xué)表達(dá)式為:

f(n)=1n=l;

f(n)=f(-1)+1n≠1;

在主函數(shù)中for循環(huán)執(zhí)行了兩次函數(shù)調(diào)用f(i)。第一次:i為1,調(diào)用f(1)得到返回值1,并把它加到j(luò)中,j的值為1。第二次i為2,調(diào)用f(n),根據(jù)遞歸公式可知f(2)=f(1)+1,得到返回值2并把它加到j(luò)中,j的值為3。所以最后輸出,i的值為3。

17.DD)選項中*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。

18.CChar類型數(shù)據(jù)占1個字節(jié)。

19.D整型變量ch使用八進(jìn)制數(shù)020初始化,二進(jìn)制數(shù)為10000,右移一位結(jié)果為1000,使用%d輸出十進(jìn)制數(shù)為8。本題答案為D選項。

20.B本題考查靜態(tài)變量,C語言中靜態(tài)變量的生存期是從程序的開始到結(jié)束。本題中靜態(tài)變量x,隨著每次進(jìn)入循環(huán)不斷增長5次,返回的值分別為2、3、4、5、6。所以S=1+2+3+4+5+6=21,選B。

21.\0'或0或NULLstr[i]num++或num=num+1或mum+=l\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或mum+=l解析:觀察題目要求,可以知道以下幾點(diǎn):

①for循環(huán)的結(jié)束條件應(yīng)當(dāng)是:str[i]已是字符串的最后一個字符;

②str[i]代表字符串str中的第i+1個字符;

③整型變量num的值是要記錄的單詞的個數(shù)。

C語言中規(guī)定字和會串的最后一個字和會是一個隱含的字符串結(jié)束符“\\0”,所以在題中第一個空中應(yīng)填寫“\\0”;題中第二個空應(yīng)填寫“str[i]”,以判斷當(dāng)前位置的字符是否為空格;題中第三個空中應(yīng)當(dāng)填寫“num++”,通地變量num的加1累加到字符串中的單詞個數(shù)。

22.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實(shí)現(xiàn)過程是將相鄰兩個字符進(jìn)行比較,如果當(dāng)前字符小于下—個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

23.測試實(shí)例測試實(shí)例解析:進(jìn)行軟件測試時,應(yīng)精心設(shè)計測試實(shí)例和選擇測試數(shù)據(jù),以對系統(tǒng)進(jìn)行全面測試。

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

25.strucklink*nextstrucklink*next解析:結(jié)構(gòu)體變量構(gòu)成鏈表要求結(jié)構(gòu)體中必須有一個指向該結(jié)構(gòu)體變量自身的指針用來指明鏈表的下一個結(jié)點(diǎn)。注意:結(jié)構(gòu)體變量的定義及其成員變量的引用。

26.swap(st);swap(s,t);解析:本題要在主函數(shù)中調(diào)用swap函數(shù)交換a、b的值,實(shí)現(xiàn)數(shù)據(jù)交換需要進(jìn)行地址傳遞,所以函數(shù)的形參都應(yīng)該是需要交換的數(shù)據(jù)的地址,程序中通過“s=&a;t=&b;”將指針變量s和t指向變量a、b的地址,因此,引用時直接引用指針變量s和t即可。

27.關(guān)系模型關(guān)系模型

28.變換型變換型

29.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個;維表代表一種關(guān)系。

30.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷貝函數(shù),作用是將字符串s1拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str的長度,函數(shù)的值為字符串中實(shí)際長度,不包括\'\\0\'在內(nèi)。本題中strlen(str1)的值為13,則strcpy(strl+strlen(strl)/2,'esshe');相當(dāng)于strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe

31.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。

32.154321,5,4,3,2解析:第一次調(diào)用函數(shù)f后aa[0]=5、aa[4]=1;第二次調(diào)用函數(shù)f后aa[1]=4、aa[4]=2;第三次調(diào)用函數(shù)f后aa[3]=3。正確答案為1,5,4,3,2。

33.8484解析:本題考核的知識點(diǎn)是函數(shù)的調(diào)用、值傳遞和地址傳遞的區(qū)別。“值傳遞”指實(shí)參將值傳遞給形參后,實(shí)參與形參再無聯(lián)系。也就是說對行參的改變將不影響實(shí)參;地址傳遞是指地址或數(shù)組名作為形參時的參數(shù)傳遞,這種情況下對形參的改變將對實(shí)參產(chǎn)生影響.函數(shù)f(Y*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實(shí)參的y的值將不改變,而實(shí)參x的值將改變,故最后輸出的y的值為4,而x的值為8。

34.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。

35.55解析:分析程序,當(dāng)a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。

36.j%3!=0或j%3j%3!=0或j%3解析:題目要求輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),且通過for循環(huán)實(shí)現(xiàn),循環(huán)體內(nèi)j=i*10+6;這也就滿足了個位數(shù)為6的條件,所以第1個空格填入i<10或i<=9;if語句中的continue說明如果條件不成立則不輸出j,所以第2空填j%3!=0或j%3。

37.((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))解析:題目要求“x、y和z中至少有兩個為正數(shù)”,即x、y和z這3個數(shù)中必須有兩個是正數(shù),且這3個數(shù)中的哪兩個數(shù)都有可能是正數(shù),所以它們之間是或的關(guān)系。

38.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。

39.101,0解析:與運(yùn)算兩邊的語句必須同時為真時,結(jié)果才為真。當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。

40.2929解析:本題考查while循環(huán)和++運(yùn)算,x=27符合循環(huán)條件,執(zhí)行循環(huán)體中x++后,x=28,if條件也成立,執(zhí)行x++后退出,x的值增1,結(jié)果x=29。

41.D

42.D解析:C語言相對其他高級語言來說,放寬了語法檢查,因此程序設(shè)計自由度大,但并不是不檢查語法,C語言的程序是由函數(shù)構(gòu)成的。函數(shù)不能嵌套定義,但是可以嵌套調(diào)用。

43.CC?!窘馕觥繉€性表進(jìn)行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進(jìn)行比較,因此比較次數(shù)為n。

44.C本題考查對面向?qū)ο蟮睦斫?。面向?qū)ο蟮某绦蛟O(shè)計是對象模擬問題領(lǐng)域中的實(shí)體,各對象之間相對獨(dú)立,相互依賴性小,通過消息來實(shí)現(xiàn)對象之間的相互聯(lián)系。

45.C解析:本題中沒有使用break終止switch語句的執(zhí)行,當(dāng)k為'0'時,執(zhí)行完case'0'后的輸出后將繼續(xù)執(zhí)行case'1'后的輸出;當(dāng)k為'1'時,執(zhí)行case'1'后的輸出。

46.C解析:本題要注意靜態(tài)變量d。第1次執(zhí)行fun(d),即fun(1),在函數(shù)fun里對靜態(tài)變量賦初值5,得到d=d+p=5+1=6并輸出,返回6;第2次執(zhí)行fun(a+fun(d)),即fun(3+6)=fun(9),在函數(shù)fun中直接執(zhí)行d=d+p=6+9=15并輸出,然后返回15再一次輸出。

47.C2(n-1)

=2(5-1)=16

48.B解析:右移運(yùn)算符“>>”是雙目運(yùn)算符。其功能是把“>>”左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,“>>”右邊的數(shù)指定移動的位數(shù)。例如:設(shè)a=15,a>>2表示把000001111右移為00000011(+進(jìn)制3)。應(yīng)該說明的是,對于有符號數(shù),在右移時,符號位將隨同移動。當(dāng)為正數(shù)時,最高位補(bǔ)0,而為負(fù)數(shù)時,符號位為1,最高位是補(bǔ)0或是補(bǔ)1取決于編譯系統(tǒng)的規(guī)定。TurboC和很多系統(tǒng)規(guī)定為補(bǔ)1,右移1位相當(dāng)于除以2。

49.A解析:條件表達(dá)式的形式如下:表達(dá)式1?表達(dá)式2:表達(dá)式3,所以本題條件表達(dá)式a<b?a:c<d?c:d應(yīng)該理解為a<b?a:(c<d?c:d),首先求出條件表達(dá)式c<d?c:d的值等于2,再求條件表達(dá)式a<b?a:2的值,由于a-1<b-4成立,所以上述條件表達(dá)式的值等于1。

50.C解析:“int(*ptr)();”說明ptr是一個指向函數(shù)的指針,返回值是整型。*ptr兩邊的括號非常關(guān)鍵,表示*和ptr組合成一個指針變量,然后再和后邊的圃括號結(jié)合,表示該指針變量*ptr是一個指向函數(shù)的指針變量。如果沒有*ptr兩邊的括號,“int*ptr();”表示ptr是個函數(shù),該函數(shù)返回指向整型數(shù)據(jù)的指針。

51.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。

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

53.C

54.D解析:性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)結(jié)點(diǎn)的存儲序號不連續(xù),且各結(jié)點(diǎn)在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點(diǎn)的指針域來指示的。所以,選項D正確。

55.B通過—維數(shù)組名或指向維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價的。這是一種運(yùn)算符之間的等價轉(zhuǎn)換,就好像a-(b-C)等價于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之?dāng)U展到二維數(shù)組甚至任意維數(shù)組上來。因為[]運(yùn)算符的結(jié)合性是從左至右的,所以w[i][j]等價于(w[i][j],此時可以先將任意一個[]運(yùn)算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價于w[i][j]。選項A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項B小,因為[]運(yùn)算符的優(yōu)先級高于*運(yùn)算符,所以*(w+1)[4]等價于*((w+1)[4]等價于*(*((w+1)+4)),即*(*(w+5)+0),它等價于w[5][0],很明顯它超過數(shù)組的范圍了,故不正確。選項C等價于w[1][0],是下確的。選項D中,&w[0][0]是數(shù)組w第1個元素的地址,它等價于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個數(shù),然后再除以這個數(shù)一樣。所以,&w[0][0]等價于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價于w[0][1],這個也是合法的。綜上所述,本題應(yīng)該選擇B。

56.D解析:當(dāng)k=1時,引用的是二維數(shù)組元素w[1][1],值為字符串“FGH”;當(dāng)k=2時,引用的是數(shù)組元素w[2][2],即字符串“KL”;當(dāng)k=3時,結(jié)束程序的執(zhí)行。注意:字符串?dāng)?shù)組的定義。

57.B解析:內(nèi)層for循環(huán)語句實(shí)現(xiàn)x=x+2,故外層for循環(huán)語句單次循環(huán)實(shí)現(xiàn)x=x+4,所以程序執(zhí)行后的輸出結(jié)果為x=8。

58.D解析:本題中定義了一個二維數(shù)組c和一個指針數(shù)組p并初始化讓它指向c,顯然此時p中的各元素為地址,選項A中p+1,此時其中的1代表的長度是整個;維數(shù)組c的長度,故p+1將讓p指向c數(shù)組后面的元素,故不能引用c數(shù)組中的成員,故選項A錯誤;同理選項B和選項C都不正確,選項D中p[0]指的是指針數(shù)組中的第一個元素的地址即c的首地址,此時的1的長度代表的是數(shù)組c中一行的長度,故p[0]+2代表的是第三行的首地址,而*(p[0]+2)將代表第三行的第一個元素的地址,所以,4個選項中選項D符合題意。

59.D解析:在概念設(shè)計中,按照模塊的劃分畫出各個模塊的E-R圖,然后把這些圖合成一張E-R圖作為全局模型,最后應(yīng)該對全局E-R圖進(jìn)行優(yōu)化,看是否有重復(fù)和不合理的地方。不能只進(jìn)行簡單的合并。

60.D

61.A第一次調(diào)用m=f(f(f(1))),第二次為m=f(f(2)),第三次為m=f(4),即返回值為8,選項A)正確。

62.D解析:本題考查的是do…while循環(huán)結(jié)構(gòu).do…while循環(huán)與while循環(huán)的區(qū)別就是,前者是先執(zhí)行循環(huán)體,后判斷循環(huán)變量,故至少會執(zhí)行一遍循環(huán)體;后者先判斷再執(zhí)行,可能循環(huán)體一次也不會執(zhí)行。本題首先讓t=1,然后在循環(huán)體中每次自減2,所以判斷循環(huán)條件的時候,t會等于-1、-3、-5…

溫馨提示

  • 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

提交評論