2022年河南省平頂山市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷一(含答案)_第1頁
2022年河南省平頂山市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷一(含答案)_第2頁
2022年河南省平頂山市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷一(含答案)_第3頁
2022年河南省平頂山市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷一(含答案)_第4頁
2022年河南省平頂山市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷一(含答案)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年河南省平頂山市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷一(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.算法的空間復(fù)雜度是指()。

A.算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲(chǔ)空間

B.算法所處理的數(shù)據(jù)量

C.算法程序中的語句或指令條數(shù)

D.算法在執(zhí)行過程中所需要的臨時(shí)工作單元數(shù)

2.

3.定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學(xué)號(hào)、姓名、課程號(hào)、課程名、成績、學(xué)分)則對主屬性部分依賴的是()。

A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#

4.若有定義語句:“intx=10;”,則表達(dá)式x-=x+x的值為()。

A.-20B.-l0C.0D.10

5.算法的時(shí)間復(fù)雜度是指A.算法的執(zhí)行時(shí)間B.算法所處理的數(shù)據(jù)量C.算法程序中的語句或指令條數(shù)D.算法在執(zhí)行過程中所需要的基本運(yùn)算次數(shù)

6.下列能正確進(jìn)行字符串賦值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;printf("%s",s);

7.若有定義int?x,y;并已正確給變量賦值,則以下選項(xiàng)中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x-y)等價(jià)的是()。A.(x-y<0|x-y>0)B.(x-y<0)C.(x-y>0).D.(x-y==0)

8.

有以下程序:

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.i-1B.iC.i+1D.4一i

9.依次讀入數(shù)據(jù)元素序列{a,b,c,d,e,f,g}進(jìn)棧,每進(jìn)一個(gè)元素,機(jī)器可要求下一個(gè)元素進(jìn)棧或彈棧,如此進(jìn)行,則??諘r(shí)彈出的元素構(gòu)成的序列是以下哪些序列?

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,b,c,a}

D.{c,d,b,e,f,a,g}

10.有以下程序:#include<stdio.h>voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(a);for(i=0;i<10;i++)printf(“%d,”,a[i]);}程序的運(yùn)行結(jié)果是()。A.1,2,3,4,5,6,7,8,9,10,

B.1,2,6,8,10,12,7,8,9,10,

C.1,2,3,4,10,12,14,16,9,10,

D.1,2,6,8,10,12,14,16,9,10,

11.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個(gè)學(xué)生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

12.有以下程序:

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

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

二、2.填空題(12題)13.以下程序運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)return(2);

p=x*func(x-1);

return(p);}

main()

{printf("%d\n",func(4));}

14.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

15.下列表達(dá)式用于判斷y是否為閏年。閏年的判斷條件是:年號(hào)能被4整除但不能被100整除或年號(hào)能被400整除,請?zhí)羁誣_____。

16.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

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

}

puts(a);

printf("\n");

}

17.測試的目的是暴露錯(cuò)誤,評價(jià)程序的可靠性;而______的目的是發(fā)現(xiàn)錯(cuò)誤的位置并改正錯(cuò)誤。

18.對二叉排序樹進(jìn)行查找的方法是:用待查的值與根結(jié)點(diǎn)的值相比,若比根小,則繼續(xù)在【】子樹中找。

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n+1+i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

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

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

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

}

21.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大數(shù),再求這N個(gè)最大值中的最小的那個(gè)數(shù)作為函數(shù)值返回。請?zhí)羁誣_____。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

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

for(max=a[row][0],col=1;col<N;col++)

if()max=a[row][col];

if(row==0)min=max;

elseif()min=max;

returnmin;

}

22.在對文件進(jìn)行操作的過程中,若要求文件的位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù)是【】函數(shù)。

23.排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

三、3.程序設(shè)計(jì)題(10題)25.下列程序定義了NXN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的S。例如:若a數(shù)組中的值為

a=01279

1112155

2216111

979102

54141

