实验十一C语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江西理工大学理学院
实验十一函数(2)
班级______________学号___________姓名___________
___________号机器时间:________________________
实验目的:
1. 进一步掌握函数的定义和调用
2. 掌握函数的嵌套调用;
3. 了解函数的递归调用,掌握递归函数的编写规律;
4. 重点掌握数组作函数参数。
5. 掌握含多个源文件的程序的编译、连接和调试运行的方法
实验要求:
每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导老师检查后,上机运行、调试程序,得出最终正确结果。
实验内容:
一. 读程序
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1、 #include
void func1(int i);
void func2(int i);
char st[]="welcome,friend!";
void func1(int i)
{ printf("%c",st[i]);
if(i<3)
{ i+=2;func2(i);
}
}
void func2(int i)
{ printf("%c",st[i]);
if(i<3)
{ i+=2;func1(i);
}
}
void main()
{ int i=0;
func1(i);
printf("\n");
}
2、
#include
long f( int g)
{ switch(g)
{ case 0:return 0;
case 1:
case 2: return 1;
}
return ( f(g-1)+ f(g-2));
}
void main ( )
{ long int k;
k = f(7);
printf("\nk= %d\n",k);
}
3、
#include
int f(int b[ ][4])
{ int i,j,s=0;
for(j=0;j<4;j++)
{ i=j;
if(i>2) i=3-j;
s+=b[i][j];
}
return s;
}
void main( )
{ int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
printf(“%d\n”,f(a) );
}
4、
#include
float fun(int x,int y)
{
return(x+y);
}
void main()
{ i nt a=2,b=6,c=8;
printf(“%3.1 f \n”,fun( (int)fun(a+c , b) , a-c ) ;
}
二.完成程序
要求:根据要求,分析给出的上下语句,填写程序
1、mystrlen函数的功能是计算字符串的长度,并作为函数值返回。请填空,并配写主调函数。
#include
int mystrlen(char str[ ])
{ int i;
for(i=0; ____________!=…\0';i++);
return(_______);
}
void main ( )
{
_______________;
____________________;
_______________________;
}
2、通过函数求f(x)的累加和,其中f(x)=x*x*x+1
#include
int SunFun(int n) ;
int F( int x) ;
void main()
{
printf("The sum=%d\n",SunFun(11));
}
Int SunFun(int n)
{
int x,s=0;
for(x=1;x<=n;x++) s+=F( ____________ );
return s;
}
int F( int x)
{ return (___________);}
三. 调试程序
要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。
1、函数sstrcmp()的功能是对两个字符串进行比较。当s数组中字符串和t数组中字符串
相等时,返回值为0;当s数组中字符串大于t数组中字符串时,返回值大于0;当s 数组中字符串小于t数组中字符串时,返回值小于0(功能等同于库函数strcmp())。
#include
1 int sstrcmp(char s[ ],char t[])
2 { int i=0 , j=0 ;
3 while(s[i]&&t[j]&& s[i]== t[j] ) ;
4 return s[i]-t[j];
5 }
6 void main()
7 { int x;
8 char s1[50],s2[50];
9 scanf("%s%s",s1,s2);
10 x= sstrcmp(s1,s2);
11printf("\n%d\n",x);
}
2、以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第12位学生的年龄。
#include
void main()
1 { int age( int n) ;
2 int n =12;
3 printf (“ Age is %d\n” , age (n);
4 };