1. 实验目的
(1)掌握C语言中函数定义、函数调用的方法和规则;
(2)掌握函数实参与形参的对应关系,以及“值传递”的含义;
(3)掌握递归函数的设计方法;
(4)掌握全局变量和局部变量的概念和使用方法。
2. 实验内容
(1)输出Fibonacci数列的前20个数;
(2)用冒泡法对10个数排序;
(3)用选择法实现十个整数的排序;
(4)用递归求阶乘。
3.实验过程
//(1)
#include<iostream>
using namespace std;
int main()
{
int a=1,b=1;
for(int i=1;i<=10;i++)
{
cout<<a<<endl<<b<<endl;
a=a+b;
b=b+a;
}
return 0;
}
//(2)
#include<iostream>
using namespace std;
int main()
{
int x[10],i,j,t;
for(i=0;i<10;i++)
cin>>x[i];
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
if(x[i]<x[i+1])
{
t=x[i];
x[i]=x[i+1];
x[i+1]=t;
}
}
for(i=0;i<10;i++)
cout<<x[i]<<endl;
return 0;
}
//(3)
int x[10],i,j,t,m;
for(i=0;i<10;i++)
cin>>x[i];
for(i=0;i<10;i++)
{
m=i;
for(j=i+1;j<10;j++)
if(x[j]<x[m])
{
m=j;
}
t=x[i];
x[i]=x[m];
x[m]=t;
}
for(i=0;i<10;i++)
cout<<x[i]<<endl;
return 0;
}
//(4)
int main()
{
int fun(int n);
int n,y;
cin>>n;
y=fun(n);
cout<<y;
return 0;
}
int fun(int n)
{
int f;
if(n<0)
cout<<"error";
else if(n==0||n==1)
f=1;
else f=fun(n-1)*n;
return(f);
}
4.实验结果
(1)
(2)
(3)
(4)
5.实验感悟
(1)斐波那契数列指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …这个数列从第三项开始,每一项都等于前两项之和;
(2) 冒泡排序思路:左边大于右边交换一趟排下来最大的在右边;
(3) 选择排序思路:每次从待排序列中选出一个最小值,然后放在序列的起始位置,直到全部待排数据排完即可;
(4) 递归的思想,不断地调用函数自身,五的阶乘可以缩小为5乘以四的阶乘,4可以缩小为4乘以三的阶乘;总而言之,我们是有办法将一个很大的数字的阶乘通过一步步的简化来得到结果的,阶乘的尽头就是,1的阶乘还是1,这时我们就得到一个确切的数了。