题目:编写程序,分行输出斐波那契Fibonacci数列的前20项(每行5个数) 说明:斐波那契数列:1,1,2,3,5,8,13,21...
观察得后一个数等于前两个数之和
//方法1:循环
#include<stdio.h>
int main()
{
int i,a,count,sum;//定义4个整型变量
i=1;
a=1;
printf("%d\t%d\t",i,a);//输出第一个,第二个数
for(count=3;count<=20;count++)//控制输出个数
{
sum=i+a;//后一个数等于前两个数之和
printf("%d\t",sum);
a=i;
i=sum;
if(count%5==0)//判断一行是否达到5个数 ,达到则换行
{
printf("\n");
}
}
return 0;
}
1.\t \n \r \f均是转义字符。
2.\t:水平制表符,将当前位置移到下一个tab位。我们经常用\t来控制对齐,使输出结果更加美观。
//方法2:数组法
#include<stdio.h>
int main()
{
int i,f[20]={1,1};//i控制输出的项数,也是数组中元素的下标
printf("%d\t%d\t",f[0],f[1]);//访问第一个元素的下标为0
for(i=2;i<20;i++)
{
f[i]=f[i-2]+f[i-1];//后一个数等于前两个数之和
if(i%5==0)//判断一行是否输出了五个数,是则换行
{
printf("\n");
}
printf("%d\t",f[i]);
}
return 0;
}
1.访问数组中第一个元素的下标是0,不是1.
2.常使用循环来访问数组。
//方法3:函数法
#include<stdio.h>
int fibo(int n); //函数声明,告诉编译器程序中会用到这个函数,先不要着急报错
int main()
{
int i;
for(i=1;i<=20;i++)
{
printf("%d\t",fibo(i));//调用fibo()函数,i为实参
if(i%5==0)
{
printf("\n");
}
}
return 0;
}
int fibo(int n)//斐波那契数列的第n项 (自定义函数,n为形式参数)
{
if(n==1||n==2)
{
return 1;//返回1
}
else
{
return fibo(n-2)+fibo(n-1);//利用递归 ,返回前两数之和
}
}
1.形参(形式参数):在函数定义中出现的参数,它没有数据,只能等到函数被调用的时候接收传递进来的数据。
2.实参(实际参数):函数被调用时给出的参数,包含实实在在的数据,会被函数内部的代码使用。
3.实参和形参在数量上、类型上、顺序上必须一致,否则会发生“类型不匹配”的错误。如果能够进行自动类型转换,或者进行强制类型转换,那么实参类型也可以不同于形参类型。
4.函数调用中发生的数据传递是单向的,只是把实参的值传递给形参(单向值传递)。
5.函数调用过程中,形参的值发生改变并不会影响实参。