2022-2023學(xué)年河南省南陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題一卷(含答案)_第1頁
2022-2023學(xué)年河南省南陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題一卷(含答案)_第2頁
2022-2023學(xué)年河南省南陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題一卷(含答案)_第3頁
2022-2023學(xué)年河南省南陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題一卷(含答案)_第4頁
2022-2023學(xué)年河南省南陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題一卷(含答案)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023學(xué)年河南省南陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題一卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.在非線性結(jié)構(gòu)中,每個(gè)結(jié)點(diǎn)()。

A.無直接前趨

B.只有一個(gè)直接前趨和個(gè)數(shù)不受限制的直接后繼

C.只有一個(gè)直接前驅(qū)和后繼

D.有個(gè)數(shù)不受限制的直接前驅(qū)和后繼

2.有以下程序:#include<stdio.h>voidmain(){char*s=“\ta\018bc”;for(;*s!=‘\0’;s++)printf(“*”);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。

A.******B.*********C.*****D.*******

3.程序中若有如下說明和定義語句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;.....}以下選項(xiàng)中對函數(shù)Fun的正確調(diào)用語句是______。A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);

4.若變量已正確定義,下列正確的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

5.紅黑樹中已經(jīng)有n個(gè)數(shù)據(jù),尋找某個(gè)key是否存在的時(shí)間復(fù)雜度為()

A.o(logn)B.o(n)C.o(n二次方)D.o(1)

6.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

7.有以下程序

#defineN15

fun(inta[],intn,intm)

{inti,j;

for(i=m;i>=n;i--)

a[i+1]=a[i];

}

main()

{inti,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,3,7);

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

printf("%d",a[i]);

}

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

B.44567

C.45567

D.45677

8.下面程序的輸出是()。A.17B.18C.23D.24

9.有以下程序:#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,

10.

11.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

12.以下程序的輸出結(jié)果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

二、2.填空題(12題)13.下列程序執(zhí)行輸出的結(jié)果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

14.某二義樹中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹中有______個(gè)葉子結(jié)點(diǎn)。

15.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."??瞻滋幮枰钊氲膬?nèi)容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

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

YesNo(ch);}

16.已知a為8位二進(jìn)制數(shù),要想通過ab運(yùn)算使a的低5位變反(即0變1,1變0),高3位不變,b的值應(yīng)為【】。

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

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

}

18.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請?jiān)谔羁諜趦?nèi)寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

19.一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)容,稱為【】藕合。

20.在最壞情況下,冒泡排序的時(shí)間復(fù)雜度為【】。

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

#include<stdio.h>

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

prinff("%d\n",S(i+j));

}

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

24.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

三、3.程序設(shè)計(jì)題(10題)25.請編寫一個(gè)函數(shù)unsignedfun(unsignedw),w是一個(gè)大于10的無符號整數(shù),若w是n(n≥2)位的整數(shù),則函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。

例如:w值為5923,則函數(shù)返回923;若w值為923,則函數(shù)返回23。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

unsignedfun(unsignedw)

{

}

main()

{

unsignedx;

clrscr();

printf("Enteraunsignedinteger

number:");

scanf("%u",&x);

printf("Theoriginaldatais:%u\n",x);

if(x<10)

printf("Dataerror!");

else

printf("Theresult:%u\n",fun(x));

}

26.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值;請編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如a數(shù)組中的值為

a=197

238

456

則返回主程序后a數(shù)組中的值應(yīng)為

097

008

000

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#defineN5

intfun(inta[][N])

{

}

main()

{

inta[N][N],i,j;

clrscr();

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

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

/*產(chǎn)生—個(gè)隨機(jī)的5*5矩陣*/

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

{a[i][j]=rand()%10;

printf("%4d",a[i][j]);

}

printf("\n");

}

fun(a);

printf("THERESULT\n");

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

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

printf("%4d",a[i][j));

printf("\n");

}

}

27.函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除:其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:“246”。

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

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

28.請編一個(gè)函數(shù)voidfun(inttt[M][N],intpp[N],tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

{

}

main()

{

intt[M][N]={{68,32,54,12},{14,24,88,

58},{42,22,44,56}};

intp[N],i,j,k;

clrscr();

printf("Theriginaldatais:\n");

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

{

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

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("\nTheresultis:\n");

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

printf("%4d",p[k]);

printf("\n");

}

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

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

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

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubles;

}STREC;

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

{

}

main()

STRECsIN]={{"GA05",85},{"GA03",76},

{"GA02",69},{"GA04",85},{"GA01",91},

{"GA07",72},{"GA08",64},{"GA06",87},

{"GA09",60},{"GAll",79},{"GA12",73},

{"GA10",90}};

