2021年黑龍江省佳木斯市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第1頁
2021年黑龍江省佳木斯市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第2頁
2021年黑龍江省佳木斯市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第3頁
2021年黑龍江省佳木斯市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第4頁
2021年黑龍江省佳木斯市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021年黑龍江省佳木斯市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.有以下程序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]);prrintf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應(yīng)填入的是

A.i-1B.iC.i+1D.4-i

2.下述程序執(zhí)行的輸出結(jié)果是()。#includemain{chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}A.A.are&youB.youC.areD.&

3.有以下程序:

#include<stdio.h>,

main()

{intS;

scanf("%d",&s);

while(s>O)

{switch(s)

{casel:printf("%d",s+5);

case2:printf("%d",s+4);break;

case3:printf("%d",s+3);

default:("%d",s+1);break;

}

scanf("%d",&s);

}

}

運(yùn)行時(shí),若輸入123450<回車>,由輸出結(jié)果是()。

A.6566456B.66656C.66666D.6666656

4.以下不能對(duì)二維數(shù)組a進(jìn)行正確初始化的語句是()。A.inta[2][3]={0};

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

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

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

5.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)

B.(′a′>=c)and(′z′>=c)

C.(′a′<=c)and(′z′>=c)

D.(c>=′a′)&&(c<=′z′)

6.

7.對(duì)于順序存儲(chǔ)的線性表,訪問結(jié)點(diǎn)和增加、刪除結(jié)點(diǎn)的時(shí)間復(fù)雜度為()。

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

8.對(duì)稱數(shù)組A中,每個(gè)元素的長(zhǎng)度為4個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲(chǔ)在從首地址SA開始的存儲(chǔ)器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

9.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運(yùn)行后的輸出結(jié)果是()。A.1,2B.3,4C.5,6D.123,456

10.算法分析的兩個(gè)主要方面是()。

A.空間復(fù)雜性和時(shí)間復(fù)雜性B.正確性和簡(jiǎn)明性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性

11.軟件調(diào)試的目的是A.發(fā)現(xiàn)錯(cuò)誤B.改正錯(cuò)誤C.改善軟件的性能D.驗(yàn)證軟件的正確性

12.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

二、2.填空題(12題)13.數(shù)據(jù)庫的設(shè)計(jì)通??梢苑譃?個(gè)步驟:需求分析、概念設(shè)計(jì)、【】和物理設(shè)計(jì)。

14.長(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。

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

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

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

}

16.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下:

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

①第0列元素和主對(duì)角線元素均為1;

②其余元素為其左上方和正上方元素之和;

③數(shù)據(jù)的個(gè)數(shù)每行遞增1。

請(qǐng)將程序補(bǔ)充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;x[0][0]=1;

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

{x[i][0]=x[i][i]=1;

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

x[i][j]=【】;

}

}

17.由計(jì)算機(jī)、操作系統(tǒng)、DBMS、數(shù)據(jù)庫、應(yīng)用程序及用戶組成的一個(gè)整體叫做【】。

18.數(shù)據(jù)庫的邏輯模型設(shè)計(jì)階段的任務(wù)是將______轉(zhuǎn)換成關(guān)系模式。

19.關(guān)系表達(dá)式x<y<z,用C語言的表達(dá)式為【】。

20.結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

21.以下程序中函數(shù)f的功能是在數(shù)組x的n個(gè)數(shù)(假定n個(gè)數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個(gè)數(shù)對(duì)換,把最大的數(shù)與最后一個(gè)數(shù)對(duì)換。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

for(u=0;u<10;u++)printf("%d",a[u]);

printf("\n");

}

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

inti=9;

printf("%o\n",i);

23.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。

24.以下程序中函數(shù)huiwen的功能是檢查一個(gè)字符串是否是回文,當(dāng)字符串是回文時(shí),函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請(qǐng)?zhí)羁铡?/p>

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;bteak;}

if(【】)return("yes!");

elsereturn("no!");

}

main()

{charsb[50];

printf("Input:");scanf("%s",str);

ptintf("%s\n",【】);

}

三、3.程序設(shè)計(jì)題(10題)25.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:找出成績(jī)最低的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。己給出函數(shù)的首部,請(qǐng)完成該函數(shù)。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<string.h>

#include<aonio.h>

#defineN10

