用不同的方法实现字符串的逆序输出(C语言实现)

来源:互联网 发布:周琦数据历史数据 编辑:程序博客网 时间:2024/06/05 15:44

用不同的方法实现字符串的逆序输出(C语言实现)

今天去面试遇到面试题如下:

请将字符串"123456",逆序输出?

当时我使用是指针,我后来想到的其他实现方法。

实现如下:

#include <stdio.h>#include <string.h>///////////////////////////用指针实现字符串的逆序 char* reverse_pointer(char* str){char* head = str;char* end = str;char* temp = str;//保存str的地址 char ch;printf("head:%p\n", head);//将end指针指向string的结束符'\0' while( *end != '\0' ){end++;}printf("end:%p\n", end);//将end指针指向string结束符的前一个位置 end = end -1;printf("end2:%p\n", end);//当head指针的地址 < end指针的地址时//就交换head,end所指向的内容 while(head < end){ch = *end;*end = *head;*head = ch;head++;//head指针走向下一个 end--; //end指针走向上一个 }return temp;}///////////////////////////字符串逆序输出的递归算法//方法1void reverse_print(char *str){if (*str == '\0') return;reverse_print(str+1);printf("%c", *str);}//方法2void reverse_print2(char *str){for(int i=strlen(str); i>0; i--){printf("%c", *(str+i-1) );}}/////////////////////////// 数组方法实现// 函数参数要为数组 void reverse_array(char str[]){char ch;int len = strlen(str);// (len/2)找到字符串的中点,交换以中点对称的数组元素 for(int i=0; i<(len/2); i++){ch = str[i];str[i] = str[len-1-i];//字符串首位对应位置交换str[len-1-i] = ch; }}/////////////////////// int main(){char str[] = "123456";printf("reverse before:%s\n", str);//reverse_print(str);//reverse_print2(str);//reverse_array(str);//char *str2 = reverse_pointer(str);//printf("reverse after:%s\n", str2);return 0;}

以上方法仅供参考!

文明看帖,谢谢勿喷

有更好的方法欢迎交流!


0 0
原创粉丝点击