STRECh[N],t;

FILE*out;

inti,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

higherthan%7.3f:In",n,ave);

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

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

printf("\n");

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

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

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

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

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

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

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

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

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

fclose(out);

}

30.請編寫一個(gè)函數(shù)fun(),它的功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)為整數(shù)的函數(shù))。

例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

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

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

試題程序:

#include<stdio.h>

#include<string.h>

longfun(char*p)

{

}

main()

{

chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

printf("%ld\n",n);

}

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

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

13579

29994

69998

13570

則函數(shù)值為61。

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

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

32.請編寫一個(gè)函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個(gè)字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。

例如:當(dāng)輸入字符串a(chǎn)bcdefghabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(char*tt,intpp[])

{

}

main()

{

charaa[1000];

intbb[26],k,n;

clrscr();

printf("\nPleaseenteracharstring:");

scanf("%s",aa);

fun(aa,bb);

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

printf("%d",bb[k]);

printf("\n");

}

33.請編寫函數(shù)fun,函數(shù)的功能是:將大于形參m且緊靠m的k個(gè)素?cái)?shù)存入xx所指的數(shù)組中。例如,若輸入17,5,則應(yīng)輸出:19,23,29,3l,37。

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

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

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

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

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

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

四、單選題(0題)35.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10

五、單選題(0題)36.有以下函數(shù)char*fun(char*p){returnp;}該函數(shù)的返回值是______。

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

六、單選題(0題)37.判定一個(gè)循環(huán)隊(duì)列qu(最多元素為MaxSize)為空的條件是()。

A.QU->rear-QU->front==MaxSize

B.QU->rear-QU->front-1==MaxSize

C.QU->front==QU->rear

D.QU->front==QU->rear+1

參考答案

1.D

2.Amain函數(shù)中定義一個(gè)字符指針s,指向字符串“\\ta\\018bc”。for循環(huán)遍歷s指向的字符串中的字符,然后輸出根據(jù)題意可以理解為:s指向的字符串中有多少個(gè)字符,就輸出多少個(gè)s指向的字符串中字符分別是\\t(轉(zhuǎn)義字符)、a、\\01(轉(zhuǎn)義字符)、8、b、c,總共6個(gè)。其中因?yàn)?不屬于八進(jìn)制中的數(shù)字,所以“\\018”不是一個(gè)轉(zhuǎn)義字符,而“\\01”是轉(zhuǎn)義字符。故本題答案為A選項(xiàng)。

3.A解析:題中將函數(shù)fun的入口地址賦給了指針變量f1,這時(shí)f1和fun都指向函數(shù)的開頭,調(diào)用*f1就是調(diào)用函數(shù)fun。

4.D解析:本題考查兩個(gè)知識點(diǎn):①C語言用'\\n'這個(gè)字符常量表示換行;②函數(shù)getchar()的作用是從終端輸入一個(gè)字符,當(dāng)遇到換行時(shí)結(jié)束輸入。

5.A

6.C解析:本題考查if語句。先判斷if語句的條件是否成立,++a=1>0,此條件成立,又因?yàn)槭沁M(jìn)行邏輯或運(yùn)算,在已知其中一個(gè)運(yùn)算對象為真的情況下,不必判斷另外一個(gè)運(yùn)算符的真假,即不進(jìn)行++b操作,就可以直接得出整個(gè)表達(dá)式的值為邏輯1,執(zhí)行下列的++c。

7.B題目中的程序包括主程序main和fun函數(shù)。主程序中定義了一個(gè)數(shù)組a,并賦給了初值。通過調(diào)用fun函數(shù),對數(shù)組a中的值進(jìn)行更改操作,最后要求的結(jié)果是輸出數(shù)組a中a[3]~a[7]的值。解決本題的關(guān)鍵在于清楚地理解fun函數(shù)的功能。fun函數(shù)有3個(gè)形參,包括1個(gè)整型數(shù)組a[],2個(gè)整型變量n和m。fun函數(shù)的功能是將數(shù)組a[i+1]的值等于a[i]的值,i的初始值大小為m,依次減1,直到數(shù)值等于n。主函數(shù)調(diào)用fun函數(shù)時(shí),輸入的實(shí)參為(a,3,7),即fun函數(shù)要將數(shù)組a[i+1]的值等于a[i]的值,i的取值范圍從7到3,如a[8]=a[7]。fun函數(shù)執(zhí)行完畢,數(shù)組a中的值變?yōu)?,2,3,4,4,5,6,7,9,10。輸出a[3]~a[7]的值為4,4,5,6,7。

