第7章函数习题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7-4 仔细阅读下例程序,给出程序的运行结果。(1) main()
{
void fun1(),fun2() ; /*应该增加的函数声明语句*/
fun1() ;
printf(" ") ;
fun2();
}
void fun1()
{
printf("COMPAQ") ;
}
void fun2()
{
printf("COMPUTER") ;
}
(2) main()
{
void fun() ;/*应该增加的函数声明语句*/
int i ;
for(i=1;i<=10;i++)
fun();
}
void fun()
{
static int a=100;
int b=1 ;
++b ;
printf("%d+%d=%d\n",a,b,a+b);
a+=1 ;
}
(3)static int a=10;
main()
{
int a=100;
void fun1() ,fun() ;/*应该增加的函数声明语句*/
fun1();
fun2();
printf("a=%d\n",a);
}
void fun1()
{
a-=a/2;
printf("a=%d\n",a);
}
void fun2()
{
int a=100;
a*=a;
printf("a=%d\n",a);
}
(4)main()
{
int add(int,int); /*应该增加的函数声明语句*/
extern int x,y ;
printf("%d",add(x,y));
}
int x=20,y=5;
add(int a,int b)
{
int s ;
s=a+b;
return(s) ;
}
(5)void f(int n)
{
int x=5;
static int y=10;
if(n>0)
{
++x ;
++y;
printf("x=%d,y=%d",x,y) ;
}
}
main()
{
int m=1;
f(m) ;
}
答:(1)由于fun1()函数定义在main()函数的调用后面,故在main()中应该增加函数声明函数的语句“void fun1(),fun2();”。
运行结果:COMPAQ COMPUTER
(2)同(1),在main()中应该增加函数声明语句。
运行结果:100+2=102
101+2=103
102+2=104
103+2=105
104+2=106
105+2=107
106+2=108
107+2=109
108+2=110
109+2=111
(3) 同(1),在mai()中应该增加函数声明语句。
运行结果: a=5
a=10000
a=100
(4)同(1),在main()中应该增加函数声明语句。
运行结果:25
(5)运行结果:x=6 ,y=11
思考:将一些重复的计算方法通过函数进行处理的好处是什么?它体现了结构化程序设计的什么思想?
7-5 定义一个函数,求x n。
解float fun(float x, int n)
{
int i ;
float y=1;
for(i=1;i<=n;i++)
y*=x ;
return(y);
}
思考:此函数的返回类型是什么?形参类型有几种?形参个数有几个?
7-6 定义一个函数,求两个数的平均值。
解:float fun(float x1, float x2)
{float s;
s=(x1+x2)/2;
return(s);
}
思考:此函数的返回类型是什么?形参类型有几种?形参个数有几个?
7-7 定义一个函数,输出九九乘法表。
解:void fun()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%-3d",j,i,i*j);
printf("\n") ;
}
}
思考:此函数定义时的 void表示什么?无参函数的特点是什么?
7-9 编写程序,求100个实数的和及平均值,要求用函数完成。解:#include "stdio.h"
void main()
{
float fun_sum(int),fun_aver(float,int);
float sum,average ;
int n ;
printf("请输入实数的个数(<=100):");
scanf("%d",&n);
sum=fun_sum(n);
average=fun_aver(sum,n);
printf("sum=%f,average=%f\n",sum,average);
}
float fun_sum(int n)
{
int i ;
float x,s=0;
printf("请输入%d个实数:\n",n);
for(i=1;i<=n;i++)
{
scanf("%f",&x);