typedefstructss

{charnum[10];

ihts;

}STU;

fun(STUail,STU*s)

{

}

main()

{

STUa[N]={{"A01",81},{"A02",89},

{"A03",66},{"A04",87},{"A05",77},

{"A06",90},{"A07",79},{"A08",61},

{"A09",80),{"Al0",71}},m;

inti;

clrscr0;

printf("*****Theoriginaldata*****");

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

printf("No=%sMark=%d\n",ail].num,

a[i].s);

fun(a,&m);

printf("*****THERESULT*****\n");

printf("Thelowest:%s,%d\n",m.num,

m.s);

}

26.請(qǐng)編寫一個(gè)函數(shù)fun(),它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.005,即某項(xiàng)小于0.005時(shí)停止迭代)。

π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…

+1*2*3*…*n/(3*5*7*…*(2n+1))

程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.14…。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<math.h>

doublefun(doubleeps)

{

}

main()

{

doublex;

printf("Inputeps:");

scanf("%1f",&x);

printf("\neps=%1f,PI=%1f\n",x,fun(x));

}

27.請(qǐng)編寫一個(gè)函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個(gè)字符申中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。

例如,輸入一個(gè)字符串world,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為word。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charb[],intn)

{

}

main()

{

charstr1[LEN],str2[LEN];

intn;

clrscr();

printf("Enterthestring:\n");

gets(str1);

printf("Enterthepositionofthestring

deleted:");

scanf("%d",&n);

fun(str1,str2,n);

printf("Thenewstringis:%s\n",

str2);

}

28.某學(xué)生的記錄由學(xué)號(hào)、8門課成績(jī)和平均分組成,學(xué)號(hào)和8門課的成績(jī)已在主函數(shù)中給出。請(qǐng)編寫fun()函數(shù),它的功能是:求出該學(xué)生的平均分放在記錄的ave成員中。請(qǐng)自己定義正確的形參。

例如,若學(xué)生的成績(jī)是85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)當(dāng)是78.875。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

}STREC;

voidfun()

{

}

main()

{

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);

inti;

fun(&s);

printf("The%s'sstudentdata:\n",s.num)//*輸出學(xué)號(hào)*/

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

printf("%4.1f\n",s.s[i]);

/*輸出各科成績(jī)*/

printf("\nave=%7.3f\n",s.ave);

/*輸出平均分*/

}

29.請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,則返回第一個(gè)字符串。

例如,輸入beijingshah曲aj(為回車鍵),函數(shù)將返回shanghai。

注意:部分源程序存在文件PROGl.C中。

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

30.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)己在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最低學(xué)生的人數(shù)。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{

}

main()

{

STRECs[N]={{“GA005”,82},{“GA003”,75},

{“GA002”,85},{“GA004”,78},{“GA001”,95},

{“GA007”,62},{“GA008”,60},{“GA006”,85},

{“GA015”,83},{“GA013”,94},{“GA012”,78},

{“GA014”,97},{“GA011”,60},{“GA017”,65},

{“GA018”,60},{“GA016”,74}};

STRECh[N];

inti,n;

FILE*out;

n=fun(S,h);

printf(“The%dlowestscore:\n”,n);

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

printf(“%s%4d\n”,h[i].mum,h[i].s);

/*輸出最低分學(xué)生的學(xué)號(hào)和成績(jī)*/

printf(“\n”);

out=fopen("outl9.dat",“w”);

fprintf(out,“%d\n”,n);

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

fprintf(out,“%4d\n”,h[i].s);

fclose(out);

}

31.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,低于平均分的學(xué)生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubleS;

}STREC;

doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)

{

}

main()

{

STRECs[N]={{“GA05”,65},{“GA03”,86},

{“GA02”,76},{“GA04”,95},{“GA01”,93},

{“GA07”,78},{“GA08”,68},{“GA06”,88},

{“GA09”,60},{“GAll”,54},{“GAl2”,56},

{“GAl0”,98}};

STRECh[N],l[N],t;

FILE*out;

inti,j,m,n;

doubleave;

ave=fun(S,h,l,&n,&m);

printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);

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

printf("%s%4.lf\n",h[i].num,

h[i].s);

printf("\n");

printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);

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

printf("%s%4.1f\n",l[i].num,l[i].s);

printf("\n");

