字符串逆序
来源:互联网 发布:人脸识别门禁接线端口 编辑:程序博客网 时间:2024/06/16 10:58
//简单的指针偏移的做法#include <stdio.h>#include <stdlib.h>int main(){char temp,*s,*s1,*s2;s1=(char *)malloc(100);printf("输入字符串:");gets(s1);s=s2=s1;while(*s2!='\0')s2++;s2--;while(s1<s2){temp=*s1;*s1=*s2;*s2=temp;s1++;s2--;}printf("逆序字符串:%s\n",s);return 0;}//不申请额外的空间,不用数组,不用C库函数(I/O除外)void reverse_string(char *ch){int i=0;while(*(ch+i)!='\0')//计算字符串长度++i;for(int k=0;k<i/2;k++){/*a=a^b;b=a^b; a=a^b;*/ch[k]=ch[k]^ch[i-k-1];//按位异或ch[i-k-1]=ch[k]^ch[i-k-1];ch[k]=ch[k]^ch[i-k-1];}}//用递归函数实现字符串反转char *reverse_string(char *ch) { if( !ch ) { return NULL;} int len = strlen(ch);//计算指定的字符串的长度, 不包括结束字符\0 if( len > 1 ) { char ctemp =ch[0]; ch[0] = ch[len-1]; ch[len-1] = '\0';// 最后一个字符在下次递归时不再处理 reverse_string(ch+1); // 递归调用,每调用一次,要反转的字符串分别从头和末尾各减少一个 ch[len-1] = ctemp; } return ch; }int main(){char str[100];gets(str);//确保str的空间足够大,以便在执行读操作时不发生溢出//scanf("%s",str);//scanf("%s",str) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,//但gets()函数将接收输入的整个字符串直到遇到换行为止//cin>>str;//如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理reverse_string(str);//printf("%s\n",str);cout<<str<<endl;//puts(str);//自动换行return 0;}
0 0
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串 逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 逆序字符串
- 将Json数据中的“字符串形式”的数组转为数组形式
- L3-007. 天梯地图-PAT团体程序设计天梯赛GPLT
- 3_MongoDB查找
- MyBatis学习(1)--MyBatis入门
- 【模拟】CSU 1807 最长上升子序列~ (2016湖南省第十二届大学生计算机程序设计竞赛)
- 字符串逆序
- 成员变量在结构体中的偏移——offsetof(type, member)
- myeclipse中properties文件会自动转码中文为Unicode码
- 【剑指offer】数组中的逆序对
- mysql 存储过程 LOOP 及 LEAVE、ITERATE
- EasyUi datagrid重新加载数据
- C++基础(4-5章)
- arcgis总结——离线地图服务的发布以及显示
- ListView嵌套GridView