C语言课后习题答案第八章解析_第1页
C语言课后习题答案第八章解析_第2页
C语言课后习题答案第八章解析_第3页
C语言课后习题答案第八章解析_第4页
C语言课后习题答案第八章解析_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

作业八:函数程序设计答案

(一)选择1(30分)

1.以下正确的函数定义形式是

A)doublefun(intx,inty)y

doublefun(intx;inty);

B)

doublefun(intx,int

0

doublefun(intx,y);

2.以下正确温)函数形式是以

A)doublefun(intx,inty)

{z二x+y;returnz;}fun

B)(intx,y)

{intz:returnz;}

C)fun(x,y)

{intx,y;doublez;z二x+y;returnz;}y)

D)doublefun(intx,int

{doublez;z二x+y;returnz;}(.重要)

3.以下正确的说法是

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

在C语言中A)与其对应的形参共占用一个存储单元只有当实参和与

B)其对应的形参同名时才共占用存储单元形参是虚拟的,

0不占用存储单元

D)

4.若调用一个函数,且此函数中没有return语句,则正确的说法是L。没有返回值

返回若干个系统默认值能返回一个用户所幕望的函数值返回

一个不确定的值(重.要)

5.以下不正确的说法是B_。

C实参可以是常量、变量或表达式

语形参可以是常量、变量或表达式实参可以为任意类

言规定A)型

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

0

D)

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

A)地址传递

B)单向值传递

C)

山实参传给形参,再山形参传回给实参

D)山田白步弟麻例天才

7.以下程序有

语法性错误,有关错误原因的正确说法是(一

main()

intG=5,k;

voidPrt.char():

k=Prtchar(G);

}

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

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

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

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

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

A)float型

B)int型

C)long型

D)double型

9.C语言规定,函数返回值的类型是LilL。

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

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

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

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

10.下面函数调用语句含有实参的个数为」

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

A)1B)2C)4D)5(重要)

11.以卜程序的功能是计算函数F(x,y,z)二(x+y)/(x-y)+(z+y)/(z-y)的值,请

选择填空。

#include<stdio.h>

nclude<math•h>

main()

(

floatx,y,z,sum;

scanf("%f%f%f",&x,&y,&z);sum=f([1]_B_)+f(【2】_C_);printf(

sum=%f\n,sum);

)

floatf(floata,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

L2JA)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y

12.以下正确的描述是也。

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

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

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

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

13-以下正确的说法是工。

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

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

B)在该函数中有效

0在本程序范禺内均有效

D)为非法变量

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

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

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

15.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全

局变量,则该变量需要使用的存储类别是

A)externB)registerC)autoD)static

(二)填空题(50分)

1,若输入的值是-125,以下程序的运行结果是-5拓拓

tfinclude<maih♦h>

mainO

