三种字符串逆序
来源:互联网 发布:手机闪光灯软件下载 编辑:程序博客网 时间:2024/06/17 21:44
第一种添加一个字符数组:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i; int n; char *q = "I am a coder"; n = strlen(q); char buffer[n+1];//多一个位置放'\0' printf("The string is:%s\n",q); for( i = 0;i < n;i++) { buffer[n-1-i]=*q++; } buffer[n]='\0'; printf("The ending string is:%s\n",buffer); return 0; }
注意q是指向字符常量的指针,他指向的内容不能变,但是他自己可以变,所以能自加。
第二种是两个指针:
#include <stdio.h> #include <stdlib.h> #include <string.h> char *change(char *s){ char *m = s; char *n = s; while(*(n+1)) n++; //将n指向字符串的最后一个字符。 while(m<n) { char t = *m; *m++ = *n; *n-- = t; } return s;}int main() { char q[] = "I am a coder"; //不能用指针申明为字符串常量。 q = change(q); printf("The ending string is:%s\n",q); return 0; }
这里我真是执掌,把数组q用来接收函数返回的字符串,但是数组名是一个指针常量,是不能更改的,所以不能这样用,必须得重新申明一个指针来接收这个字符串。
char *str = change(q);
第三种是不用临时变量来交换他们,我知道的就只能用抑或了:
#include <stdio.h> #include <stdlib.h> #include <string.h> char *change(char *s){ char *m = s; char *n = s; while(*(n+1)) n++; //将n指向字符串的最后一个字符。 while(m<n) { *m = *m ^ *n; *n = *m ^ *n; *m = *m++ ^ *n--; } retrun s;}int main() { char q[] = "I am a coder"; //不能用指针申明为字符串常量。 char *str = change(q); printf("The ending string is:%s\n",str); return 0; }
感觉还是有点神奇的,这主要是抑或运算的性质来的:
1> 一个数抑或它本身结果是0。
2> 一个数抑或0结果是它本身。
然后根据这个性质就可以推算出来,我们要得到的无非是 a = b ;b = a ;
a = a ^ b ;
b = a ^ b; (这里的a 是上面变了的 a,代入 b = (a ^ b) ^ b; 展开 b = a ^ (b ^ b) ===> b = a ^ 0 ===> b = a ; )
a = a ^ b; ( 这里的a 和 b 都是上面变了的 a 和 b ,代入 a = (a ^ b) ^ a ===> a = b; )
交换完成。
阅读全文
0 0
- 三种字符串逆序
- 三种字符串逆序的方法
- 第十五周项目三字符串逆序输出
- 两种字符串逆序方式
- 通过字符串逆序学习二级指针的三种内存模型 #################################################### #########################
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串 逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- 字符串逆序
- bzoj 4032: [HEOI2015]最短不公共子串 后缀自动机+序列自动机+bfs+记忆化搜索
- HDU -4170 Supply Mission -全排列暴力
- PAT 1119. Pre- and Post-order Traversals (30) 用前序、后序求中序
- 219. Contains Duplicate II
- 【NOIP2017提高A组模拟9.12】Shorten Diameter
- 三种字符串逆序
- HDU1008
- C
- DenseNet 网络
- mysql_简单查询
- 第三周项目三求集合并集
- Java架构师必须要懂的知识(一)
- 使用RecyclerView展示checkBox全选反选
- C++数据共享与保护