ut=fopen("out26.dat","w");

fprintf(out,"%d\n%7.3f\n",n,ave);

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

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

if(h[i].s<h[j].s)

{t=h[i];h[i]=h[i];h[j]=t;}

/*分?jǐn)?shù)從現(xiàn)到低排列*/

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

fprintf(out,“%4.1f\n",h[i].s);

fprintf(out,"%d\n%7.3f\n",m,ave);

for(i=0;i<m-1;i++)

for(j=i+1;i<m;j++)

if(l[i].s<l[j].s)

{t=l[i];l[i]=l[j];l[j]=t;}

/*分?jǐn)?shù)從高到低排列*/

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

fprintf(out,"%4.1f\n",l[i].s);

fclose(out);

}

32.請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出當(dāng)x<0.97時(shí)下列多項(xiàng)式的值,直到|Sn-Sn-2

|<0.000001為止。

例如,在主函數(shù)中從鍵盤給x輸入0.21后,輸出為:s=1.100000。

注意:部分源程序在文件PROGl.C中。

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

33.請(qǐng)編寫函數(shù)fun(),其功能是:計(jì)算并輸出下列多項(xiàng)式的值。

S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如,著主函數(shù)從鍵盤給n輸入50后,則輸出為S=1.960784。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\n\ns=%f\n\n",s);

}

34.編寫函數(shù)intfun(intlim,intaa[MAX]),該函數(shù)的功能是求出小于或等于lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素?cái)?shù)的個(gè)數(shù)。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#defineMAX100

intfun(intlim,intse[MAX])

{

}

main()

{

intlimit,i,sum;

intaa[MAX];

clrscr();

printf("輸入一個(gè)整數(shù)");

scanf("%d",&limit);

sum=fun(limit,aa);

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

{

if(i%10==0&&i!=0)/*每行輸出10個(gè)數(shù)*/

printf("\n");

printf("%5d",aa[i]);

}

}

四、單選題(0題)35.有定義:“inta=2,b=3,c=4;”,則下列選項(xiàng)中值為0的表達(dá)式是()。A.(!a==1)&&(!b==0)B.(a<b)&&!c‖1C.a&&bD.a||(b+b)&&(c-a)

五、單選題(0題)36.下列敘述中錯(cuò)誤的是()。A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號(hào)表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

六、單選題(0題)37.對(duì)于“if(表達(dá)式)語句”,以下敘述正確的是()。

A.“表達(dá)式”不能是變量

B.“表達(dá)式”的值只能是整數(shù)值

C.“表達(dá)式”可以是常量

D.“表達(dá)式”中不可以出現(xiàn)字符型變量的比較

參考答案

1.B解析:本題考查循環(huán)嵌套,外層循環(huán)控制每一行的輸出,內(nèi)層循環(huán)的第一個(gè)for循環(huán)控制空格的輸出,第二個(gè)for循環(huán)控制的輸出。而在第i行,輸出的第一個(gè)元素是num[i][i],所以下劃線處應(yīng)填i。

2.Astrcpy實(shí)現(xiàn)的功能是復(fù)制,該操作把a(bǔ)re復(fù)制到a中,a[0][3]='&',且strcpy(a[1],"you")把you復(fù)制到a[1]中,故輸出a為“are&you”。

3.A\n根據(jù)題意,當(dāng)s=1時(shí),輸出65;當(dāng)s=2時(shí),輸出6;當(dāng)S=3時(shí),則輸出64;當(dāng)S=4時(shí),輸出5;當(dāng)s=5時(shí),輸出6;當(dāng)s=0時(shí),程序直接退出。所以最后答案為6566456,A選項(xiàng)正確。

\n

4.B選項(xiàng)A中,將二維數(shù)組a的6個(gè)元素都賦值為0,正確;選項(xiàng)B中,由于a包含2個(gè)元素,每個(gè)元素都是包含3個(gè)元素的一維數(shù)組,初始化列表中包含3個(gè)元素,每個(gè)元素是包含2個(gè)元素的數(shù)組,錯(cuò)誤;選項(xiàng)C中,a的每個(gè)元素是包含3個(gè)元素的一維數(shù)組,初始化列表將a[0]的3個(gè)元素初始化為1,2,0,將a[1]的3個(gè)元素初始化為0,0,0,正確;選項(xiàng)D中,將a[0]初始化為1,2,3,將a[1]初始化為4,5,6,正確。本題答案為B選項(xiàng)。