則返回主程序后s的值應(yīng)為310。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

intfun(intw[][N])

{

}

main()

{

inta[N)[N]={0,1,2,7,9,1,1l,2l,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};

inti,j;

intS;

clrscr();

printf("*****Thearray***+*\n");

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

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

{printf(“%4d”,a[i][j]);}

printf("\n");

}

s=fun(a);

printf(“*****THERESULT*****\n”);

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

}

26.假定輸入的字符串中只包含字母和*號(hào)。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。

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

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

27.請編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:二維數(shù)組中的值為:

13579

29994

69998

13570

則函數(shù)值為61。

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

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

28.請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

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

if((k+1)%10==0)

{

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

printf("\n");/*—行寫10個(gè)數(shù)*/

}

else

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

}

29.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把指定分?jǐn)?shù)范圍內(nèi)的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)值返回。

例如,輸入的分?jǐn)?shù)是60和69,則應(yīng)當(dāng)把分?jǐn)?shù)在60到69的學(xué)生數(shù)據(jù)進(jìn)行輸出,包含60分和69分的學(xué)生數(shù)據(jù)。主函數(shù)中把60放在low中,把69放在heigh中。

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

請勿改動(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,int1,inth)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",96},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",94},{"GA012",64},

{"GA014",91},{"GA011",90},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh[N],tt;

FILE*out;

inti,j,n,low,heigh,t;

printf("Enter2integernumberlow&

heigh:");

scanf("%d%d",&low,&heigh);

if(heigh<low)

{t=heigh;heigh=low;low=t;}

n=fun(s,h,low,heigh);

printf("Thestudent'sdatabetween

%d--%d:\n",low,heigh);

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

printf("%s%4d\n",h[i].num,h[i].s);

/*輸出指定分?jǐn)?shù)范圍內(nèi)的學(xué)生記錄*/

printf("\n");

ut=fopen("out74.dat","w")

fprintf(out,"%d\n",n)-

n=fun(s,h,80,98);

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

/*分?jǐn)?shù)在80~98之間的學(xué)生記錄按他數(shù)從低到高排序*/

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

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

{tt=h[i];h[ii=h[j];h[j]=tt;}

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

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

fprintf(out,"\n");

fclose(out);

}

30.函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時(shí)ASCII值為奇數(shù)的字符刪除,s所指串中剩余的字符形成的新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符C的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除:而字符1的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。

最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDFl2345”。

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

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

31.請編寫函數(shù)fun,它的功能是:求任意兩個(gè)正整數(shù)的最小公倍數(shù)和最大公約數(shù),最小公倍數(shù)放在指針變量bei所指的變量中,最大公約數(shù)放在指針變量yue所指的變量中。

注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

vOidfun(intm,intn,int*bei,int*yue)

{ints=l,i;

if(m>n){s=m;m=n;n=S;}

for(i=2,s=1;i<mi++)

if((m%i=0)&&(n%i=0))

{

}

*yue=s;

*bei=S*m*n;

}

main()

{inta,b,beishu,yueshu;

chscr();

printf("pleaseinputa,b:");scanf("%d,%d,"&a,&b);

fun(a,b,&beishu,&yueshu);

printf("a,bbeishu:%d\n",beishu);

printf("a,byueshu:%d\n",Yueshu);

}

32.請編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。

例如:輸入asdafaaz67,則輸出為asdafaz67。

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

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

試題程序:

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

puts(str);

fun(str);

printf("***Str:%s\n",str);

}

33.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECsIN]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",66},{"GA017",64},

{"GA018",64},{"GA016",72}};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:In");

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

{if((i)%4=-0)

/*每行輸出4個(gè)學(xué)生記錄*/

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

out=fopen("out16.dat","w");

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

{if((i)%4==0&&i)

fprintf(out,"\n");

fprintf(out,"%4d",s[i].s);

}

fprintf(out,"\n");

fclose(out);

}

34.編寫程序,實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)

例如,輸入下面的矩陣:

100200300

400500600

700800900

程序輸出:

100400700

200500800

300600900

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

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

四、單選題(0題)35.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序運(yùn)行后的輸出結(jié)果是()。

A.11,11B.29,29C.26,29D.121,121

五、單選題(0題)36.一個(gè)順序表的第一個(gè)元素的存儲(chǔ)地址是100,每個(gè)元素的長度為5,則第7個(gè)元素的地址是()。

A.130B.125C.120D.135

六、單選題(0題)37.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

參考答案

1.A算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A項(xiàng)。

2.C

3.A關(guān)系SC中的主鍵是(S#,C#),但C#(課程號(hào))單獨(dú)就可以決定Cn(課程名),存在著對主鍵的部分依賴。本題答案為A選項(xiàng)。

4.B表達(dá)式x-=x+X可以寫成x=x-(x+x),所以X的值為-l0。

5.DD?!窘馕觥克惴ǖ臅r(shí)間復(fù)雜度是指算法需要消耗的時(shí)間資源。一般來說,計(jì)算機(jī)算法是問題規(guī)模。09函數(shù)fin),算法的時(shí)間復(fù)雜度也因此記做T(n)=O(f(n))。因此,問題的規(guī)模n越大,算法執(zhí)行的時(shí)間的增長率與f(n)的增長率正相關(guān),稱作漸進(jìn)時(shí)間復(fù)雜度(AsymptoticTimeComplexity)。簡單來說就是算法在執(zhí)行過程中所需要的基本運(yùn)算次數(shù)。

6.C解析:字符串存儲(chǔ)要有結(jié)束符“\\0”且要占用一個(gè)空間,選項(xiàng)A)、B的空間不夠:printf用來輸出字符,不能輸入字符串.

7.A條件表達(dá)式:x=表達(dá)式1:表達(dá)式2:表達(dá)式3的含義是:先求解表達(dá)式1.若為非0(真),則求解表達(dá)式2.將表達(dá)式2的值賦給x。若表達(dá)式1的值為0(假),則求解表達(dá)式3.將表達(dá)式3的值賦給x。在本題中與表達(dá)式1:(x-y)等價(jià)的是(x-y<0|x-y>0)。

8.B

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

\n

9.A

10.B數(shù)組名相當(dāng)于常量,表示的是數(shù)組首元素的地址。當(dāng)執(zhí)行函數(shù)f(a)的時(shí)候,因?yàn)閭鬟f的是首地址,相當(dāng)于直接對數(shù)組a進(jìn)行操作,所以從數(shù)組a的第3個(gè)元素a[2]到元素a[5],每個(gè)元素值擴(kuò)大兩倍。故本題答案為B選項(xiàng)。

11.D解析:在關(guān)系數(shù)據(jù)表中,行稱為元組,對應(yīng)存儲(chǔ)文件中的記錄,列稱為屬性,對應(yīng)存儲(chǔ)文件中的字段,所以本題答案為D。

12.C內(nèi)部靜態(tài)變量是始終存在的,當(dāng)函數(shù)被調(diào)用退出后,內(nèi)部靜態(tài)變量會(huì)保存數(shù)據(jù),再次調(diào)用該函數(shù)時(shí),以前調(diào)用時(shí)的數(shù)值仍然保留著。Fun(a,5)的值是l5,再次調(diào)用后slim=15,所以Fun(b,4)=45,s=45+15=60。

13.4848解析:本題主要考查的是函數(shù)的遞歸調(diào)用,遞歸的終止條件是x==0或x==1,然后用已知值逐步遞推向上求未知值,直到得到最終的結(jié)果。

func(4)=4*func(3);

func(3)=3*func(2);

func(2)=2*func(1);

func(1)=2;

所以func(2)=2*2=4;

func(3)=3*4=12;

fune(4)=4*12=48。

14.00解析:解答本題需要注意表達(dá)式“k=0”,它是賦值表達(dá)式而不是關(guān)系表達(dá)式,不論k為何值,表達(dá)式k=0總會(huì)使k為0,所以不能進(jìn)入循環(huán)。

