C语言每日一题——倒转字符

简介: C语言每日一题——倒转字符

今天分享一道题目

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

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

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

char arr[]="abcdef";

将上面的代码变成fedcba

我们首先用非递归的方法试一试

思路

size_t my_strlen(char* str)
{
  if ('\0' == *str)
    return 0;
  else
    return 1 + my_strlen(1 + str);
}
void reverse_string(char s[])
{
  size_t len = my_strlen(s);
  size_t left = 0;
  size_t right = len - 1;
  while (left<right)
  {
    char tmp = s[left];
    s[left] = s[right];
    s[right] = tmp;
    left++;
    right--;
  }
}
int main()
{
  char arr[] = "abcdef";
  reverse_string(arr);
  printf("%s", arr);
  return 0;
}

上面就是用我们普通的方法,现在我们用递归的方式写下我们的代码

size_t my_strlen(char* str)
{
  if ('\0' == *str)
    return 0;
  else
    return 1 + my_strlen(1 + str);
}
void reverse_string(char* arr)
{
  size_t len = my_strlen(arr);
  char tmp = arr[0];
  arr[0] = arr[len - 1];
  arr[len - 1] = '\0';
  if (my_strlen(arr) >= 2)
    reverse_string(arr + 1);
  arr[len - 1] = tmp;
}
int main()
{
  char arr[] = "abcdef";
  reverse_string(arr);
  printf("%s", arr);
  return 0;
}

这就是我们的今天的每日一题,主要是分享递归的思路


相关文章
|
1月前
|
C语言
C语言字符(串)函数
C语言字符(串)函数
|
1月前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
2月前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]=&quot;hello&quot;`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
|
1月前
|
C语言
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。
|
3月前
|
编译器 C语言
【C语言小知识】ctype.h系列的字符函数
【C语言小知识】ctype.h系列的字符函数
|
3月前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
63 0
|
3月前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
56 0
|
4月前
|
存储 缓存 C语言
【C语言】字符函数,字符串函数,内存函数
C语言中的字符串函数和内存函数
58 0
【C语言】字符函数,字符串函数,内存函数
|
4月前
|
C语言
C语言5 字符输出函数和格式输出函数
C语言5 字符输出函数和格式输出函数
92 1