一、Fibonacci数列
问题:计算Fibonacci(斐波那契)数列
解析:Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21…,即每一项都是前两项之和;可以用递归或循环的方法来实现。
代码示例:
#include <stdio.h>
//递归方法
int fib(int n) {
if (n == 0 || n == 1) {
return n;
}
return fib(n - 1) + fib(n - 2);
}
//循环方法
int fib2(int n) {
int a = 0, b = 1, c;
if (n == 0 || n == 1) {
return n;
}
for (int i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
int main()
{
int n;
printf("Enter number of terms: ");
scanf("%d", &n);
printf("Fibonacci Series: ");
for (int i = 0; i < n; i++) {
printf("%d+", fib(i));
}
printf("\n");
return 0 ;
}
二、回文字符串
问题:判断一个字符串是否是回文串
解析:回文串是指正读和反读都一样的字符串,比如"madam"或"racecar";可以用双指针的方法来判断一个字符串是否是回文串,即从两端向中间遍历,比较每一对字符是否相等。
代码示例:
#include <stdio.h>
#include <string.h>
//判断一个字符串是否是回文串
int is_palindrome(char *s) {
int len = strlen(s);
int left = 0, right = len - 1;
while (left < right) {
if (s[left] != s[right]) {
return 0; //不是回文串
}
left++;
right--;
}
return 1; //是回文串
}
int main()
{
char s[100];
printf("Enter a string: ");
scanf("%s", s);
if (is_palindrome(s)) {
printf("'%s' is a palindrome.\n", s);
} else {
printf("'%s' is not a palindrome.\n", s);
}
return 0 ;
}
三、二分查找
问题: