38人参与 • 2026-04-09 • C/C++
题目如下(示例):
写一段代码实现字符串的逆序打印
例如:
输入:abcdef 输出:fedcba
代码如下(示例):
//对一个字符串进行逆序
int main()
{
char arr[1000] = { 0 };
gets(arr);
int len = strlen(arr);
char* left = arr;
char* right = arr + len - 1;
while (left < right)
{
char* tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
printf("%s\n", arr);
return 0;
}


代码如下(示例):
//写一个函数(非递归)实现逆序字符串
void severse_string(char* str)
{
int len = strlen(str);
char* left = str;
char* right = str + len - 1;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
severse_string(arr);
printf("%s\n", arr);
return 0;
}

函数和main函数原理一样!这里不做过多的介绍!
代码如下(示例):
//用数组函数的方法(非递归)实现字符串的逆序打印
void severse_string(char arr[])
{
int len = strlen(arr);
int left = 0;
int right = len - 1;
while (left < right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
severse_string(arr);
printf("%s\n", arr);
return 0;
}

代码如下(示例):
//用递归的(函数)的方法实现对字符串的逆序打印
void reverse_string(char* str)
{
int len = strlen(str);
char tmp = *str;
*str = *(str + len - 1);
*(str + len - 1) = '\0';
if ((strlen(str + 1)) >= 2)
{
reverse_string(str + 1);
}
*(str + len - 1) = tmp;
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
注意:
这里的 tmp 和 len 的值可以通过调试来观察变化!如下图!




这里是函数在一步一步调用,接下来是递归返回的阶段~
第一次返回:

第二次返回:

第三次返回:

此时已经对数组全部进行逆序打印!
题目如下(示例):

代码如下(示例):
void reverse_string(char* l, char* r)
{
while (l < r)
{
char tmp = *l;
*l = *r;
*r = tmp;
l++;
r--;
}
}
int main()
{
char arr[100] = { 0 };
//输入数组
gets(arr);
//计算数组的大小
int len = strlen(arr);
char* left = arr;
char* right = left + len - 1;
reverse_string(left, right);
//对单词进行逆序
char* start = arr;
char* cur = arr;
while (*cur!='\0')
{
while (*cur != ' ' && *cur!='\0')
{
cur++;
}
reverse_string(start, cur - 1);
start = cur + 1;
if (*cur != '\0')
{
cur++;//cui原来是空格
}
}
printf("%s\n", arr);
return 0;
}

第一步:整体逆序字符串!

循环:第二步:对单个单词进行逆序!!!
1.将第一个字符串逆序

2.将第二个字符串逆序

以上就是今天要讲的内容,本文介绍了字符串逆序函数的实现原理和相关的面试题。
这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论