5.D

6.B

7.C

8.B

9.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據(jù)程序循環(huán)寫入和寫出.可知答案為C。

10.A

11.B本題考查軟件工程調(diào)試。調(diào)試與測(cè)試是兩個(gè)不同的過程,有著根本的區(qū)別:調(diào)試是一個(gè)隨機(jī)的、不可重復(fù)的過程,它用于隔離和確認(rèn)問題發(fā)生的原因,然后修改軟件來糾正問題;測(cè)試是一個(gè)有計(jì)劃的,可以重復(fù)的過程,它的目的是為了發(fā)現(xiàn)軟件中的問題。因此,軟件調(diào)試的目的是為了改正軟什中的錯(cuò)誤。本題的正確答案是選項(xiàng)\u3000B。

12.A函數(shù)intfun(intn)的功能是求1+2+…+n的值并返回。所以執(zhí)行程序時(shí),給變量x輸入10后,執(zhí)行語句“x=fun(x);”,X的值將變?yōu)?到10中10個(gè)整數(shù)的累加和,即55。

13.邏輯設(shè)計(jì)邏輯設(shè)計(jì)解析:數(shù)據(jù)庫設(shè)計(jì)的4個(gè)階段為:需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。

14.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。

15.1111解析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&data[0])賦值給結(jié)構(gòu)體指針變量p,++(P->x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data[0].x)輸出。

16.x[i-1][j-1]+x[i-1][j]x[i-1][j-1]+x[i-1][j]解析:在程序外層i循環(huán)中先將數(shù)組的第0列元素和主對(duì)角線元素置1,內(nèi)層j循環(huán)的功能是給其余元素賦值,根據(jù)題意,空格內(nèi)應(yīng)填入x[i-1][j-1)+x[i-1][j]。

17.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)

18.E-R圖E-R圖解析:數(shù)據(jù)庫邏輯設(shè)計(jì)的任務(wù)是將概念模型進(jìn)一步轉(zhuǎn)化成相應(yīng)的數(shù)據(jù)模型。而E-R圖是主要的概念模型,因此數(shù)據(jù)庫的邏輯設(shè)計(jì)的主要工作是將E-R圖轉(zhuǎn)換成關(guān)系模式。

19.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C語言中,表達(dá)“并且”用邏輯與運(yùn)算符“&&”。

20.模塊化模塊化

21.x[0]x[0]x[0],x[0]解析:函數(shù)f()通過for循環(huán)逐個(gè)比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標(biāo)位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個(gè)元素x[n-1]交換位置,再將最小值x[p1]和第一個(gè)元素(x[0])進(jìn)行交換,所以空白處應(yīng)該填入x[0]。

22.1111解析:本題考核的知識(shí)點(diǎn)是printf()函數(shù)的輸出格式。本題中定義了一個(gè)整型變量i并賦初值為9,然后要求以八進(jìn)制輸出i的值,9的八進(jìn)制數(shù)的表示為11。

23.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的一端叫做“隊(duì)頭”。

24.str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:函數(shù)huiwen中開始定義了兩個(gè)字符指針p1和p2,并讓p1指向sb的開始位置,所以p2應(yīng)該指向str的尾部,即&str[strlen(str)-1]或?qū)懗蓅tr+strlen(str)-1或者其他等價(jià)形式。然后使用一個(gè)循環(huán),循環(huán)str的長(zhǎng)度的一半次數(shù),比較p1和p2的內(nèi)容,并分別遞增和遞減這兩個(gè)指針。若有不同,則讓標(biāo)志t為1,并跳出循環(huán)。所以最后一個(gè)if語句應(yīng)該為判斷標(biāo)志t是否為1,即應(yīng)該填t==0或者其它等價(jià)形式。在主函數(shù)中,應(yīng)該輸出huiwen()函數(shù)的返回結(jié)果,即最后一空應(yīng)該填huiwen(str)。

