第07章 函数.docx

上传人:b****1 文档编号:2956347 上传时间:2023-05-05 格式:DOCX 页数:51 大小:55.46KB
下载 相关 举报
第07章 函数.docx_第1页
第1页 / 共51页
第07章 函数.docx_第2页
第2页 / 共51页
第07章 函数.docx_第3页
第3页 / 共51页
第07章 函数.docx_第4页
第4页 / 共51页
第07章 函数.docx_第5页
第5页 / 共51页
第07章 函数.docx_第6页
第6页 / 共51页
第07章 函数.docx_第7页
第7页 / 共51页
第07章 函数.docx_第8页
第8页 / 共51页
第07章 函数.docx_第9页
第9页 / 共51页
第07章 函数.docx_第10页
第10页 / 共51页
第07章 函数.docx_第11页
第11页 / 共51页
第07章 函数.docx_第12页
第12页 / 共51页
第07章 函数.docx_第13页
第13页 / 共51页
第07章 函数.docx_第14页
第14页 / 共51页
第07章 函数.docx_第15页
第15页 / 共51页
第07章 函数.docx_第16页
第16页 / 共51页
第07章 函数.docx_第17页
第17页 / 共51页
第07章 函数.docx_第18页
第18页 / 共51页
第07章 函数.docx_第19页
第19页 / 共51页
第07章 函数.docx_第20页
第20页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第07章 函数.docx

《第07章 函数.docx》由会员分享,可在线阅读,更多相关《第07章 函数.docx(51页珍藏版)》请在冰点文库上搜索。

第07章 函数.docx

第07章函数

第七章函数

7.1选择题

7.1 以下正确的说法是______。

建立函数的目的之一是A)提高程序的执行效率

B)提高程序的可读性

C)减少程序篇幅

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

7.2 以下正确的说法是______。

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

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

C)系统根本不允许用户重新定义标准为库函数

D)用户若需调用标准库函数,调用前不必使用预编译命令将函数所在文件包括到用户源文件中,系统自动去调

7.3 以下正确的函数定义形式是______。

A)doublefun(intx,inty)

B)doublefun(intx;inty)

C)doublefun(intx,inty);

D)doublefun(intc,y);

7.4以下正确的函数定义形式是______。

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;

}

7.5以下正确的说法是______。

在C语言中A)实参和与其对应的形参各占用独立的存储单元

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

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

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

7.6若调用一个函数,且此函数中没有return语句,则正确的说法是______。

该函数A)没有返回值

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

C)能返回一个用户所希望的函数值

D)返回一个不确定的值

7.7以下不正确的说法是______。

C语言规定A)实参可以是常量、变量或表达式

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

C)实参可以为任意类型

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

7.8以下正确的说法是______。

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

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

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

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

7.9C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是______。

A)地址传递

B)单向值传递

C)由实参传给形参,再由形参传回实参

D)由用户指定传递方式

7.10以下程序有语法性错误,有关错误原因的正确说法是______。

main()

{intG=5,k;

voidprt_char();

……

k=prt_char(G);

……

}

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

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

C)函数说明和函数调用语句之间有矛盾

D)函数名不能用下划线

7.11C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______。

A)float型

B)int型

C)long型

D)double型

7.12C语言规定,函数返回值的类型是由______。

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

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

C)调用该函数时系统临时决定

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

7.13下面函数调用语句含有实参的个数为______。

fun((exp1,exp2),(exp3,exp4,exp5));

A)1B)2C)4D)5

7.14以下错误的描述是______。

函数调用可以A)出现在执行语句中

B)出现在一个表达式中

C)做为一个函数的实参

D)做为一个函数的形参

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

#include

#include

floatf(float,float);

main()

{

flaotx,y,z,sum;

scanf(“%f%f%f”,&x,&y,&z);

sum=f(__1__)+f(__2__);

printf(“sum=%f\n”,sum);

}

floatf(flaota,floatb)

{floatvalue;

value=a/b;

return(value);

}

1、A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y

2、A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y

7.16以下正确的描述是______。

在C语言程序中,A)函数的定义可以嵌套,但函数的调用不可以嵌套

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

C)函数的定义和函数的调用均不可以嵌套

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

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

请填空。

sub(intk,intn)

{

inta1,a2;

a2=__1__;

a1=k-__2__;

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

{

printf(“%d”,k);

n++;

returnn;

}

elsereturn–1;

}

main()

{

intn=0,k,m;

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

{

m=sub(k,n);

if(m!

=-1)n=m;

}

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

}

1、A)k*10B)k%10C)k/10D)k*10%10

2、A)a2*10B)a2C)a2/10D)a2%10

7.18以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,‘A’,‘B’,‘C’);则符合程序段运行结果的选项是______。

voidmove(chargetone,charputonr)

{

printf(“%c――>%c\n”,getone,getone);

}

voidhanoi(intn,charone,chartwo,chatthree)

{

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

else{

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

move(one,three);

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

}

}

A)

A――>C

B)

A――>C

C)

A――>C

D)

A――>C

A――>B

A――>B

A――>B

A――>B

C――>B

C――>A

C――>B

C――>B

B――>A

A――>B

A――>C

A――>C

C――>B

B――>C

B――>A

A――>B

A――>C

A――>C

B――>C

B――>C

A――>B

A――>B

A――>C

A――>C

7.19若有数组名作为函数调用的实参,传递给形参的是______。

A)数组的首地址

B)数组第一个元素的值

C)数组中全部元素的值

D)数组元素的个数

7.20已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为______。

inta[3][4];

f(a);

A)f(intarray[][6])

B)f(intarray[3][])

C)f(intarray[][4])

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

7.21若使用一维数组名作函数实参,则以下正确的说法是______。

A)必须在主调函数中说明此数组的大小

B)实参数组类型与形参数组类型可以不匹配

C)在被调用函数中,不需要考虑形参数组大小

D)实参数组名与形参数组名必须一致

7.22折半查找法的思路是:

先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。

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

函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。

请选择填空。

binary(inta,intm)

{

intlow=0,high=9,mid;

while(low<=high)

{

mid=(low+high)/2;

if(m

elseif(m>a[mid]__2__;

elsereturn(mid);

}

return(-1);

}

1、A)high=mid-1B)low=mid+1

C)high=mid+1D)low=mid-1

2、A)high=mid-1B)low=mid+1

C)high=mid+1D)low=mid-1

7.23以下正确的说法是______。

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

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

B)在该函数中有效

C)在本程序范围内均有效

D)为非法变量

7.24以下不正确的说法是______。

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

B)形式参数是局部变量

C)在函数内定义的变量只在本函数范围内有效

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

7.25以下程序的正确运行结果是______。

#defineMAX10

inta[MAX],i;

main()

{

printf(“\n”);sub1();sub3(a);sub2();sub3(a);

}

sub2()

{

inta[MAX],i,max;

max=5;

for(i=0;i

}

sub1()

{

for(i=0;i

}

sub3(inta[])

{

inti;

for(i=0;i

printf(“\n”);

}

A)

0

2

4

6

8

10

12

14

16

18

0

1

2

3

4

B)

0

1

2

3

4

0

2

4

6

8

10

12

14

16

18

C)

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

D)

0

2

4

6

8

10

12

14

16

18

0

2

4

6

8

10

12

14

16

18

7.26以下程序的正确运行结果是______。

#include

voidnum()

{

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

x=a-b;

y=a+b;

}

intx,y;

main()

{

inta=7,b=5;

x=a+b;

y=a-b;

num();

printf(“%d,%d\n”,x,y);

}

A)12,2B)不确定C)5,25D)1,12

7.27凡是函数中未指定存储类型的局部变量,其隐含的存储类别为______。

A)自动(auto)B)静态(static)

C)外部(extern)D)寄存器(register)

7.28在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是______。

A)externB)register

C)autoD)static

7.29以下程序的正确运行结果是______。

main()

{

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)7777B)71013

C)7911D)789

7.30以下程序的正确运行结果是______。

#include

main()

{

intk=4,m=1,p;

p=func(k,m);printf(“%d”,p);

p=func(k,m);printf(“%d”,p);

}

func(inta,intb)

{

staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

A)8,17B)8,16C)8,20D)8,8

 

7.2填空题

7.31C语言规定,可执行程序的开始执行点是______。

7.32在C语言中,一个函数一般由两个部分组成,它们是___1___和___2___。

7.33若输入的值是-125,以下程序的运行结果是______。

#include“math.h”

main()

