三种方法实现字符串逆序函数题目如下示例写一段代码实现字符串的逆序打印例如输入abcdef 输出:fedcba一、第一种方法非函数代码如下示例12345678910111213141516171819//对一个字符串进行逆序intmain(){chararr[1000] { 0 };gets(arr);intlen 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);return0;}二、第二种方法函数非递归1.函数的方法代码如下示例12345678910111213141516171819202122//写一个函数非递归实现逆序字符串voidseverse_string(char* str){intlen strlen(str);char* left str;char* right str len - 1;while(left right){chartmp *left;*left *right;*right tmp;left;right--;}}intmain(){chararr[] abcdef;severse_string(arr);printf(%s\n, arr);return0;}函数和main函数原理一样这里不做过多的介绍2.函数数组的方法代码如下示例12345678910111213141516171819202122//用数组函数的方法非递归实现字符串的逆序打印voidseverse_string(chararr[]){intlen strlen(arr);intleft 0;intright len - 1;while(left right){chartmp arr[left];arr[left] arr[right];arr[right] tmp;left;right--;}}intmain(){chararr[] abcdef;severse_string(arr);printf(%s\n, arr);return0;}三、第三种方法函数递归代码如下示例123456789101112131415161718192021//用递归的函数的方法实现对字符串的逆序打印voidreverse_string(char* str){intlen strlen(str);chartmp *str;*str *(str len - 1);*(str len - 1) \0;if((strlen(str 1)) 2){reverse_string(str 1);}*(str len - 1) tmp;}intmain(){chararr[] abcdef;reverse_string(arr);printf(%s\n, arr);return0;}注意这里的 tmp 和 len 的值可以通过调试来观察变化如下图这里是函数在一步一步调用接下来是递归返回的阶段~第一次返回第二次返回第三次返回此时已经对数组全部进行逆序打印四、面试题对一个数组进行两次逆序打印题目如下示例1.代码实现代码如下示例12345678910111213141516171819202122232425262728293031323334353637383940voidreverse_string(char* l,char* r){while(l r){chartmp *l;*l *r;*r tmp;l;r--;}}intmain(){chararr[100] { 0 };//输入数组gets(arr);//计算数组的大小intlen 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);return0;}2.图解面试题第一步整体逆序字符串循环第二步对单个单词进行逆序1.将第一个字符串逆序2.将第二个字符串逆序总结以上就是今天要讲的内容本文介绍了字符串逆序函数的实现原理和相关的面试题