1 题目
字符串反转,如将字符串 “Wuhan will be better” 反转为 “retteb eb lliw nahuW”。
2 分析
在C语言中,将其作为字符数组,用数组的思维操作字符串,本题就非常简单了,只用一个for
循环,将字符串中对称的位置互换即可,如第一个位置与最后一个位置互换,第二个位置与倒数第二个位置互换,本算法最容易出错的地方就是循环的控制条件,循环到字符串长度的一半即可,若循环整个字符串的长度,则相当于交换了两次,那么就字符串又还原成原来的顺序了。
关于scanf("%[^\n]", str);
的说明:这里使用了scanf
中的正则表达式,若不了解该方法,将其替换为gets(str);
也是可以的,注意在使用过程中和fgets()的区别,fgets()会获取回车符,gets()不会。
3 实现
#include <stdio.h>
#include <string.h>
void invertStr(char *str) {
char t;
int length = strlen(str);
//交换的时候,要循环数组长度的二分之一次
for (int i = 0; i < length/2; i++) {
t = str[i];
str[i] = str[length-i-1];
str[length-i-1] = t;
}
}
int main(void) {
char str[200]; // 保存字符串
scanf("%[^\n]", str);
invertStr(str);
puts(str);
return 0;
}
4 运行结果
Wuhan will be better
retteb eb lliw nahuW