8.B

9.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)。

10.D

11.D

12.D本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達(dá)式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項(xiàng)。

13.88解析:第1次for循環(huán),i=0,調(diào)用函數(shù)f(2),然后將a的值加1,在f()函數(shù)中,變量c為static類型,所以c=8:第2次for循環(huán),i=1,調(diào)用函數(shù)f(3),然后將a的值加1,調(diào)用函數(shù)f(3)時(shí),a=c++=8,所以k=8。

14.1919解析:二叉樹具有如下性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。根據(jù)題意,度為2的節(jié)點(diǎn)為18個(gè),那么,葉子結(jié)點(diǎn)就應(yīng)當(dāng)是19個(gè)。

15.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個(gè)字符是y(Y)還是n(N),主要用了一個(gè)switch多分支結(jié)構(gòu)來比較輸入字符與字符\ue008'y',\ue009'Y'、,'n','N'是否相等來實(shí)現(xiàn)的。

16.1F1F解析:11=0,01=1,實(shí)現(xiàn)了按位的求反。

17.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個(gè)全局變量m=17,m=17的作用域在整個(gè)程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個(gè)局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過fun函數(shù)返回兩個(gè)形參的積再減m。在主函數(shù)中,輸出fun(a,b)/m=(5*7-3)/17=1。

18.void(*p)();void(*p)();解析:要定義p為指向函數(shù)的指針變量,需寫成void(*p)();,注意*p兩側(cè)的括弧不可以省略,表示P先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個(gè)函數(shù)無返回值(同fun()函數(shù))。

19.內(nèi)容內(nèi)容

20.

解析:冒泡排序法是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。假設(shè)線性表的長度為n,則在最壞的情況下,冒泡排序需要經(jīng)過遍的從前往后的掃描和遍的從后往前的掃描,需要的比較次數(shù)為。

21.8181解析:帶參數(shù)的宏定義是按#define命令行中指定的字符串從左到右進(jìn)行替換。本題替換后得到:4*i+j*i+j+1,代入i,j的值得81。

22.30253025解析:本題考核的知識點(diǎn)是變量的存儲屬性和算術(shù)運(yùn)算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個(gè)外部變量a,它是一個(gè)全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個(gè)運(yùn)行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個(gè)一個(gè)靜態(tài)變量a,此靜態(tài)變量a是個(gè)靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進(jìn)行的,auto是自動變量的存儲類別標(biāo)識符,如果省略auto,系統(tǒng)隱含認(rèn)為此變量為auto,本題中main()中intc=20定義了一個(gè)自動變量c,此自動變量c是個(gè)靜態(tài)的局部變量.算術(shù)運(yùn)算中a+=b++相當(dāng)于a=a+b,b=b+1.所以,在第一個(gè)ptine('%d',a)中a=a+b=10+20=30,第二個(gè)printf('%d',a)中a=a+c=5+20=25,即輸出3025。

23.2468

24.黑盒軟件測試的方法有三種:動態(tài)測試、靜態(tài)測試和正確性證明。設(shè)計(jì)測試實(shí)例的方法一般有兩類:黑盒測試法和白盒測試法。在使用黑盒法設(shè)計(jì)測試實(shí)例時(shí),測試人員將程序看成一個(gè)“黑盒”,即不關(guān)心程序內(nèi)部是如何實(shí)現(xiàn)的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設(shè)計(jì)的測試用例完全是根據(jù)程序的功能說明來設(shè)計(jì)的。

25.unsignedfun(unsignedw){if(w>=10000)returnw%10000;/*求出n位整數(shù)w的后n-1位的數(shù)*/if(w>=1000)returnw%1000;if(w>=100)returnw%100;if(w>=10)returnw%10;}unsignedfun(unsignedw)\r\n{\r\nif(w>=10000)\r\nreturnw%10000;/*求出n位整數(shù)w的后n-1位的數(shù)*/\r\nif(w>=1000)\r\nreturnw%1000;\r\nif(w>=100)\r\nreturnw%100;\r\nif(w>=10)\r\nreturnw%10;\r\n}解析:我們首先應(yīng)該明白無符號整數(shù)的定義形式,若它大于10000(5位)時(shí),將10000對它求余則結(jié)果為后4位;當(dāng)它大于1000(4位)時(shí),將1000對它求余則結(jié)果為后3位,花此類推。特別注意這里所有if()的順序不能顛倒。

