熟练运用c语言
学习内容:(牛客c语言入门题)
- 斐波那契数列
- 反转字符串
- 判断是否为回文字符串
- 最大公约数
学习时间:
7月3日早10点——11点
学习产出:
1、斐波那契数列题目:大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
示例:
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
关于斐波那契数列,我们可以发现它前两个数都是1,即可通过if判断前两个数,后面的数依次是前面的数相加,及2=1+1,3=1+2,5=2+3;
第一种解法:通过性质的加减;
int Fibonacci(int n ) { int a=1,b=1;//a为前一个数,b为后一个数 if(n<=2) {return 1;} else { for(int i=3;i<=n;i++) { int t=b; b=a+b; a=t; } } return b; }第二种解法:通过规律进行递归(F(n)=F(n - 1)+F(n - 2))
int Fibonacci(int n ) { if(n<=2) return 1; else return Fibonacci(n-1)+Fibonacci(n-2); }
2、反转字符串写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。
示例:
代码:
char* solve(char* str ) { int a=strlen(str)-1; int b=0; while(b解释:首先定义a通过strlen函数获取str字符串长度,因为从0开始计算,a=字符串长度-1,b从0开始,while判断当a
3、判断是否为回文字符串给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。
示例:
代码:
bool judge(char* str ) { int a=strlen(str)-1; int b=0; while(b解释:首先定义a通过strlen函数获取str字符串长度,因为从0开始计算,a=字符串长度-1,b从0开始,通过循环判断b
4、最大公约数如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。
示例·:
代码:
int gcd(int a, int b ) { if(b%a==0) {return a;} else {return gcd(b%a,a);} }解释:本题默认b为较大的数,如果b对a取余为0的话,证明b刚好被a整除,则相对于小的a则是最大公约数,如果没有刚好整除,则通过递归调用这个取余的数,直到刚好整除再一级一级向上返回,输出最大公约数



