版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 易錯題17 文言文閱讀之?dāng)嗑漕}-當(dāng)斷不斷不該斷卻斷【高考語文】備戰(zhàn)2025年高考易錯題(新高考專用)含解析
- 愚人節(jié)活動策劃方案 (15篇)
- 參觀圓明園的觀后感
- 智能大廈綜合布線的工程設(shè)計(jì)方案
- 青春追夢人心共進(jìn)
- 多振源混疊的DAS目標(biāo)信號分離
- 智研咨詢發(fā)布:2024年中國美妝行業(yè)市場發(fā)展環(huán)境及前景研究報(bào)告
- DOPS基P-N-S協(xié)同阻燃劑的合成及其阻燃環(huán)氧樹脂的性能研究
- 二零二五版國際學(xué)校英語教師兼職外教聘請合同樣本3篇
- 基于免疫和動態(tài)載荷調(diào)節(jié)機(jī)理的骨折愈合模型建模與仿真
- 大健康行業(yè)研究課件
- 租賃汽車可行性報(bào)告
- 計(jì)算機(jī)輔助設(shè)計(jì)AutoCAD繪圖-課程教案
- 老年護(hù)理學(xué)-老年人與人口老齡化-課件
- 文化墻、墻體彩繪施工方案
- 初中化學(xué)校本課程
- 科技文獻(xiàn)檢索
- GB/T 18665-2008地理標(biāo)志產(chǎn)品蒙山茶
- 元代文學(xué)緒論
- QUALITY MANUAL質(zhì)量手冊(英文版)
- 了不起的狐貍爸爸-全文打印
評論
0/150
提交評論