-3

我们的老师希望我们编写一个反转字符数组顺序的程序。因此,如果用户输入“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;
    }   
}

但它不起作用,我在试图让它起作用时不知道为什么。你能指出我正确的方向吗?

任何帮助,将不胜感激

4

2 回答 2

3

这是您应该自己解决的问题,但这里有一些可以为您指明正确方向的问题:

假设它coolstring看起来像这样:

 0  |  1  |  2  |  3  |  4  |  5
'h' | 'e' | 'l' | 'l' | 'o' | '\0'

此循环将检索此字符串的大小:

while(coolstring[count] != '\0')
    count++;

但是由于您想count用作索引并且count在这种情况下等于 5,因此您不想复制终止 ( '\0') 字符,因此您应该首先开始(这是在循环后减少后coolstring[4]输出的点。 ..让你意识到它是)。coolstring[count]countwhile'o'

现在看看这段代码:

while(coolstring[count] != '\0')
{
    newcoolstring[count] = coolstring[count2];
    count--;
    count2++;
} 

问问自己这些问题:

  1. 什么时候coolstring[count]等于'\0'我们开始'o'和递减的时间count
  2. 如何newcoolstring处理这个循环?
于 2013-03-29T22:51:21.970 回答
0

我认为我们需要更具体地描述它是如何不起作用的。你尝试了哪些输入,你得到了什么样的错误行为?

仅从您的示例来看,错误可能是您只能显示原始字符串的最后一个字母。那是因为你有一个 cout 声明可以做到这一点,就在 line 之前system("pause")。您是否在其他任何地方显示输出字符串?

于 2013-03-29T22:36:43.313 回答