{

intn;

scanf(“%d”,&n);

printf(“%d=”,n);

if(n<0)printf(“-”);

n=fabs(n);

fun(n);

}

fun(intn)

{intk,r;

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

{r=n%k;

while(r==0)

{printf(“%d”,k);

n=n/k;

if(n>1)printf(“*”);

r=n%k;

}

}

if(n!

=1)printf(“%d\n”,n);

}

7.34下面add函数的功能是求出两个参数的和,并将和值返回调用函数。

函数中有错误的部分___1___;改正后为___2___。

voidadd(floata,floatb)

{

floatc;

c=a+b;

returnc;

}

7.35以下程序的运行结果是______。

main()

{

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

fun(j,6);

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

}

fun(inti,intj)

{

intx=7;

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

}

7.36以下程序的运行结果是______。

main()

{

increment();

increment();

increment();

}

increment();

{

intx=0;

x+=1;

printf(“%d”,x);

}

7.37以下程序的运行结果是______。

#include

main()

{

inta=1,b=2,c;

c=max(a,b);

printf(“max=%d\n”,c);

}

max(intx,inty)

{

intz;

z=(x>y)?

x:

y;

return(z);

}

7.38以下程序的功能是根据的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisisNO.”请填空。

#include

voidYesNo(charch)

{

switch(ch)

{

case‘y’:

case‘Y’:

printf(“\nThisisYES.\n”);__1__;

case‘n’:

casr‘N’:

printf(“\nThisisNO.\n”);

}

}

main()

{

charch;

printf(“\nEnterachar‘y’,‘Y’,or‘n’,‘N’:

”);

ch=__2__;

printf(“ch:

%c”,ch);

YesNo(ch);

}

7.39以下Check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示“WELLDONE!

!

”,否则显示计算后的值。

已有函数调用语句Check(ponse,value);请填空。

voidCheck(intponse,floatvalue)

{

intval;

intval=__1__;

printf(“计算后的值:

%d”,val);

if(__2__)printf(“\nWELLDONE!

!

!

\n”);

elseprintf(“\nSorrythecorrectansweris%d\n”,val);

}

7.40以下程序的运行结果是______。

#include

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;

}

main()

{

intn,k;

printf(“output”);

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

{

k=f(n);

if(k!

=0)printf(“%d”,k);

}

printf(“\n”);

}

7.41以下程序的功能是用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对不超过0.001。

请填空。

#include

floatf(flaotx)

{return(2*x*x*x-4*x*x+3*x-6);}

main()

{

floatm=-100,n=90,r;

r=(m+n)/2;

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

=0)

{

if(__1__)m=r;

elsen=r;

if(__2__)break;

r=(m+n)/2;

}

printf(“Thisisfangchengjieis%6.3f\n”,r);

}

7.42若输入一个整数10,以下程序的运行结果是______。

main()

{

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--)printf(“%d”,e[i-1]);

}

sub(inta)

{

intc;

c=a%2;

returnc;

}

7.43以下程序的功能是计算函数的值。

请填空。

#include

#include

floatf();

main()

{

flaotx,y,z,sum;

printf(“\ninputx,y,z:

\n”);

scanf(“%f%f%f”,&x,&y,&y);

sum=__1__;

printf(“sum=%f\n”,sum);

}

floatf(floata,floatb,floatc)

{

floatvalue;

value=__2__;

return(value);

}

7.44已有函数pow,现在要求取消变量i后pow函数的功能不变。

请填空。

修改前的pow函数pow(intx,inty)

inti,j=1;

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

return(j);

修改前的pow函数pow(intx,inty)

intj;

for(__1__;__2__;__3__)j=j*x;

return(j);

7.45以下程序的运行结果是输出如下图形。

请填空。

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

#include

voida(inti)

{

intj,k;

for(j=0;j<=7-i;j++)print(“”);

for(k=0;k<__1__;k++)printf(“*”);

printf(“\n”);

}

main()

{

inti;

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

for(i=3;i>=0;i--)__3__;

}

7.46以下程序的功能是求出三个数的最小公倍数,请填空。

#include

max(intx,inty,intz)

{

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

elseif(__1__)return(y);

elsereturn(z);

}

main()

{

intx1,x2,x3,i=1,j,x0;

printf(“Input3number:

”);

scanf(“%d%d%d”,&x1,&x2,&x3);

x0=max(x1,x2,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2