日常刷题篇(入门)

简介: 我从简单到难,一起走上漫漫刷题路!我会持续在我的博客中更新我每天刷题的内容!相互交流!

我从简单到难,一起走上漫漫刷题路!

我会持续在我的博客中更新我每天刷题的内容!

相互交流!

大家一键三连,多多关注!

这是今天我给大家带来的题!以后难度逐渐加深!

1.斐波那契数列(非递归)

非递归实现求第n个斐波那契数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int fbnq(int n)
{
  int a = 1;
  int b = 1;
  int c = 0;
  while (n > 2)
  {
    c = a + b;
    a = b;
    b = c;
    n--;
  }
  return c;
}
int main()
{
  int n = 0;
  scanf_s("%d", &n);
  int ret = fbnq(n);
  printf("%d\n", ret);
  return 0;
}


2.斐波那契数列(递归)

递归实现求第n个斐波那契数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int fbnq(int n)
{
  if (n <= 2)
    return 1;
  else
    return fbnq(n - 1) + fbnq(n - 2);
}
int main()
{
  int n = 0;
  scanf_s("%d", &n);
  int ret = fbnq(n);
  printf("%d\n", ret);
  return 0;
}

3.递归实现n的k次方

编写一个函数实现n的k次方,使用递归实现。


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int power(int n, int k)
{
  if (k <= 0)
    return 1;
  else
    return n * power(n, k - 1);
}
int main()
{
  int n = 0;
  int k = 0;
  scanf("%d%d", &n, &k);
  int ret = power(n, k);
  printf("%d\n", ret);
  return 0;
}

4.计算一个数的每位之和(递归实现)

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int DigitSum(int num)
{
  int g = 0;
  int sum = 0;
  if (num != 0)
  {
  g = num % 10;
  num = num / 10;
  sum = g + DigitSum(num);
  }
  return sum;
}
int main()
{
  int num = 0;
  scanf("%d", &num);
  printf("%d\n", DigitSum(num));
  return 0;
}

5.字符串逆序(递归实现)

编写一个函数 reverse_string(char * string)(递归实现)

实现:将参数字符串中的字符反向排列,不是逆序打印。

要求:不能使用C函数库中的字符串操作函数。

比如:

char arr[] = "abcdef"; 逆序之后数组的内容变成:fedcba

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int my_strlen(char* arr)
{
  int count = 0;
  while (*arr != '\0')
  {
    count++;
    arr++;
  }
  return count;
}
void reverse_string(char* arr)
{
  char* left = arr;
  char* right = arr + my_strlen(arr) - 1;
  char tmp = *left;
  *left = *right;
  *right = '\0';
  if (strlen(arr) > 1)
    reverse_string(arr + 1);
  *right = tmp;
}
int main()
{
  char arr[] = "abcdefg";
  reverse_string(arr);
  printf("%s\n", arr);
  return 0;
}

6.strlen的模拟(递归实现)

递归实现strlen


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int my_strlen1(const char* str) {
  if (*str == '\0')
  return 0;
  else
  return 1 + my_strlen1(str + 1);
}
int main()
{
  char arr[10] = { "lovel" };
  int len = my_strlen1(arr);
  printf("%d", len);
  return 0;
}

7.strlen的模拟(非递归实现)

非递归实现strlen


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int my_strlen1(char* str)
{
  int count = 0;
  while (*str != '\0')
  {
    count++;
    str++;
  }
  return count;
}
int main()
{
  char s[] = "abcdef";
  int len1 = my_strlen1(s);
  printf("%d\n", len1);
  return 0;
}

8.求阶乘

递归实现求n的阶乘(不考虑溢出的问题)

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h" 
int Factorial(int n)
{
  if (n == 1)
    return n;
  else
    return n * Factorial(n - 1);
}
int main()
{
  int n, m;
  scanf("%d", &n);
  printf("%d", Factorial(n));
  return 0;
}


相关文章
|
7月前
|
测试技术
蓝桥杯刷题|02入门真题
蓝桥杯刷题|02入门真题
|
7月前
|
测试技术
蓝桥杯刷题|03入门真题
蓝桥杯刷题|03入门真题
|
7月前
|
测试技术
蓝桥杯刷题|01入门真题
蓝桥杯刷题|01入门真题
|
存储 算法 C语言
日常刷题篇(入门)
我从简单到难,一起走上漫漫刷题路! 我会持续在我的博客中更新我每天刷题的内容! 相互交流!
日常刷题篇(入门)
我从简单到难,一起走上漫漫刷题路! 我会持续在我的博客中更新我每天刷题的内容! 相互交流!
|
C语言 C++
基础刷题篇(入门)
我从简单到难,一起走上漫漫刷题路! 我会持续在我的博客中更新我每天刷题的内容! 相互交流!