26.intfun(inta[][N]){intij;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]=0;/*將數(shù)組左下半三角元素中的值全部置成0*/}intfun(inta[][N])\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<=i;j++)\r\na[i][j]=0;/*將數(shù)組左下半三角元素中的值全部置成0*/\r\n}解析:本題旨在考查控制數(shù)組中左下半三角元素的算法,也就是兩個(gè)千篇一律的循環(huán)語句,希望學(xué)習(xí)者能夠掌握消化。

27.

解析:該程序功能是將字符串中除了下標(biāo)為偶數(shù)、ASCII值也為偶數(shù)的字符外,其余的全都刪除。解題過程利用if條件判斷表達(dá)式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。

28.voidfun(inttt[M][N]intpp[N]){intiimax;for(j=0;j<N;j++){max=tt[0][j];/*假設(shè)各列中的第一個(gè)元素最大*/for(i=0;i<M;i++)if(tt[i][j]>max)/*如果各列中的其他元素比最大值大則將這個(gè)更大的元素看作當(dāng)前該列中最大元素*/max=tt[i][j];pp[j]=max;/*將各列的最大值依次放入pp數(shù)組中*/}}voidfun(inttt[M][N],intpp[N])\r\n{\r\ninti,i,max;\r\nfor(j=0;j<N;j++)\r\n{\r\nmax=tt[0][j];/*假設(shè)各列中的第一個(gè)元素最大*/\r\nfor(i=0;i<M;i++)\r\nif(tt[i][j]>max)/*如果各列中的其他元素比最大值大,則將這個(gè)更大的元素看作當(dāng)前該列中最大元素*/\r\nmax=tt[i][j];\r\npp[j]=max;/*將各列的最大值依次放入pp數(shù)組中*/\r\n}\r\n}解析:本題中函數(shù)的功能是求出二維數(shù)組中每列的最大元素。首先,假設(shè)各列中的第一個(gè)元素最大,然后利用行標(biāo)值的移動來依次取得各列中其他元素的值,并與假設(shè)的最大值進(jìn)行比較,如果遇到更大的,則把這個(gè)更大的元素看做當(dāng)前該列中最大的元素,繼續(xù)與該列中其他元素比較。

29.doublefun(STREC*aSTREC*bint*n){inti;doubleay=0.0;*n=0;for(i=0;i<N;i++)av=av+a[i].s;ay=ay/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲單元中并統(tǒng)計(jì)人數(shù)*/returnay;/*返回嚴(yán)均分*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti;\r\ndoubleay=0.0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nay=ay/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲單元中,并統(tǒng)計(jì)人數(shù)*/\r\nreturnay;/*返回嚴(yán)均分*/\r\n}解析:本題中第1個(gè)循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進(jìn)行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個(gè)循環(huán)的作用是將高于等于平均分的學(xué)生存入b所指存儲單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。

本程序中直接用*n來表示b的下標(biāo),注意開始時(shí)要給,*n賦0,且使用時(shí)不能少*號。因?yàn)閱为?dú)的n是一個(gè)指針變量,而我們要用的是它所指向的那個(gè)存儲單元中的值。

30.longfun(char*p){longn=0;intflag=1;if(*p=='-')/*負(fù)數(shù)時(shí)置flag為-1*/{p++;flag=-1;}elseif(*p=='+')/*正數(shù)時(shí)置flag為1*/p++;while(*p!='\0'){n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/p++;}returnn*flag;}longfun(char*p)\r\n{\r\nlongn=0;\r\nintflag=1;\r\nif(*p=='-')/*負(fù)數(shù)時(shí)置flag為-1*/\r\n{p++;flag=-1;}\r\nelseif(*p=='+')/*正數(shù)時(shí)置flag為1*/\r\np++;\r\nwhile(*p!='\\0')\r\n{n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/\r\np++;\r\n}\r\nreturnn*flag;\r\n}解析:if()的作用是判斷它是正數(shù)還是負(fù)數(shù)。while()循環(huán)的作用是將字符串轉(zhuǎn)成相應(yīng)的整數(shù)。注意*p是一個(gè)字符如'9','4',并不是一個(gè)數(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論