c语言程序设计高潮版习题四答案Word下载.docx

上传人:b****5 文档编号:20012732 上传时间:2023-01-15 格式:DOCX 页数:11 大小:17.69KB
下载 相关 举报
c语言程序设计高潮版习题四答案Word下载.docx_第1页
第1页 / 共11页
c语言程序设计高潮版习题四答案Word下载.docx_第2页
第2页 / 共11页
c语言程序设计高潮版习题四答案Word下载.docx_第3页
第3页 / 共11页
c语言程序设计高潮版习题四答案Word下载.docx_第4页
第4页 / 共11页
c语言程序设计高潮版习题四答案Word下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c语言程序设计高潮版习题四答案Word下载.docx

《c语言程序设计高潮版习题四答案Word下载.docx》由会员分享,可在线阅读,更多相关《c语言程序设计高潮版习题四答案Word下载.docx(11页珍藏版)》请在冰豆网上搜索。

c语言程序设计高潮版习题四答案Word下载.docx

(D)函数体

5、以下不正确的说法是___________。

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

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

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

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

6、当一个函数无返回值时,函数的类型应定义为___________。

(A)int

(B)void

(C)无

(D)任意

7、在C语言中函数返回值的类型是___________。

(A)由调用该函数时系统临时决定的

(B)由return语句中的表达式类型决定的

(C)由定义该函数时所指定的函数类型决定的

(D)由调用该函数时的主调函数类型决定的

C

8、下列叙述中,错误的是___________。

(A)一个函数中可以有多条return语句

(B)函数调用执行到return语句即意味着函数调用结束

(C)函数调用必须在一条独立的语句中完成

(D)函数通过return语句返回其函数值

9、在函数中未指定存储类型的变量,其隐含存储类型为__________。

(A)静态(static)

(B)自动(auto)

(C)外部(extern)

(D)存储器(register)

二、填空题

1、一个函数由_____________和_____________两部分组成。

函数首部函数体@函数头函数体

2、函数体一般包括_______语句和______语句。

声明执行@声明语句执行语句

3、C语言程序的执行是从________函数开始,在_________函数中结束。

main()main()@mainmain@main函数main函数@main()函数main()函数

4、一个C语言源程序一般包含有许多函数,其中main()函数是程序执行的入口,所以在整个程序中它必须定义在所有的函数之前。

以上叙述是否正确?

_________

不正确

5、调用其他函数的函数称为________函数,被其他函数调用的函数称为________函数。

主调被调@主调函数被调函数

6、从变量存在的时间(即生存期)角度来分,可以分为______存储方式和______存储方式。

动态静态@静态动态

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

函数中错误部分是__________,改正后为_____________。

voidadd(floata,floatb)

{floatc;

c=a+b;

returnc;

}

voidfloat

8、以下程序的运行结果是_____________________。

voidfun(inti,intj){intx=7;

printf("

#i=%d,j=%d,x=%d"

i,j,x);

intmain()

{

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

fun(j,6);

return0;

}

#i=7,j=6,x=7#i=2,j=7,x=5

9、以下程序中的isLeap()是判断闰年的函数。

请填空。

intyear;

_____________

Pleaseinputyear:

\n"

);

scanf("

%d"

&

year);

if(_______________)printf("

%disaleapyear.\n"

year);

elseprintf("

%disnotaleapyear.\n"

______isLeap(intyear)

{return(year%4==0&

&

year%100!

=0||year%400==0);

 

intisLeap(int);

isLeap(year)int@intisLeap(intyear);

isLeap(year)int

10、已有函数pow():

doublepow(intx,inty)

{inti,j=1;

for(i=1;

i<

=y;

++i)j=j*x;

return(j);

现要求取消变量i后pow函数的功能不变,请填空。

{intj;

for(__________;

__________;

__________)

j=j*x;

j=1;

y>

=1;

y--@j=1;

0;

--y@j=1;

--y

11、[程序]

voidmyswap(inta,intb)

intt;

if(a>

b)t=a,a=b,b=t;

intmain()

{intx=15,y=12,z=20;

if(x>

y)myswap(x,y);

z)myswap(x,z);

if(y>

z)myswap(y,z);

%d,%d,%d"

x,y,z);

//程序的输出为_________________

15,12,20

12、以下程序的运行结果是_________。

intfunc(inta,intb)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

{intk=4,m=1,p;

p=func(k,m);

p);

817

三、程序操作题

1、请打开考生文件夹中的文件Ex0409_1.c,按照例4-9的第一种方法(递推法),上机调试程序。

参考代码:

————考生程序代码————

#include<

stdio.h>

//递推法求解Fibonacii数列

voidnumber_fibonacci(intn)

{intn;

需输出的Fibonacci数列的项数:

"

&

n);

number_fibonacci(n);

————标准程序代码————

longf,f1=1,f2=1;

//f1和f2分别代表数列顺数的第1项和第2项

inti;

%12d%12d\n"

f1,f2);

//每次输出2个数,每个数占用12个字符输出宽度

for(i=3;

=n;

i++)

{

f=f1+f2;

//利用已有的第1项和第2项求当前的新项

f1=f2;

//当前的第2项将是下一次求解用的第1项

f2=f;

//当前得到的新项将是下一次求解用的第2项

%12d"

f);

if(i%2==0)printf("

//每输出2项后换行

2、请打开考生文件夹中的文件Ex0409_2.c,按照例4-9的第二种方法(递归法),上机调试程序。

//递归法求解Fibonacii数列

longfibonacci(intn)

intm,n,i;

需输出的Fibonacci数列项数的范围(m~n):

%d%d"

m,&

longf;

if(n<

=0)f=0;

//条件使用n<

=0而不仅仅是n==0,可以包容错误的参数传递

elseif(n==1)f=1;

elsef=fibonacci(n-1)+fibonacci(n-2);

returnf;

for(i=m;

fibonacci(i));

//每个输出项占用12个字符输出宽度

//每输出2项后换行

3、请打开考生文件夹中的文件E0502.c,参照例3-17和例4-13,写一个求素数的函数,然后在main()函数中调用该函数输出200~300间的全部素数。

math.h>

//判断素数

intisPrime(intn)

intmain()

intn;

for(_________)

if(________)printf("

%d"

n);

//输出素数

intprime=1;

//先假设n为素数

inti,k;

k=(int)sqrt(n);

for(i=2;

=k;

if(n%i==0){prime=0;

break;

returnprime;

for(n=201;

n<

300;

n+=2)//偶数肯定不是素数

if(isPrime(n))printf("

4、请打开考生文件夹中的文件E0503.c,完成"

习题4"

编程题的第5题:

编写一个反转函数reverse(),…,例如将-123转换成-321。

intmain()

输入一个整数:

反转后的整数:

%d\n"

reverse(n));

intreverse(intn);

//函数声明

intreverse(intn)

intsign=1,m;

//sign为符号位标志

0)sign=-1;

n=(n>

=0?

n:

-n);

//取n的绝对值

m=n%10;

//取出n的个位数;

while(n>

=10)

n=n/10;

//n的小数点左移一位

m=m*10+n%10;

//m的小数点右移一位,并加上当前n的个位数

returnsign*m;

==END==

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

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1