15.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達(dá)。年號(hào)能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號(hào)能被400整除即y%400==0,與前兩項(xiàng)是或的關(guān)系。

16.j+=2a[i]>a[j]j+=2\r\na[i]>a[j]解析:由于要對偶數(shù)位進(jìn)行排位,所以空格處應(yīng)填。j+2,空13處是一個(gè)排序算法中的判斷語句,經(jīng)過分析后應(yīng)該填a[i]>a[j]。

17.調(diào)試調(diào)試

18.左左解析:對二叉排序樹進(jìn)行查找,若待查的值與根結(jié)點(diǎn)的值相比,若比根小,則繼續(xù)在左子樹中找;若比根大,則在右子樹中找。

19.在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個(gè)成員進(jìn)行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b[7]…b[9]的值相加,結(jié)果為盟。\r\n\r\n

20.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因?yàn)閥=0,所以執(zhí)行case0:a++;break;此時(shí)a=1執(zhí)行case2:a++;b++;這時(shí)a=2,b=1;最后輸出結(jié)果是21。

21.a[iow][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[iow][col]max<min或min>maX或max<=min或min>=maxa[iow][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[iow][col]\r\nmax<min或min>maX或max<=min或min>=max解析:本題有兩層for循環(huán),主函數(shù)中定義了整型變量iow、col、max和min,其中row用來存放外循環(huán)中的循環(huán)次數(shù),col用來存放內(nèi)循環(huán)中的次數(shù),max記錄每行中的最大值;min記錄所有行中最大值中的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0列元素值,然后從第一列開始依次與max進(jìn)行比較。如果大于max則將其值賦給max,當(dāng)每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個(gè)空應(yīng)該填a[row][col]>max或a[row][col]=max.退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時(shí),將min賦初值為第0行的max,然后在每次退出內(nèi)循環(huán)時(shí),將min和每行的max比較,如果大于max,則將max值賦min,所以第二個(gè)空應(yīng)該填max<min或min>max,當(dāng)退出外循環(huán)時(shí),min為所有行中的最大值的最小值。

22.rewind()或fseek()rewind()或fseek()

23.交換排序交換排序解析:所謂排序是指將一個(gè)無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

24.11231123解析:在主函數(shù)中第一次調(diào)用func子函數(shù)時(shí),m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因?yàn)樵谧雍瘮?shù)中將m和i定義成了static類型,所以在子函數(shù)中對m和i進(jìn)行的改變,在下一次調(diào)用子函數(shù)時(shí)能進(jìn)行保存,所以第二次調(diào)用子函數(shù)時(shí),m=11,i==3,則i=i+m+1=15,m=i+a+b=15+5+3=23。

25.intfun(intw[])[N]){intijk=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或N-1則它一定是周邊元素*/{s=s+w[i][j]*w[i][j];/*將周邊元素求平方和*/}returns;/+返回周邊元素的平方和*/}intfun(intw[])[N])\r\n{\r\ninti,j,k=0;\r\nints=0;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<N;j++)\r\nif(i==0||i==N-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素*/\r\n{s=s+w[i][j]*w[i][j];/*將周邊元素求平方和*/\r\n}\r\nreturns;/+返回周邊元素的平方和*/\r\n}解析:該題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個(gè)是0或N-1,且只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素。

26.

解析:該程序功能是將字符串尾部的“*”號(hào)全部刪除,前面和中間的“*”號(hào)不刪除。本題的解題過程首先確定由串尾開始的第一個(gè)非“*”位置,將由頭開始到此位置的字符拷貝到字符串。

27.

解析:該程序功能是求出二維數(shù)組周邊元素之和。其中周邊元素是指數(shù)組的最上和最下的兩行,最左和最右的兩列。數(shù)組第一行元素的行下標(biāo)為0,最后一行元素的行下標(biāo)為M-1,第一列的列下標(biāo)為0,最后一列的列下標(biāo)為N-1。