(

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(i'==0)

(

printf("%d",k);

n=n/k;

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

r=n%k;

)

)

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

2.以下程序的运行结果是i二7;j二6:x二1

i二2;j二7;x二5。

main()

{

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

fun(j,6);

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

)

fun(inti,intj)

{

intx=7;

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

)

3.以下程序的运行结果是UL。

mainO

{

increment0;

increment();

increment();

)

increment()

(

intx=O;

x+二1;printf("%d”,x);

)

4.以下程序的运行结果是maxis2。

^include(stdio.h>

mainO

{

inta=l,b=2,c;

c=max(a,b):

printf("maxis%d\n',c);

)

max(intx,inty)

intz;

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

return(z);

)

5.以下程序的功能是根据输入的“昇()与),在屏幕上分别显示出“ThisisYES.”与

“ThisisNO•”。请填空。

^include<stdio.h>

voidYesNo(charch)

(

switch(ch)

(

case°y,:

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

case'N':printf("\nThisisNo.\n");_break_;}

)

main()

{

charch;

printf(u\nEntcrachar'y',*Y,or'n','N':");ch=gctchar();

printf(uch:%c",ch);

YesNo(ch);

)

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

个数。请选择填空。

sub(intk,intn)

{

intal,a2;

a2二[1]_C_;al=k-[2]_A_;

i±((k/3=0&&d2二二5)(k%3=0&&al二二5))

(

printf(u%d”,k);

n++;

returnn;

)

elsereturnT;

)

main()

(

intn=0,k,m;

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

m=sub(k,n);if(m!=-l)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.以下程序的功能是用二分法求方程2'3-4d3'-6=0的根,并要求绝对误

差不超过0.001。请填空。

trinclude<stdio.h>floatf(floatx)

{

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(f(m)*f(r)>0)m=r;

elsen=r;

if(fabs(f(r))<=0.001)break;

r=(m+n)/2;

)

printf("Theisfangchcngjicis%G•3f'n”,

)

8.以下程序的功能是计算下面函数的值。请填空。

sin(x)sin(y)sin(z)

F(x、y,z)=----------------------+-----------------------II-------------------------

sin(xy)*sin(xz)sin(yz)*sin(yx)sin(z-x)*sin(z_y)

nclude<stdio.h>nclude<math•h>

floatf(float,float,float);

main()

(

floatx,y,z,sum;

printf("vninputx,y,z:\n");

scanf(飞f%f,&x,&y,&z);

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

printf(usum=%f\nM,sum);

}floatf(floata,floatb,floatc)floatvalue:

value=sin(a)(sin(b)*sin(c));return(value);

)

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

***

*欢*❖*欢*

**❖**

***

*

^include(stdio.h>

voida(inti)

(

intj,k;

for(j=0;jU5-i;j++)printf(“"):for(k=0:k<2*i-l;k++)printf(作”);

printf(“\n”);

}mainO

(

inti;for(i=0;i<3;i++)a(i);for(i=3;i>=0;i-)a(i);

)

)

10•以下程序的功能是用递归方法计算五位学生的年龄,请填空。递归公式如下:

106?=1)

age(n)=<

age{n-1)+2仿>1)

-include<stdio.h>

age(intn)

(

intc;

It(n二二])c二10;

elsec=age(n-l)+2;return(c);

}mainO

intn=5;

(三)编程题|(20分)

i.用函数编程打印以下图案。

⑴⑵(3)

gidfl(intn)

for(i=l;i<=n;iw)printfC“):

Ibidf2(intn)

inti;

for(i-l;i<-n;i**>printfC**);

(DnainO(2)iain()⑶main。

inti:inti;inti;

f(i=l;i<=4;i++)

f(i=l:i〈=4:i++):(i=hi<=4siw)

(f2(6):1f2(2*i-l);

printW;)printfCAn*);fl(4-i):

getchO:

primf(W)

Retch();

printf(age:%d\n,f,age⑸);}

2.以下函数p的功能是用递归方法计算x的n阶勒让德多项式的值语已有调用

句p(n,x);请编写p函数。递归公式如下:

16?=0)

P,甲=<A(«=1)

((2n-l)*x*(x)-1(n1)*(x))/n(n>\)

floatp(intn,intx){}

floatp(intn,intx)

if(n~0)return1:

elseif(n二二1)returnx;

else((2*n~D*x*p(n'l,x)-(n'l)*p(广2,x))/n;

)

3.以下程序的功能是用牛顿法求解方程f(x)二cosx-x二0。已有初始值x0二3.

1415/4,要求

绝对误差不超过0.001,函数f用计算迭代公式中心的值,请编写f

函数。牛顿迭代公式是:

即.£+严£-/(©)/广(£)

兀+1=兀一(cos心-xj/(sinXa-1)

^include<stdio.h>

Sinclude<math-h>

#definePI3.1415

floatf(floatxO)

{)

mainO

(

intt=0,k=100,n=0;

floatx0=PI/4,xl;

while(n<k)

(

xl=f(x0);

if(fabs(x0-xl)<0.001){t=l;break;}

温馨提示

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

评论

0/150

提交评论