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

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

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

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

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

c语言程序设计高潮版习题四答案

习题四

一、选择题

1、一个C语言源程序至少包含一个且只能包含一个_______函数。

(A)MAIN()

(B)main()

(C)open()

(D)close()

答案:

B

2、一个C语言源程序一般包含有许多函数,其中main()函数的位置_______。

(A)必须在最开始

(B)必须在最后

(C)既可以在最开始也可以在最后

(D)可以任意

答案:

D

3、对于C语言程序的函数,下列叙述中正确的是_________。

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

(B)函数的定义和调用均不能嵌套

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

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

答案:

A

4、函数声明中不包括下面哪一项?

_______。

(A)函数类型

(B)函数名

(C)函数参数的类型和参数名

(D)函数体

答案:

D

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

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

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

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

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

答案:

D

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

(A)int

(B)void

(C)无

(D)任意

答案:

B

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

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

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

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

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

答案:

C

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

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

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

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

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

答案:

C

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

(A)静态(static)

(B)自动(auto)

(C)外部(extern)

(D)存储器(register)

答案:

B

二、填空题

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);

printf("#i=%d,j=%d,x=%d",i,j,x);

return0;

}

答案:

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

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

请填空。

intmain()

{

intyear;

_____________

printf("Pleaseinputyear:

\n");

scanf("%d",&year);

if(_______________)printf("%disaleapyear.\n",year);

elseprintf("%disnotaleapyear.\n",year);

return0;

}

______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函数的功能不变,请填空。

doublepow(intx,inty)

{intj;

for(__________;__________;__________)

j=j*x;

return(j);

}

答案:

j=1;y>=1;y--@j=1;y>0;y--@j=1;y>=1;--y@j=1;y>0;--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);

if(x>z)myswap(x,z);

if(y>z)myswap(y,z);

printf("%d,%d,%d",x,y,z);//程序的输出为_________________

return0;

}

答案:

15,12,20

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

intfunc(inta,intb)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

intmain()

{intk=4,m=1,p;

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

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

return0;

}

答案:

817

三、程序操作题

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

参考代码:

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

#include

//递推法求解Fibonacii数列

voidnumber_fibonacci(intn)

{

}

intmain()

{intn;

printf("需输出的Fibonacci数列的项数:

");

scanf("%d",&n);

number_fibonacci(n);

return0;

}

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

#include

//递推法求解Fibonacii数列

voidnumber_fibonacci(intn)

{

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

inti;

printf("%12d%12d\n",f1,f2);//每次输出2个数,每个数占用12个字符输出宽度

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

{

f=f1+f2;//利用已有的第1项和第2项求当前的新项

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

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

printf("%12d",f);

if(i%2==0)printf("\n");//每输出2项后换行

}

}

intmain()

{intn;

printf("需输出的Fibonacci数列的项数:

");

scanf("%d",&n);

number_fibonacci(n);

return0;

}

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

参考代码:

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

#include

//递归法求解Fibonacii数列

longfibonacci(intn)

{

}

intmain()

{

intm,n,i;

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

");

scanf("%d%d",&m,&n);

 

return0;

}

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

#include

//递归法求解Fibonacii数列

longfibonacci(intn)

{

longf;

if(n<=0)f=0;//条件使用n<=0而不仅仅是n==0,可以包容错误的参数传递

elseif(n==1)f=1;

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

returnf;

}

intmain()

{

intm,n,i;

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

");

scanf("%d%d",&m,&n);

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

{

printf("%12d",fibonacci(i));//每个输出项占用12个字符输出宽度

if(i%2==0)printf("\n");//每输出2项后换行

}

return0;

}

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

参考代码:

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

#include

#include

//判断素数

intisPrime(intn)

{

}

intmain()

{

intn;

for(_________)

if(________)printf("%d",n);//输出素数

printf("\n");

return0;

}

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

#include

#include

//判断素数

intisPrime(intn)

{

intprime=1;//先假设n为素数

inti,k;

k=(int)sqrt(n);

for(i=2;i<=k;i++)

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

returnprime;

}

intmain()

{

intn;

for(n=201;n<300;n+=2)//偶数肯定不是素数

if(isPrime(n))printf("%d",n);

printf("\n");

return0;

}

4、请打开考生文件夹中的文件E0503.c,完成"习题4"编程题的第5题:

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

参考代码:

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

#include

intmain()

{

intn;

printf("输入一个整数:

");

scanf("%d",&n);

printf("反转后的整数:

%d\n",reverse(n));

return0;

}

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

#include

intmain()

{

intreverse(intn);//函数声明

intn;

printf("输入一个整数:

");

scanf("%d",&n);

printf("反转后的整数:

%d\n",reverse(n));

return0;

}

intreverse(intn)

{

intsign=1,m;//sign为符号位标志

if(n<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