编写一个函数不使用C函数库中的字符串操作函数,递归实现参数字符串中的字符反向排列。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int StringLength(char* str){
if (*str == '\0'){
return 0;
}
return 1 + StringLength(str+1);
}
void ReverseString(char* str){
int len = StringLength(str);
//第一个字符与最后一个字符交换
//交换后,令最后一个字符为'/0',递归调用,再将最后一个字符附上第一个字符
if (*str != 0){
char tmp;
tmp = str[0];
str[0] = str[len - 1];
str[len - 1] = '\0';
ReverseString(str + 1);
str[len - 1] = tmp;
}
}
int main(){
char arr[1024] = { 0 };
printf("请输入字符串:\n");
scanf("%s", &arr);
ReverseString(arr);
printf("字符串中的字符反向排列为:\n%s\n", arr);
system("pause");
return 0;
}
运行结果: