输入字符串并使用带有数组的for循环反向显示

时间:2014-10-12 09:02:16

标签: c++ arrays string for-loop

我想要做的是输入一些循环,然后所有输入的单词将反向显示。我尝试反向显示数字,它的工作原理。但是,我不知道代码中要改变什么。我在c ++方面不擅长,所以我练习。谢谢你帮我=)

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int x, y;
    string a[y];
    cout << "Enter number: ";
    cin >> x;
    x=x-1;
    for (y=0; y<=x; y++)
    {
        cout << y+1 << ". ";
        cin >> a[y];
    }
    for (y=x; y>=0; y--)
    {
        cout << a[y] << endl;
    }
    return 0;
}

3 个答案:

答案 0 :(得分:1)

您的ptogram无效。例如,您要声明数组

string a[y];

而变量y未初始化

int x, y;

C ++不允许定义可变长度数组。

因此,使用标准容器std::vector

代替数组

该程序可以采用以下方式

#include <iostream>
#include <vector>
#include <string>

int main() 
{
    std::cout << "Enter number: ";

    size_t n = 0;
    std::cin >> n;

    std::vector<std::string> v;
    v.reserve( n );

    for ( size_t i = 0; i < n; i++ )
    {
        std::cout << i + 1 << ". ";

        std::string s;
        std::cin >> s;
        v.push_back( s );
    }

    for ( size_t i = n; i != 0; i-- )
    {
        std::cout << v[i-1] << std::endl;
    }

    return 0;
}

例如,如果输入看起来像

4
Welcome
to
Stackoverflow
kempoy211

然后输出

kempoy211
Stackoverflow
to
Welcome

答案 1 :(得分:0)

您可以在C ++中使用来自算法库的std :: reverse。有了它,你不需要写这些庞大的循环

EDITED: -

如果您只想要反向遍历并在下面打印您的字符串,则为伪代码: -

for ( each string str in array )
{
for ( int index = str.length()-1; index >= 0; index -- )
cout << str[index];
}
cout <<endl;
}

答案 2 :(得分:0)

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int x, y;
    cout << "Enter number: ";
    cin >> x;
    string a[x];  //this should be placed after cin as x will then be initialized
for (y=0; y<x; y++)
    {
        cout << y+1 << ". ";
        cin >> a[y];
    }
for (y=x-1; y>=0; y--)  // x-1 because array index starts from 0 to x-1 and not 0 to x
    {
        cout << a[y] << endl;
    }
return 0;
}

输出:

Enter Number: 5
1. one
2. two
3. three
4. four
5. five
five
four
three
two
one