25.fun(STUa[]STU*s){inti;*s=a[0];for(i=0;i<N;i++)/*先認(rèn)為第1個(gè)值最小*/if(s->s>aIi].s)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個(gè)值更小的則賦給*s*/*s=a[i];}fun(STUa[],STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*先認(rèn)為第1個(gè)值最小*/\r\nif(s->s>aIi].s)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個(gè)值更小的則賦給*s*/\r\n*s=a[i];\r\n}解析:我們先認(rèn)為第1個(gè)值最小,即*s=a[0]語句,如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個(gè)值更小的隨即賦給該*s就可以了。另外,還涉及到結(jié)構(gòu)體中的指向運(yùn)算符,請(qǐng)學(xué)習(xí)者注意。若要找出最高成績(jī)則if()中的條件改成s->s<a[i].s即可。

26.doublefun(doubleeps){doubles=1.0s1=1.0;intn=1;while(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí)繼續(xù)求下—項(xiàng)*/{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/s=s+s1;/*求和*/n++;}return2*s;}doublefun(doubleeps)\r\n{\r\ndoubles=1.0,s1=1.0;\r\nintn=1;\r\nwhile(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí),繼續(xù)求下—項(xiàng)*/\r\n{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/\r\ns=s+s1;/*求和*/\r\nn++;\r\n}\r\nreturn2*s;\r\n}解析:從第2項(xiàng)開始以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/(2*n+1),程序中用s1來表示每一項(xiàng),s來表示總和后的結(jié)果。要注意s1,s的初值都為1.0,返回時(shí)要乘以2即return2*s,這跟數(shù)學(xué)思想有關(guān)系,學(xué)習(xí)者理解后就很簡(jiǎn)單了。

27.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上結(jié)束標(biāo)記*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)記*/\r\n}解析:本題要求刪除字符串中指定下標(biāo)的字符,即相當(dāng)于把不是指定下標(biāo)的字符留下。所以要用if(i!=n),注意不能寫成“=”運(yùn)算。

28.voidfun(STREC*p){inti;p->ave=0.0;for(i=0;i<N;i++)p->ave=p->ave+p->s[i];/*求各門成績(jī)的總和*/p->ave=p->ave/N;/*求平均分*/}voidfun(STREC*p)\r\n{\r\ninti;\r\np->ave=0.0;\r\nfor(i=0;i<N;i++)\r\np->ave=p->ave+p->s[i];/*求各門成績(jī)的總和*/\r\np->ave=p->ave/N;/*求平均分*/\r\n}解析:本題考查自己定義形參的相關(guān)知識(shí)點(diǎn),程序流程是這樣的,在fun()函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*p,此時(shí),引用成員的方式可以是用指向運(yùn)算符即p->ave和p->s[i],當(dāng)然,也可用(*p).ave和(*p).s[i]。

29.

解析:該程序功能是比較兩個(gè)字符串的長(zhǎng)度。解題過程是首先分別求得兩個(gè)字符串的長(zhǎng)度,然后對(duì)這兩個(gè)值進(jìn)行判斷,實(shí)現(xiàn)兩個(gè)字符串長(zhǎng)度的比較。

30.intfun(STREC*aSTREC*b){intij=0min=a[0].s;for(i=0;i<N;i++)if(min>a[i].s)min=a[i].s;/*找出最小值*/for(i=0;i<N;i++):if(min==a[i].s)b[j++]=a[i];/*找出成績(jī)與min相等的學(xué)生的記錄存入結(jié)構(gòu)體b中*/returnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/intfun\u3000(STREC*a,STREC*b)\r\n{\r\ninti,j=0,min=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(min>a[i].s)\r\nmin=a[i].s;/*找出最小值*/\r\nfor(i=0;i<N;i++):\r\nif(min==a[i].s)\r\nb[j++]=a[i];/*找出成績(jī)與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/\r\nreturnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/解析:該程序使用循環(huán)嵌套,第1個(gè)for語句的作用是找出最小值。第2個(gè)循環(huán)的作用是找出與min相等的成績(jī),也即最低成績(jī)的學(xué)生記錄,并存入b中。

31.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*n=*n+l;}else{c[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m)\r\n{\r\ninti;\r\ndoubleav=0.0;\r\n*n=0;\r\n*m=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].S;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{\r\nb[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*n=*n+l;\r\n}\r\nelse\r\n{\r\nc[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*m=*m+1;\r\n}\r\nreturnav;/*返回平均分*/\r\n}解析:本題中第1個(gè)循環(huán)的

溫馨提示

  • 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)論