c语言递归实现字符串反转

用怎样的流程图模式才能更好实现c语言递归反转字符串如Student反转成tnedutS

以下为详细解答,望采纳


字符串的反转,使用以下流程图模式:

  • 首先,将字符串的第一个字符保存在一个变量中。
  • 然后,将剩下的字符串递归地传递到函数中。
  • 在递归调用返回时,将保存的字符添加到递归调用返回的字符串的末尾。
  • 返回反转后的字符串。

代码实现如下

#include <stdio.h>
#include <string.h>

char *reverse_string(char *str) {
  if (strlen(str) == 0) {
    return str;
  }

  char first_char = str[0];
  char *substring = str + 1;

  char *reversed_substring = reverse_string(substring);

  char *reversed_string = malloc(strlen(str) + 1);
  sprintf(reversed_string, "%s%c", reversed_substring, first_char);

  free(reversed_substring);

  return reversed_string;
}

int main(int argc, char **argv) {
  if (argc != 2) {
    printf("Usage: %s <string>\n", argv[0]);
    return 1;
  }

  char *reversed_string = reverse_string(argv[1]);
  printf("%s\n", reversed_string);

  free(reversed_string);

  return 0;
}