練習(xí)題-函數(shù)(答案)_第1頁(yè)
練習(xí)題-函數(shù)(答案)_第2頁(yè)
練習(xí)題-函數(shù)(答案)_第3頁(yè)
練習(xí)題-函數(shù)(答案)_第4頁(yè)
練習(xí)題-函數(shù)(答案)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

請(qǐng)注意,如果要在VS2005中驗(yàn)證,函數(shù)值類(lèi)型缺省的應(yīng)加上int,因?yàn)関s2005中己經(jīng)不支

持缺省函數(shù)值類(lèi)型

以下答案除編程題外都經(jīng)過(guò)驗(yàn)證

函數(shù)

一、選擇題

1、以下正確的說(shuō)法是(B)〃此題不妥!

建立函數(shù)的目的之一是

(A)提高程序的執(zhí)行效率

(B)提高程序的可讀性

(0減少程序的篇幅

(D)減少程序文件所占內(nèi)存

2、以下正確的說(shuō)法是(B)

(A)用戶(hù)若需要調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù),調(diào)用前必須重新定義

(B)用戶(hù)可以重新定義標(biāo)準(zhǔn)庫(kù)函數(shù),若如此,該函數(shù)將失去原有含義

(0系統(tǒng)根本不允許用戶(hù)重新定義標(biāo)準(zhǔn)庫(kù)函數(shù)

(D)用戶(hù)若需調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù),調(diào)用前不必使用預(yù)編譯命令將該函數(shù)所在文件包括到用戶(hù)

源文件中,系統(tǒng)自動(dòng)去調(diào)

3、以下正確的函數(shù)聲明形式是(C)

(A)doublefun(intx,inty)

(B)doublefun(intx;inty)

(C)doublefun(intx,inty);

(D)doublefun(intx,y);

4、以下正確的函數(shù)形式是(D)

(A)doublefun(intx,inty){z=x+y;returnz;}

(B)fun(intx,y){intz;returnz;}

(C)fun(x,y){intx,y;doublez;z=x+y;returnz;}

(D)doublefun(intx,inty){doublez;z=x+y;returnz;}

5、以下正確的說(shuō)法是(A)〃這個(gè)題目A答案的描述容易引起誤會(huì)且不是任何情況下都

是正確的

在C語(yǔ)言中

(A)實(shí)參和與其對(duì)應(yīng)的形參各占用獨(dú)立的存儲(chǔ)單元

(B)實(shí)參和與其對(duì)應(yīng)的形參共占用一個(gè)存儲(chǔ)單元

(0只有當(dāng)實(shí)參和與其對(duì)應(yīng)的形參同名時(shí)才共占用存儲(chǔ)單元

(D)形參是虛擬的,不占用存儲(chǔ)單元

6、若調(diào)用一個(gè)函數(shù),且此函數(shù)中沒(méi)有return語(yǔ)句,則正確的說(shuō)法是(A)〃答案A也不

太對(duì),應(yīng)該是返回一個(gè)空值

該函數(shù)

(A)沒(méi)有返回值

(B)返回若干個(gè)系統(tǒng)默認(rèn)值

(0能返回一個(gè)用戶(hù)所希望的函數(shù)值

(D)返回一個(gè)不確定的值

7、以下不正確的說(shuō)法是(A)〃B勉強(qiáng)也可以說(shuō)是對(duì)的

C語(yǔ)言規(guī)定

(A)實(shí)參可以是常量、變量和表達(dá)式

(B)形參可以是常量、變量和表達(dá)式

(0實(shí)參可以為任意類(lèi)型

(D)形參應(yīng)與其對(duì)應(yīng)的實(shí)參類(lèi)型一致

8、以下正確的說(shuō)法是(C)

(A)定義函數(shù)時(shí),形參的類(lèi)型說(shuō)明可以放在函數(shù)體內(nèi)

(B)return后邊的值不能為表達(dá)式

(0如果函數(shù)值的類(lèi)型與返回值類(lèi)型不一致,以函數(shù)值類(lèi)型為準(zhǔn)

(D)如果形參與實(shí)參的類(lèi)型不一致,以實(shí)參類(lèi)型為準(zhǔn)

9、C語(yǔ)言規(guī)定,簡(jiǎn)單變量做實(shí)參時(shí),它和對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是(B)

(A)地址傳遞

(B)單向值傳遞

(0由實(shí)參傳給形參,再由形參傳回給實(shí)參

(D)由用戶(hù)指定傳遞方式

10、以下程序有語(yǔ)法性錯(cuò)誤,有關(guān)錯(cuò)誤原因的正確說(shuō)法是(C)

voidmain()

(

intG=5,k;

voidprt_char();

k=prt_char⑹;

)

(A)語(yǔ)句voidprt_char();有錯(cuò),它是函數(shù)調(diào)用語(yǔ)句,不能用void說(shuō)明

(B)變量名不能使用大寫(xiě)字母

(0函數(shù)說(shuō)明和函數(shù)調(diào)用之間有矛盾

(D)函數(shù)名不能使用下劃線(xiàn)

11、C語(yǔ)言允許函數(shù)值類(lèi)型缺省定義,此時(shí)該函數(shù)值隱含的類(lèi)型是(B)

(A)float型

(B)int型

(C)long型

(D)double型

12、C語(yǔ)言規(guī)定,函數(shù)返回值的類(lèi)型是由(D)

(A)return語(yǔ)句中的表達(dá)式類(lèi)型所決定

(B)調(diào)用該函數(shù)時(shí)的主調(diào)函數(shù)類(lèi)型所決定

(0調(diào)用該函數(shù)時(shí)系統(tǒng)臨時(shí)決定

(D)在定義該函數(shù)時(shí)所指定的函數(shù)類(lèi)型所決定

13、下面函數(shù)調(diào)用語(yǔ)句含有實(shí)參的個(gè)數(shù)為(B)

func((expl,exp2),(exp3,exp4,exp5));

(A)1

(B)2

(04

(D)5

14、以下錯(cuò)誤的描述是(D)

函數(shù)調(diào)用可以

(A)出現(xiàn)在執(zhí)行語(yǔ)句中

(B)出現(xiàn)在一個(gè)表達(dá)式中

(0做為一個(gè)函數(shù)的實(shí)參

(D)做為一個(gè)函數(shù)的形參

15、以下程序的功能是計(jì)算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,請(qǐng)選擇填空。①

(B)②(C)

#include<stdio.h>

#include<math.h>

floatf(float,float);

voidmain()

(

floatx,y,z,sum;

scanf&x,&y,&z);

sum=f(①)+f(②);

printf(,/sum=%f\nz,,sum);

)

floatf(floata,floatb)

(

floatvalue;

value=a/b;

return(value);

)

①(A)x-y,x+y

(B)x+y,x-y

(C)z+y,z-y

(D)z-y,z+y

②(A)x-y,x+y

(B)x+y,x-y

(C)z+y,z-y

(D)z-y,z+y

16、以下正確的描述是(B)

在C語(yǔ)言中

(A)函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套

(B)函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套

(0函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套

(D)函數(shù)的定義和函數(shù)的調(diào)用均可以嵌套

17、以下程序是選出能被3整除且至少有一位是5的兩位數(shù),打印出所有這樣的數(shù)及其個(gè)數(shù)。

請(qǐng)選擇填空。①(C)②(A)

sub(intk,intn)

(

intal,a2;

a2=①;

al=k-②;

if((K%3=0&&a2==5)||(k%3==0&&al=5))

(

printfk);

n++;

returnn;

)

elsereturn-1;

}

voidmain()

(

intn=0,k,m;

for(k=10;k<=99;k++)

(

m=sub(k,n);

if(m!=-l)n=m;

)

printf('\nn=%d”,n);

)

①(A)k*10

(B)k%10

(C)k/10

(D)k*10%10

②(A)a2*10

(B)a2

(C)a2/10

(D)a2%10

18、以下是有關(guān)漢諾塔問(wèn)題的程序段,若在main函數(shù)中有調(diào)用語(yǔ)句hanoi(3,'A','B','C');

則符合程序運(yùn)行結(jié)果的選項(xiàng)是(C)

voidmove(chargetone,charputone)

(

printf("%c->%c\n”,getone,putone);

}

voidhanoi(intn,charone,chartwo,charthree)

(

if(n==l)move(one,three);

else

(

hanoi(n-1,one,three,two);

move(one,three);

hanoi(n-1,two,one,three);

)

)

(A)A->C

A—>B

c—>B

B—>A

C—>B

A—>C

A—>B

(B)A—>C

A->B

C—>A

A—>B

B—>C

A->C

A—>B

(C)A->C

A—>B

C—>B

A—>C

B—>A

B—>C

A->C

(D)A—>C

A—>B

C—>B

A—>C

A—>B

B—>C

A->C

19、若用數(shù)組名作為函數(shù)調(diào)用的實(shí)參,傳遞給形參的是(A)

(A)數(shù)組的首地址

(B)數(shù)組第一個(gè)元素的值

(0數(shù)組中全部元素的值

(D)數(shù)組元素的個(gè)數(shù)

20、已有以下數(shù)組定義和f函數(shù)調(diào)用語(yǔ)句,則在f函數(shù)的說(shuō)明中,對(duì)形參數(shù)組array的錯(cuò)誤

定義方式為(B)

inta[3][4];

f(a);

(A)f(intarray[][6])

(B)f(intarray[3][])

(C)f(intarray[][4])

(D)f(intarray[2][5])

21、若使用一維數(shù)組名作函數(shù)實(shí)參,則以下正確的說(shuō)法是()〃這個(gè)題目供選擇的答案中

都有不明確之處,書(shū)中給出的答案是A

(A)必須在主調(diào)函數(shù)中說(shuō)明此數(shù)組的大小〃如果數(shù)組是全局變量就不需要在主調(diào)函

數(shù)中說(shuō)明數(shù)組大小

(B)實(shí)參數(shù)組類(lèi)型與形參數(shù)組類(lèi)型可以不匹配〃什么叫匹配?只要能自動(dòng)轉(zhuǎn)換類(lèi)型數(shù)組

類(lèi)型就可以不相同

(0在被調(diào)函數(shù)中,不需要考慮形參數(shù)組的大小〃只要使用數(shù)組的時(shí)候不會(huì)越界就不

必考慮它的大小

(D)實(shí)參數(shù)組名與形參數(shù)組名必須一致〃只有這個(gè)顯然是錯(cuò)的

22、折半查找法的思路是:先確定待查元素的范圍,將其分成兩半,然后測(cè)試位于中間點(diǎn)元

素的值。如果該待查元素的值大于中間點(diǎn)元素,就縮小待查范圍,只測(cè)試中點(diǎn)之后的元素;

反之,測(cè)試中點(diǎn)之前的元素,測(cè)試方法同前。函數(shù)binary的作用是應(yīng)用折半查找法從存有

10個(gè)整數(shù)的a數(shù)組中對(duì)關(guān)鍵字m進(jìn)行查找,若找到,返回其下標(biāo)值;反之,返回-1。請(qǐng)選擇

填空。0(A)@(B)

binary(inta[10],intm)

(

intlow=0,high=9,mid;

while(low<=high)

(

mid=(low+high)/2;

if(m<a[mid])①;

elseif(m>a[mid])②;

elsereturnmid;

)

return-1;

}

①(A)high=midT

(B)low=mid+1

(C)high=mid+l

(D)low=mid-l

②(A)high=mid-l

(B)low=mid+l

(C)high=mid+l

(D)low=midT

23、以下正確的說(shuō)法是(A)

如果在一個(gè)函數(shù)中的復(fù)合語(yǔ)句中定義了一個(gè)變量,則該變量

(A)只在該復(fù)合語(yǔ)句中有效

(B)在該函數(shù)中有效

(0在本程序范圍內(nèi)均有效

(D)為非法變量

24、以下不正確的說(shuō)法為(D)

(A)在不同函數(shù)中可以使用相同名字的變量

(B)形式參數(shù)是局部變量

(0在函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

(D)在函數(shù)內(nèi)的復(fù)合語(yǔ)句中定義的變量在本函數(shù)范圍內(nèi)有效

25、以下程序的正確運(yùn)行結(jié)果是(D)

#defineMAX10

inta[MAX],i;

voidsub2()

inta[MAX],i,max;

max=5;

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

)

voidsubl()

(

for(i=0;i<MAX;i++)a[i]=2*i;〃原題a[i]=i+l有錯(cuò),改為a[i]=2*i

)

voidsub3(inta[])

(

inti;

for(i=0;i<MAX;i++)printf(z,%d

printf(〃\n〃);

)

voidmain()

(

printf(〃\n〃);subl();sub3(a);sub20;sub3(a);

024681012141618

01234

(B)01234

024681012141618

(C)0123456789

01234

(D)024681012141618

024681012141618

26、以下程序的正確運(yùn)行結(jié)果是(C)

#include<stdio.h>

voidnum()

externintx,y;inta=15,b=10;

x=a-b;

y=a+b;

)

intx,y;

voidmainO

(

inta=7,b=5;

x=a+b;

y=a-b;

num();

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

(A)12,2

(B)不確定

(C)5,25

(D)1,12

27、凡是函數(shù)中未指定存儲(chǔ)類(lèi)別的局部變量,其隱含的存儲(chǔ)類(lèi)別為(A)

(A)自動(dòng)(auto)

(B)靜態(tài)(static)

(C)外部(extern)

(D)寄存器(register)

28、在一個(gè)C源程序文件中,若要定義一個(gè)只允許本源文件中所有函數(shù)使用的全局變量,則

該變量需要使用的存儲(chǔ)類(lèi)別是(D)

(A)extern

(B)register

(C)auto

(D)static

29、以下程序的正確運(yùn)行結(jié)果是(D)

voidmain()

(

inta=2,i;

for(i=0;i<3;i++)printf("%4d”,f(a));

)

f(inta)

(

intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

(A)777

(B)71013

(C)7911

(D)789

30、以下程序的正確運(yùn)行結(jié)果是(A)

#include<stdio.h>

func(inta,intb)

(

staticintm=0,i=2;

i+=m+l;

m=i+a+b;

return(m);

)

voidmain()

intk=4,m=l,p;

p=func(k,m);printf(繪d,",p);

p=func(k,m);printf("%d\n",p);

)

(A)8,17

(B)8,16

(C)8,20

(D)8,8

二、填空題

31、C語(yǔ)言規(guī)定,可執(zhí)行程序的開(kāi)始執(zhí)行點(diǎn)是________。程序中的main。函數(shù)

32、在C語(yǔ)言中,一個(gè)函數(shù)一般由兩個(gè)部分組成,他們是和。函數(shù)說(shuō)明部

分函數(shù)體

33、若輸入的值是T25,以下程序的運(yùn)行結(jié)果是--125=-5*5*5

#include<stdio.h>

#include<math.h>

voidfun(intn)

(

intk,r;

for(k=2;k<=sqrt(n);k++)

(

r=n%k;

while(r=0)

(

printf(線(xiàn)d",k);

n=n/k;

if(n>l)printf-*");

r=n%k;

)

)

if(n!=l)printfC%d\n",n);

}

voidmain()

{

intn;

scanf&n);

printf("肌1=”,n);

if(n<0)printf

n=fabs(n);

fun(n);

)

34、下面add函數(shù)的功能是求兩個(gè)參數(shù)的和,并將和值返回調(diào)用函數(shù)。函數(shù)中錯(cuò)誤的部分是

;改正后為ovoidadd(floata,floatb)floatadd(floata,floatb)

voidadd(floata,floatb)

floatc;

c=a+b;

returnc;

)

35、以下程序的運(yùn)行結(jié)果是o

i=7;j=6;x=7

i=2;j=7;x=5

voidfun(inti,intj)

(

intx=7;

pirntf("i=%d;j=%d;x=%d\n,z,i,j,x);

)

voidmain()

(

inti=2,x=5,j=7;

fun(j,6);

printf("i=%d;j=%d;x=%d\n”,i,j,x);

)

36、以下程序的運(yùn)行結(jié)果是o111

voidincrement()

(

intx=0;

x+=l;

printf("%d",x);

)

voidmain()

(

increment();

increment();

increment();

}

37、以下程序的運(yùn)行結(jié)果是omaxis2

max(intx,inty)

(

intz;

z=(x>y)?x:y;

return(z);

)

voidmain()

inta=l,b=2,c;

c=max(a,b);

printf(〃maxis%d\n〃,c);

38、以下程序的功能是根據(jù)輸入的〃y〃(勺〃)與〃n〃(〃N〃),在屏幕上分別顯示出〃ThisisYES.〃

與"ThisisNO."。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

voidYesNo(charch)

(

switch(ch)

(

case'y':

case'Y':printf(,z\nThisisYES.\n〃);;break

case'n:

case'N':printf(z,\nThisisNO.\n");

)

)

voidmain()

(

charch;

printf(,z\nEnterachar'y','Y‘or'n','N':〃);

ch=;getchar()

printf(〃ch:%c〃,ch);

YesNo(ch);

)

39、以下Check函數(shù)的功能是對(duì)value中的值進(jìn)行四舍五入計(jì)算,若計(jì)算后的值與ponse值

相等,則顯示〃WELLDONE!!",否則顯示計(jì)算后的值。已有函數(shù)調(diào)用語(yǔ)句Check(ponse,value);

請(qǐng)?zhí)羁铡?/p>

voidCheck(intponse,floatvalue)

(

intval;

val=;(int)((value*10+5)/10)

printf(〃計(jì)算后的值:%d\val);

if()printfCXnWELLD0NE!!!\n〃);ponse==val

elseprintf(z,\nSorrythecorrectansweris%d\n/z,val);

)

40、以下程序的功能是o打印出所有“水仙花數(shù)”

#include<stdio.h>

f(intn)

(

inti,j,k;

i=n/100;j=n/10-i*10;k=n%10;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)returnn;

elsereturn0;

)

voidmain()

(

intn,k;

printf("output");

for(n=100;n<1000;n++)

{

k=f(n);

if(k!=0)printfk)

)

printf(〃\n〃);

)

41、以下程序的功能是用二分法求方程2*x*x*x-4*x*x+3x-6=0的根,并要求絕對(duì)誤差不超過(guò)

0.001o請(qǐng)?zhí)羁?/p>

#include<stdio.h>

floatf(floatx){return2*x*x*x-4*x*x+3*x-6;}

voidmain()

(

floatm二TOO,n=90,r;

r=(m+n)/2;

while(f(r)*f(n)!=0)

(

if()m=r;f(r)*f(n)<0

elsen=r;

if(________)break;n_m<0.001

r=(m+n)/2;

)

printf(?,Theisfangchengjieis%6.3f\n〃,r);

)

42、若輸入一個(gè)整數(shù)10,以下程序的運(yùn)行結(jié)果是________。1010

sub(inta)

(

intc;

c=a%2;

returnc;

)

voidmain()

(

inta,e[10],c,i=0;

printf(“輸入一整數(shù)\n〃);

scanf&a);

while(a!=0)

c=sub(a);

a=a/2;

e[i]=c;

i++;

)

for(;i>0;i-)printfe[i-l]);

)

43、以下程序的功能是計(jì)算下面函數(shù)的值,請(qǐng)?zhí)羁铡?/p>

F(x,y,z)=sin(x)/(sin(x-y)*sin(x-z))+sin(y)/(sin(y-z)*sin(y-x))+sin(z)/(sin(z

-x)*sin(z-y))

#include<stdio.h>

#include<math.h>

floatf();

voidmain()

(

floatx,y,z,sum;

printf(z,\ninputx,y,z:\n〃);

scanf&x,&y,&z);

sum=________;f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y)

printf(〃sum=%f\n〃,sum);

)

floatf(floata,floatb,floatc)

(

floatvalue;

value=________;sin(a)/(sin(b)*sin(c))

returnvalue;

)

44、已有函數(shù)pow,現(xiàn)要求取消變量i后pow函數(shù)的功能不變。請(qǐng)?zhí)羁铡?/p>

修改前的pow函數(shù)

pow(intx,inty)

(

inti,j=l;

for(i=l;i<=y;++i)j=j*x;

returnj;

}

修改后的pow函數(shù)

pow(intx,inty)

(

intj;

for(;;)j=j*x;j=ly>=ly-

returnj;

}

45、以下程序的運(yùn)行結(jié)果是輸出如下圖形。請(qǐng)?zhí)羁铡?/p>

***

***

*

#include<stdio.h>

voida(inti)

(

intj,k;

for(j=0;j<=7-i;j++)printfC〃);

for(k=0;k<;k++)printf(〃*〃);2*i+l

printf(〃\n〃);

)

voidmain()

(

inti;

for(i=0;i<3;i++)________;a(i)

for(i=3;i>=0;i—);a(i)

)

46、以下程序的功能是求三個(gè)數(shù)的最小公倍數(shù),請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

max(intx,inty,intz)

(

if(x>y&&y>z)returnx;

elseif()returny;y>x&&y>z

elsereturnz;

)

voidmainO

(

intxl,x2,x3,i=l,j,xO;

printf(/zInput3number:/z);

scanf(/,%d%d%d,/,&xl,&x2,&x3);

xO=max(xl,x2,x3);

while(l)

(

j=xO*i;

if()break;j%xl=0&&j%x2==0&&j%x3==0

i=i+l;

)

printf("%d%d%d的最小公倍數(shù)是%d\n,z,xl,x2,x3,j);

47、函數(shù)gongyu的作用是求整數(shù)numl和num2的最大公約數(shù),并返回該值,請(qǐng)?zhí)羁铡?/p>

gongyu(intnuml,intnum2)

(

inttemp,a,b;

if(numl________num2)>

(

temp二numl;numl=num2;num2=temp;

)

a=numl;b=num2;

while()b!=0

(

temp=a%b;a=b;b=temp;

}

returna;

)

48、以下程序的運(yùn)行結(jié)果是o

(1)x=2y=3z=0

(2)x=4y=9z=5

(3)x=2y=3z=0

add(intx,inty,intz)

(

z=x+y;x=x*x;y=y*y;

printf("(2)x=%dy=%dz=%d\n”,x,y,z)

}

voidmain()

(

intx=2,y=3,z=0;

printf(,z(l)x=%dy=%dz=%d\nz/,x,y,z);

add(x,y,z);

printf(z,(3)x=%dy=%dz=%d\n,z,x,y,z);

)

49、下面函數(shù)pi的功能是:根據(jù)以下公式,返回滿(mǎn)足精度(0.0005)要求的人的值,請(qǐng)?zhí)羁铡?/p>

n/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+...

#include<conio.h>

#include<math.h>

#include<stdio.h>

doublepi(doubleeps)

(

doubles,t;intn;

for(____;t>eps;n++)n=l,s=0.0,t=l.0

s+=t;

t=n*t/(2*n+l);

)

return;2.0*s

)

voidmain()

(

doublex;

printf(,z\nPleaseenteraprecision:〃);

scanf&x);

printf(/z\neps=%lf,n二%lf”,x,pi(x));

)

50、下面是一個(gè)計(jì)算階乘的程序。程序中的錯(cuò)誤語(yǔ)句是________,應(yīng)改為一

把factoricl函數(shù)中的語(yǔ)句while(n>l||n<170)result*=(double)--n;

改為while(n>l&&n<170)result*=(double)n-;

#include"stdio.h〃

doublefactorial(int);

voidmainO

(

intn;

printf("Enteraninteger:〃);

scanf("%d〃,&n);

printf(z/\n\n%d[=%lg\n\nz,,n,factorial(n));

}

doublefactorial(intn)

(

doubleresult=l.0;

while(n>l|n<170)result*=(double)-n;

returnresult;

)

51、娥f中的形參a為一個(gè)10X10的二維數(shù)組,n的值為5,以下程序段的作用是.

計(jì)算5階幻方并保存在數(shù)組中下面的程序有錯(cuò)誤

17241815

23571416

46132022

101219213

11182529

voidf(inta[10][10],intn)

inti,j,k;

j=n/2+l;

a[l][j]=l;

i=l;

for(k=2;k<=n*n;k++)

{

i=i-l;j=j+l;

if(i<l)&&(j>n)){i=i+2;j=j-l;}

else

(

i=n;

if(j>n)j=l;

)

if(a[il[j]==0)a[i]Cjl-k;

else{i=i+2;j=j-i;a[i][j]=k;}

}

)

52、下面函數(shù)func的功能是.計(jì)算整數(shù)num的各位數(shù)字之積

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

longfunc(longnum)

(

longk=l;

num-labs(num);

do{

k*=num%10;

num/=10;

}while(num);

returnk;

)

voidmain()

(

longn;

printf("\nPleaseenteranumber:");

scanf&n);

printf("\nTheproductofitsdigitsis%ld.",func(n));

)

53、以下程序的運(yùn)行結(jié)果是.

FACT(5):120

FACT(l):1

FACT?0):Error!

#include<stdio.h>

voidmain()

(

printf(,ZFACT(5):%d\n,z,fact(5));

printf(^FACTd):%d\n〃,fact(1));

fact(-5);

)

fact(intvalue)

(

if(value<0){printf("FACT(<0):Error!\n〃);returnT;}

elseif(value==l|Ivalue-O)return1;

elsereturn(value*fact(value-1));

)

54、以下程序的功能是用遞歸方法計(jì)算學(xué)生的年齡,已知第一位學(xué)生年齡最小,為10歲,其

余學(xué)生一個(gè)比一個(gè)大2歲,求第5位學(xué)生的年齡。請(qǐng)?zhí)羁铡?/p>

遞歸公式如下:

age(n)=10(n=l)

age(n)=age(n-1)+2(n>l)

#include<stdio.h>

age(intn)

(

intc;

if(n==l)c=10;

elsec=____;age(n-1)+2

returnc;

)

voidmain()

(

intn=5;

printfC'age:%d\n,z,________);age(5)

)

55、下面程序的功能是,運(yùn)行結(jié)果是o計(jì)算斐波拉契級(jí)數(shù)第7項(xiàng)的值k=13

longfib(intg)

(

switch(g)

(

case0:return0;

case1:case2:return1;

returnfib(g-l)+fib(g-2);

}

voidmain()

(

longk;

k=fib(7);

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

)

56、下面程序的運(yùn)行結(jié)果是o15

sub(intn)

(

inta;

if(n==l)return1;

a=n+sub(n-1);

returna;

)

voidmain()

(

inti=5;

printf(〃%d\n”,sub(i));

)

57、以下程序是應(yīng)用遞歸算法求某數(shù)a的平方根,請(qǐng)?zhí)羁?。求平方根的迭代公式如?

xl=(xO+a/xO)/2

#include<math.h>

doublemysqrt(doublea,doublexO)

{

doublexl,y;

xl=;(xO+a/xO)/2.0

if(fabs(xl-xO)>0.00001)y=mysqrt();a,xl

elsey=xl;

returny;

}

voidmain()

(

doublex;

printf(''Enterx:〃);scanf(,z%lf,z,&x);

printf(z,Thesqrtof%f=%f\n/z,x,mysqrt(x,1,0));

)

58、以下程序的運(yùn)行結(jié)果是o5109

#include<stdio.h>

voidf(inta[])

inti=0;

while(a[i]<=10)

(

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

i++;

)

)

voidmain()

|

inta[]={l,5,10,9,11,7);

f(a+l);

}

59、以下程序的運(yùn)行結(jié)果是osum=6

voidmain()

(

inta[3][3]={1,3,5,7,9,11,13,15,17};intsum;

sum=func(a);

printf(,z\nsum=%d\nzz,sum);

)

func(inta[][3])

(

inti,j,sum=0;

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

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

(

a[i][j]=i+j;

if(i==j)sum=sum+a[i][j];

)

returnsum;

)

60、閱讀下面程序,完成下列問(wèn)題中的填空。

問(wèn)題(1)此程序在調(diào)用函數(shù)f后的運(yùn)行結(jié)果是________。

0123

-1012

-2-101

-3-2-10

(2)若將函數(shù)f中的for(j=i+1;j<4;j++)改為for(j=0;j++),則程序的運(yùn)

行結(jié)果是o

0-1-2-3

10-1-2

210-1

3210

voidf(ints[][4])

(

inti,j,k;

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

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

(

k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;

)

)

voidmain()

(

ints[4][4],i,j;

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

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

f(s);

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

(

printf("\n");

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

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

)

)

61、納search函數(shù)的功能是利用順序查找法從數(shù)組a的10個(gè)元素中對(duì)關(guān)鍵字m進(jìn)行查找。

順序查找法的思路是:從第一個(gè)元素開(kāi)始,從前向后依次與關(guān)鍵字比較,直到找到此元素或

查找到數(shù)組尾部時(shí)結(jié)束。若找到,返回此元素的下標(biāo);若仍未找到,則返回值7。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

intsearch(inta[10],intm)

(

inti;

for(i=0;i<=9;i++)if()returni;a[i]=m

return-1;

)

voidmain()

(

inta[10],m,i,no;

no=search();a,m

if()printfC\nOKFOUND!%d”,no+1);no>=0

elseprintf("\nSorryNotFound!;

)

62、已定義一個(gè)含有30個(gè)元素的數(shù)組s,函數(shù)favl的功能是按順序分別賦予各元素從2開(kāi)

始的偶數(shù),函數(shù)fav2則按順序每五個(gè)元素求一個(gè)平均值,并將該值放在數(shù)組w中。請(qǐng)?zhí)羁铡?/p>

#defineSIZE30

voidfavl(floats[])

(

intk,i;

for(k=2,i=0;i<SIZE;i++)

(

s[i]=k

k+=2;

)

}

voidfav2(floats[],floatw口)

(

floatsum;intk,i;

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

(

sum+=s[i];

if(i+l)%5=0

(

w[k]=sum/5;

;sum=0

k++;

)

)

}

voidmain()

(

floats[SIZE],w[SIZE/5],sum;inti,k;

favl(s);

fav2(s,w);

)

63、以下程序的運(yùn)行結(jié)果是________,其算法是________.-735710冒泡法排序

voidsort(inta口)

(

inti,j,t;

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

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

if(a[j]>a[j+H){t=a[j];a[j]=a[j+l];a[j+l]^t;}

)

voidmain()

inta[5]={5,10,-7,3,7},i,t,j;

sort(a);

for(i=0;i<=4;i++)printfC%d,z,a[i]);

64、以下程序的運(yùn)行結(jié)果是,其算法是o-13689選擇法排序

voidsort(inta[])

(

inti,j,t,p;

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

(

P=j;

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

if(a[i]<a[p])p=i;

t=a[p];a[p]=a[j]

voidmain()

(

inta[5]={9,6,8,3,-1),i,t,j,p;

sort(a);

for(i=0;i<=4;i++)printf(z,%d

)

65、函數(shù)del的作用是刪除有序數(shù)組a中的指定元素x。已有調(diào)用語(yǔ)句n=del(a,n,x);其中

實(shí)參n為刪除前數(shù)組元素的個(gè)數(shù),賦值號(hào)左邊的n為刪除后數(shù)組元素的個(gè)數(shù)。請(qǐng)?zhí)羁铡?/p>

del(inta[],intn,intx)

{

intp,i;

P=0;

while(x>=a[p]&&p<n);p=p+l

for(i=p-l;i<n;i++);a[i]=a[i+l]

n=n-l;

returnn;

)

66、以下程序的運(yùn)行結(jié)果是。

11357

24268

101312

thevalueis31

#include<stdio.h>

func(intarray[][4],intm)

inti,j,k;

k=0;

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

for(j=0;j<4;j++)if(array[i][j]<m)k=k+array[i][j];

returnk;

)

voidmain()

(

staticinta[3][4]={{1,13,5,7},{2,4,26,8},{10,1,3,12)};

inti,j,m;

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

(

for(j=0;j<4;j++)printf(,z%4d,z,a[i][j]);

printfC\n,z);

)

m=10;

printf(,z\nthevalueis%d\n/z,func(a,m));

}

67、函數(shù)swap(intx,inty)可完成對(duì)x和y值的交換。在運(yùn)行調(diào)用函數(shù)中的如下語(yǔ)句后,

a[0]和a[l]的值分別為,原因是。a[0]=la[l]=2值傳送,無(wú)法返回交換

后的值

a[0]=1;a[1]=2;

swap(a[0],a[l]);

68、函數(shù)swap(arr,n)可完成對(duì)arr數(shù)組從第1個(gè)元素到第n個(gè)元素兩兩交換。在運(yùn)行調(diào)用

函數(shù)中的如下語(yǔ)句后,a[0]和a[l]的值分別為_(kāi)原因是__°a[0]=2a[1]=1實(shí)

參是地址值,已對(duì)指定地址中的內(nèi)容進(jìn)行了交換

a[0]=l;a[l]=2;

swap(a,2);

69、以下程序可計(jì)算10名學(xué)生1門(mén)課成績(jī)的平均分,請(qǐng)?zhí)羁铡?/p>

floataverage(floatarray[10])

(

inti;floataver,sum=array[0];

for(i=l;;i++)sum+=;i<10array[i]

aver=sum/10;

return(aver);

)

voidmain()

(

floatscore[10],aver;inti;

printf(〃\ninput10scores:");

for(i=0;i<10;i++)scanf&score[i]);

aver=;average(score)

printf(^Xnaveragescoreis%5.2f\n,\aver);

)

70、函數(shù)yahui能夠按以下形式構(gòu)成一個(gè)揚(yáng)輝三角形,請(qǐng)?zhí)羁铡?/p>

1

11

121

1331

14641

15101051

#defineN11

yahui(inta[][N])

(

inti,j;

for(i=l;i<N;i++){a[i][l]=l;a[i][i]=l;}

for(________;i<N;i++)i=3

for(j=2;;j++)a[i][j]=+a[i-l][j];j<=i-l

a[i-l][j-l]

)

71、下面程序的功能是:從鍵盤(pán)輸入一個(gè)整數(shù)m(4WmW20),則輸出如下的整數(shù)方陣(存入

二維數(shù)組aa)。例如,若輸入〃4〃和〃5〃,則分別輸出

169412516941

941161694125

411699412516

116944125169

1251694

請(qǐng)改正程序中的錯(cuò)誤語(yǔ)句,使它能得出正確的結(jié)果。改正后的語(yǔ)句是.______和

(注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)。)for(j=0;j<n-l;j++)

printf(,/%4d/,,(*(aa+i))[j];

#include<conio.h>

#include<stdio.h>

#defineM20

voidaMatrix(intn,intxx[][M])

(

inti,j;

for(j=0;j<n;j++)xx[0][j]=(n-j)*(n-j);

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

(

for(j=0;j<n;j++)/*錯(cuò)誤語(yǔ)句*/

xx[i][j]=xx[i-l][j+1];

xx[i][n-l]=xx[i-l][0];

}

voidmain()

(

intaa[M][M],i,j,m;

printf(,z\nPleaseenteranintegernumberbetween4and20:〃);

scanf(〃%d”,&m);

aMatrix(m,aa);

printf(z,\nThe%d*%dmatrixgenerated:〃,m,m);

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

(

printf(〃\n");

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

printf(*(aa+

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論