28.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}voidfun(int*a,int\u3000*n)\r\n{\r\ninti.j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%5==0||i%13==0)&&i%65!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/\r\n}解析:注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級(jí)可知(i%5==0||i%13==0),注意,兩邊必須要有小括號(hào)。

29.intfun(STREC*aSTREC*bint1inth){intij=0;for(i=0;i<N;i++)if(a[i].s>-l&&a[i].s<=h)/*將分?jǐn)?shù)高于1低于h的學(xué)生記錄存在于結(jié)構(gòu)體數(shù)組b中*/b[j++]=a[i];returnj;/*返回分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)*/}intfun(STREC*a,STREC*b,int1,inth)\r\n{\r\ninti,j=0;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s>-l&&a[i].s<=h)/*將分?jǐn)?shù)高于1,低于h的學(xué)生記錄存在于結(jié)構(gòu)體數(shù)組b中*/\r\nb[j++]=a[i];\r\nreturnj;/*返回分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)*/\r\n}解析:處理此類分段統(tǒng)計(jì)問題,可采用多分支選擇語句或條件選擇語句。此處采用條件選擇語句解答,具體見參考答案。使用條件選擇語句進(jìn)行分段統(tǒng)計(jì)時(shí)應(yīng)當(dāng)注意分段范圍。

30.

解析:該程序功能是刪除下標(biāo)為偶數(shù)同時(shí)ASCII值為奇數(shù)的字符。解題過程利用if判斷表達(dá)式選擇下標(biāo)為偶數(shù)同時(shí)ASCII值為奇數(shù)的字符,然后將符合條件的字符放入指定的字符串,這樣就實(shí)現(xiàn)了函數(shù)功能。

31.voidfun(intmintnint*beiint*yue){ints=li;if(m>n){s=m;m=n;n=s;}for(i=2s=1;i<m;i++)if((m%i==0)&&(n%i==0)){m=m/i;n=n/i;S=s*i:i=1:}*yue=s;*bei=s*m*n;}voidfun(intm,intn,int*bei,int*yue)\r\n{ints=l,i;\r\nif(m>n){s=m;m=n;n=s;}\r\nfor(i=2,s=1;i<m;i++)\r\nif((m%i==0)&&(n%i==0))\r\n{m=m/i;n=n/i;\r\nS=s*i:i=1:\r\n}\r\n*yue=s;*bei=s*m*n;\r\n}解析:本題考查編程解決一般數(shù)學(xué)問題的能力。本題函數(shù)fun的實(shí)現(xiàn)了拐除法,在2~m之間從小到大依次取數(shù)i同時(shí)整除m和n,若能整除,則累乘到s中,最后的s就是最大公約數(shù),s*m*n就是最小公倍數(shù)。

32.intfun(char*str){intij=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')/*將字符串中的空格刪去*/str[j++]=str[i];/*注意該程序中空格字符的表達(dá)方法*/str[j]='\0';/*在字符串最后加上結(jié)束標(biāo)記符*/}intfun(char*str)\r\n{\r\ninti,j=0;\r\nfor(i=0;str[i]!='\\0';i++)\r\nif(str[i]!='')/*將字符串中的空格刪去*/\r\nstr[j++]=str[i];/*注意該程序中空格字符的表達(dá)方法*/\r\nstr[j]='\\0';/*在字符串最后加上結(jié)束標(biāo)記符*/\r\n}解析:前面我們接觸到的題是刪除字符,但本題要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用“留下”字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動(dòng),每走到一個(gè)字符都判斷其是否為空格,若不是空格(注意在if()的單引號(hào)之間有一個(gè)空格),則將其保存str[j]中。注意j的下標(biāo)變化、初值及最后加串結(jié)束符'\\0'。

33.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進(jìn)行排序進(jìn)行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進(jìn)行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進(jìn)行排序,進(jìn)行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進(jìn)行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論