如何在 C++ 中反转字符数组? [关闭]
Posted
技术标签:
【中文标题】如何在 C++ 中反转字符数组? [关闭]【英文标题】:How to reverse a character array in c++? [closed] 【发布时间】:2013-03-29 22:29:20 【问题描述】:我们的老师希望我们编写一个反转字符数组顺序的程序。所以就像如果用户输入“hello”,程序会输出“olleh”。
这是我们得到的功能:
void reverse_string(char coolstring[11], char newcoolstring[11])
int count = 0, count2 = 0;
while(coolstring[count] != '\0')
count++;
count -= 1;
cout << coolstring[count];
system("pause");
while(coolstring[count] != 0)
newcoolstring[count] = coolstring[count2];
count -= 1;
count2 += 1;
但它不起作用,我在尝试使其起作用时无法找出原因。你能给我指出正确的方向吗?
任何帮助将不胜感激
【问题讨论】:
“它不起作用”不是对问题的有用描述。 那是你老师给你的代码,你的代码在哪里?你试过什么? 她故意给你非工作代码。你不应该弄清楚如何解决它吗? 【参考方案1】:这是您应该自己解决的问题,但这里有一些可以为您指明正确方向的问题:
假设coolstring
看起来像这样:
0 | 1 | 2 | 3 | 4 | 5
'h' | 'e' | 'l' | 'l' | 'o' | '\0'
此循环将检索此字符串的大小:
while(coolstring[count] != '\0')
count++;
但是由于您想使用 count
作为索引并且在这种情况下 count
等于 5,您不想复制终止 ('\0'
) 字符,因此您应该以 coolstring[4]
开头首先(这是在count
在while
循环之后递减之后输出coolstring[count]
的目的......让你意识到它是'o'
)。
现在看看这段代码:
while(coolstring[count] != '\0')
newcoolstring[count] = coolstring[count2];
count--;
count2++;
问自己这些问题:
-
当我们以
'o'
开始并递减count
时,coolstring[count]
何时会等于'\0'
?
newcoolstring
将如何处理此循环?
【讨论】:
【参考方案2】:我认为我们需要更具体地描述它是如何不起作用的。你尝试了哪些输入,你得到了什么样的错误行为?
仅从您的示例来看,错误可能是您只能显示原始字符串的最后一个字母。那是因为您有一个 cout 语句来执行此操作,就在 system("pause")
行之前。您是否在其他任何地方显示输出字符串?
【讨论】:
以上是关于如何在 C++ 中反转字符数组? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章