练习题-函数(答案)_第1页
练习题-函数(答案)_第2页
练习题-函数(答案)_第3页
练习题-函数(答案)_第4页
练习题-函数(答案)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

请注意,如果要在VS2005中验证,函数值类型缺省的应加上int,因为vs2005中己经不支

持缺省函数值类型

以下答案除编程题外都经过验证

函数

一、选择题

1、以下正确的说法是(B)〃此题不妥!

建立函数的目的之一是

(A)提高程序的执行效率

(B)提高程序的可读性

(0减少程序的篇幅

(D)减少程序文件所占内存

2、以下正确的说法是(B)

(A)用户若需要调用标准库函数,调用前必须重新定义

(B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义

(0系统根本不允许用户重新定义标准库函数

(D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户

源文件中,系统自动去调

3、以下正确的函数声明形式是(C)

(A)doublefun(intx,inty)

(B)doublefun(intx;inty)

(C)doublefun(intx,inty);

(D)doublefun(intx,y);

4、以下正确的函数形式是(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、以下正确的说法是(A)〃这个题目A答案的描述容易引起误会且不是任何情况下都

是正确的

在C语言中

(A)实参和与其对应的形参各占用独立的存储单元

(B)实参和与其对应的形参共占用一个存储单元

(0只有当实参和与其对应的形参同名时才共占用存储单元

(D)形参是虚拟的,不占用存储单元

6、若调用一个函数,且此函数中没有return语句,则正确的说法是(A)〃答案A也不

太对,应该是返回一个空值

该函数

(A)没有返回值

(B)返回若干个系统默认值

(0能返回一个用户所希望的函数值

(D)返回一个不确定的值

7、以下不正确的说法是(A)〃B勉强也可以说是对的

C语言规定

(A)实参可以是常量、变量和表达式

(B)形参可以是常量、变量和表达式

(0实参可以为任意类型

(D)形参应与其对应的实参类型一致

8、以下正确的说法是(C)

(A)定义函数时,形参的类型说明可以放在函数体内

(B)return后边的值不能为表达式

(0如果函数值的类型与返回值类型不一致,以函数值类型为准

(D)如果形参与实参的类型不一致,以实参类型为准

9、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)

(A)地址传递

(B)单向值传递

(0由实参传给形参,再由形参传回给实参

(D)由用户指定传递方式

10、以下程序有语法性错误,有关错误原因的正确说法是(C)

voidmain()

(

intG=5,k;

voidprt_char();

k=prt_char⑹;

)

(A)语句voidprt_char();有错,它是函数调用语句,不能用void说明

(B)变量名不能使用大写字母

(0函数说明和函数调用之间有矛盾

(D)函数名不能使用下划线

11、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)

(A)float型

(B)int型

(C)long型

(D)double型

12、C语言规定,函数返回值的类型是由(D)

(A)return语句中的表达式类型所决定

(B)调用该函数时的主调函数类型所决定

(0调用该函数时系统临时决定

(D)在定义该函数时所指定的函数类型所决定

13、下面函数调用语句含有实参的个数为(B)

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

(A)1

(B)2

(04

(D)5

14、以下错误的描述是(D)

函数调用可以

(A)出现在执行语句中

(B)出现在一个表达式中

(0做为一个函数的实参

(D)做为一个函数的形参

15、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。①

(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语言中

(A)函数的定义可以嵌套,但函数的调用不可以嵌套

(B)函数的定义不可以嵌套,但函数的调用可以嵌套

(0函数的定义和函数的调用均不可以嵌套

(D)函数的定义和函数的调用均可以嵌套

17、以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。

请选择填空。①(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、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');

则符合程序运行结果的选项是(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、若用数组名作为函数调用的实参,传递给形参的是(A)

(A)数组的首地址

(B)数组第一个元素的值

(0数组中全部元素的值

(D)数组元素的个数

20、已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误

定义方式为(B)

inta[3][4];

f(a);

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

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

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

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

21、若使用一维数组名作函数实参,则以下正确的说法是()〃这个题目供选择的答案中

都有不明确之处,书中给出的答案是A

(A)必须在主调函数中说明此数组的大小〃如果数组是全局变量就不需要在主调函

数中说明数组大小

(B)实参数组类型与形参数组类型可以不匹配〃什么叫匹配?只要能自动转换类型数组

类型就可以不相同

(0在被调函数中,不需要考虑形参数组的大小〃只要使用数组的时候不会越界就不

必考虑它的大小

(D)实参数组名与形参数组名必须一致〃只有这个显然是错的

22、折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元

素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;

反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有

10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请选择

填空。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、以下正确的说法是(A)

如果在一个函数中的复合语句中定义了一个变量,则该变量

(A)只在该复合语句中有效

(B)在该函数中有效

(0在本程序范围内均有效

(D)为非法变量

24、以下不正确的说法为(D)

(A)在不同函数中可以使用相同名字的变量

(B)形式参数是局部变量

(0在函数内定义的变量只在本函数范围内有效

(D)在函数内的复合语句中定义的变量在本函数范围内有效

25、以下程序的正确运行结果是(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有错,改为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、以下程序的正确运行结果是(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、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)

(A)自动(auto)

(B)静态(static)

(C)外部(extern)

(D)寄存器(register)

28、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则

该变量需要使用的存储类别是(D)

(A)extern

(B)register

(C)auto

(D)static

29、以下程序的正确运行结果是(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、以下程序的正确运行结果是(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语言规定,可执行程序的开始执行点是________。程序中的main。函数

32、在C语言中,一个函数一般由两个部分组成,他们是和。函数说明部

分函数体

33、若输入的值是T25,以下程序的运行结果是--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(线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函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是

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

voidadd(floata,floatb)

floatc;

c=a+b;

returnc;

)

35、以下程序的运行结果是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、以下程序的运行结果是o111

voidincrement()

(

intx=0;

x+=l;

printf("%d",x);

)

voidmain()

(

increment();

increment();

increment();

}

37、以下程序的运行结果是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、以下程序的功能是根据输入的〃y〃(勺〃)与〃n〃(〃N〃),在屏幕上分别显示出〃ThisisYES.〃

与"ThisisNO."。请填空。

#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函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值

相等,则显示〃WELLDONE!!",否则显示计算后的值。已有函数调用语句Check(ponse,value);

请填空。

voidCheck(intponse,floatvalue)

(

intval;

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

printf(〃计算后的值:%d\val);

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

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

)

40、以下程序的功能是o打印出所有“水仙花数”

#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的根,并要求绝对误差不超过

0.001o请填空

#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、若输入一个整数10,以下程序的运行结果是________。1010

sub(inta)

(

intc;

c=a%2;

returnc;

)

voidmain()

(

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

printf(“输入一整数\n〃);

scanf&a);

while(a!=0)

c=sub(a);

a=a/2;

e[i]=c;

i++;

)

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

)

43、以下程序的功能是计算下面函数的值,请填空。

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、已有函数pow,现要求取消变量i后pow函数的功能不变。请填空。

修改前的pow函数

pow(intx,inty)

(

inti,j=l;

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

returnj;

}

修改后的pow函数

pow(intx,inty)

(

intj;

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

returnj;

}

45、以下程序的运行结果是输出如下图形。请填空。

***

***

*

#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、以下程序的功能是求三个数的最小公倍数,请填空。

#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的最小公倍数是%d\n,z,xl,x2,x3,j);

47、函数gongyu的作用是求整数numl和num2的最大公约数,并返回该值,请填空。

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、以下程序的运行结果是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、下面函数pi的功能是:根据以下公式,返回满足精度(0.0005)要求的人的值,请填空。

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、下面是一个计算阶乘的程序。程序中的错误语句是________,应改为一

把factoricl函数中的语句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为一个10X10的二维数组,n的值为5,以下程序段的作用是.

计算5阶幻方并保存在数组中下面的程序有错误

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、下面函数func的功能是.计算整数num的各位数字之积

#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、以下程序的运行结果是.

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、以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其

余学生一个比一个大2岁,求第5位学生的年龄。请填空。

递归公式如下:

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、下面程序的功能是,运行结果是o计算斐波拉契级数第7项的值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、下面程序的运行结果是o15

sub(intn)

(

inta;

if(n==l)return1;

a=n+sub(n-1);

returna;

)

voidmain()

(

inti=5;

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

)

57、以下程序是应用递归算法求某数a的平方根,请填空。求平方根的迭代公式如下:

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、以下程序的运行结果是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、以下程序的运行结果是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、阅读下面程序,完成下列问题中的填空。

问题(1)此程序在调用函数f后的运行结果是________。

0123

-1012

-2-101

-3-2-10

(2)若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j++),则程序的运

行结果是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函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。

顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或

查找到数组尾部时结束。若找到,返回此元素的下标;若仍未找到,则返回值7。请填空。

#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、已定义一个含有30个元素的数组s,函数favl的功能是按顺序分别赋予各元素从2开

始的偶数,函数fav2则按顺序每五个元素求一个平均值,并将该值放在数组w中。请填空。

#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、以下程序的运行结果是________,其算法是________.-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、以下程序的运行结果是,其算法是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、函数del的作用是删除有序数组a中的指定元素x。已有调用语句n=del(a,n,x);其中

实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请填空。

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、以下程序的运行结果是。

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、函数swap(intx,inty)可完成对x和y值的交换。在运行调用函数中的如下语句后,

a[0]和a[l]的值分别为,原因是。a[0]=la[l]=2值传送,无法返回交换

后的值

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

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

68、函数swap(arr,n)可完成对arr数组从第1个元素到第n个元素两两交换。在运行调用

函数中的如下语句后,a[0]和a[l]的值分别为_原因是__°a[0]=2a[1]=1实

参是地址值,已对指定地址中的内容进行了交换

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

swap(a,2);

69、以下程序可计算10名学生1门课成绩的平均分,请填空。

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、函数yahui能够按以下形式构成一个扬辉三角形,请填空。

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、下面程序的功能是:从键盘输入一个整数m(4WmW20),则输出如下的整数方阵(存入

二维数组aa)。例如,若输入〃4〃和〃5〃,则分别输出

169412516941

941161694125

411699412516

116944125169

1251694

请改正程序中的错误语句,使它能得出正确的结果。改正后的语句是.______和

(注意:不得增行或删行,也不得更改程序的结构。)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++)/*错误语句*/

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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论