我刚刚编写了一个程序,无论用户提供什么,都会反转一个句子.例如:如果用户输入"你好吗",我的程序会生成"uoy era woH".
我写的程序如下所示.我只是有一个疯狂的直觉,可以有一个比这更聪明的程序.非常感谢您提供的宝贵意见或者比这更好的计划也是最受欢迎的.
int ReverseString(char *);
main() {
char *Str;
printf("enter any string\n");
gets(Str);
ReverseString(Str);
getch();
}
int ReverseString(char *rev) {
int len = 0;
char p;
while(*rev!='\0') {
len++;
rev++;
}
rev--;
while(len>0) {
p = *rev;
putchar(p);
rev--;
len--;
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢.
可能重复:
C++反向数组
如何反转字符数组?像这样:
char word1[10] = "this";
char word2[10] = word1[10] // in reverse
cout<<word2; // I want it to output "siht"
Run Code Online (Sandbox Code Playgroud) 我正在阅读一个关于反转数组的最快方法的问题(最终不那么令人兴奋),我在链接处看到了一个有趣的评论:
引用的解决方案显示了这两种可能性
//Possibility #1
void reverse(char word[])
{
int len=strlen(word);
char temp;
for (int i=0;i<len/2;i++)
{
temp=word[i];
word[i]=word[len-i-1];
word[len-i-1]=temp;
}
}
//Possibility #2
void reverse(char word[])
{
int len=strlen(word);
for (int i=0;i<len/2;i++)
{
word[i]^=word[len-i-1];
word[len-i-1]^=word[i];
word[i]^=word[len-i-1];
}
}
Run Code Online (Sandbox Code Playgroud)
并且评论指出:"使用XOR比使用临时对象进行交换慢得多."
没有人对此提出质疑.所以,我的问题是: