实验十 函数(1)
班级______________姓名___________指导老师_____________成绩___________
第_____________机房___________号机器 时间:________________________
实验目的:1,学会函数的定义和调用方法。
2,掌握形参和实参的使用和传值调用。
3,了解函数声明的使用。
实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导老师检查后,上机运行、调试程序,得出最终正确结果。
实 验 内 容
一、读程序
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1,
#include <stdio.h>
fun (int x,int y,int z)
{
z=x * x + y * y;
return(z);
}
main()
{
int a=31;
fun(5,2,a);
printf(“%d”,a);
}
分析结果
运行结果
2,
# include <stdio.h>
int func(int a,int b)
{ return(a+b);
}
第一部分 C语言程序设计上机指导
·53·
·53·
main ( )
{
int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
分析结果
运行结果
3,
# include <stdio.h>
float fun(int x,int y)
{
return(x+y);
}
main()
{ int a=2,b=5,c=8;
printf(“%3.1 f \n”,fun( (int)fun(a+c,b),a-c ) ;
}
分析结果
运行结果
4,
# include <stdio.h>
fun (int x,int y );
main()
{
int x=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
fun (int x,int y )
{
x=x+y;
y=x-y;
x=x-y;
printf(“%d,%d,”,x,y);
}
分析结果
运行结果
C语言程序设计上机指导与同步训练
·54·
·54·
5,
# include <stdio.h>
void f(int x,int y)
{ int t;
if(x<y)
{ t=x; x=y; y=t; }
}
main()
{ int a=4,b=3,c=5;
f(a,b);
f(a,c);
f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
6,
#include <stdio.h>
int f (int a) ;
main()
{ int s[ 8 ] = {1,3,5,2,4,6},i,d=0;
for (i=0; f( s[i] ) ; i++)
d+=s[i];
printf("%d\n",d);
}
int f(int a)
{
return a%2;
}
二、完成程序
要求:根据要求,分析给出的上下语句,填写程序。
1,请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
#include <stdio.h>___________________________
main()
{ double x,y;
scanf("%1f%1f",&x,&y);
printf("%1f\n",max(x,y));
}
double max(double a,double b)
{ return (a>b? a:b) ;
}
2,以下函数的功能是求x的y次方,请填空,并写出主调函数。
#include <stdio.h>
double fun( double x,int y)
{ int i;
double z;
for(i=1,z=x; i<y;i++) z=z* ______________;
第一部分 C语言程序设计上机指导
·55·
·55·
return z;
}
main( )
{
}
3,以下函数的功能是计算s=1+
1
2!
+
1
3!
+…+
1
!n
,请填空。
# include <stdio.h>
double fun(int n)
{
double s=0.0,fac=1.0;
int i;
for(i=1,i<=n;i++)
{
fac=fac ______________ ;
s = s + fac;
}
return s;
}
4,以下程序的功能是调用函数fun计算m=1-2+3-4+…+9-10,并输出结果。请填空。
#include <stdio.h>
int fun(int n) ;
main()
{
printf("m=%d\n",_______________ );
}
int fun(int n)
{ int n=0,f=1,i;
for (i=1; i<=n; i++)
{
i +=i * f;
f = ____________ ;
}
return m;
}
三、调试程序
要求:分析下列程序是否正确,如有错,错在哪里?应如何改正?如正确,运行结果如何?上机调试之。
1,
void f (float n);
main( )
{
float x = 5.2 ;
f ( x );
}
void f( n)
C语言程序设计上机指导与同步训练
·56·
·56·
{ printf("%f\n",n);
}
运行结果,
正确
错误所在,
错误
应改为,
2,
main()
{
int x,y ; int z ;
scanf(“%d,%d,,&x,&y );
Max ( x,y ) ;
printf (,max is % d \n,,z ) ;
}
Max ( int a,int b)
{ int c ;
c = ( a > b )? a,b ;
return ( c ) ;
}
运行结果,
正确
错误所在,
错误
应改为,
3,
func ( float a,float b )
main()
{ float x,y ;
float z ;
scanf(“%f,% f”,&x,&y);
z = func ( x,y ) ;
printf (,z = % f \n”,z ) ;
}
func ( float a,float b )
{ float c ;
c = a * a + b * b ;
return c ;
}
运行结果,
正确
错误所在,
错误
应改为,
第一部分 C语言程序设计上机指导
·57·
·57·
4,
float add ( a,b,c );
main()
{ float x,y,z ;
float w ;
scanf(“%f,% f,% f”,&x,&y,&z);
w = add ( x,y,z ) ;
printf (,w = % f \n”,w ) ;
}
float add(float a,float b,float c )
{ float d ;
d = a * b * c ;
return ( d ) ;
}
运行结果,
正确
错误所在,
错误
应改为,
四、写程序
1,编写一个函数,选出能被3整除且至少一位上数字是5的两位数,用主函数调用这个函数,并输出所有这样的两位数。
2,编写一个函数,计算某日是该年的第几天? 在主函数中输入要计算的该日的年、
月、日,在主函数中输出该日是该年的第几天?