#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
beginning:
string name;
cout << "Hey! Enter your name" << endl;
cin >> name;
int i = name.length() - 1;
do
{
cout << name[i];
i--;
} while (i > -1);
cout << " Your reverse name is " << name[i] << endl;
cout << name[i] << " Your reverse name is " << endl;
goto beginning;
}
cout<<" Your reverse name is "<<name[i]<<endl;
cout<<name[i]<<" Your reverse name is "<<endl;
这一行,我
仅找到“您的反向名称是” ,但没有名称。为什么?答案 0 :(得分:6)
您首先要显示反向字符串,然后输出Your reverse name is
。但是字符串永远不会反转。使用:
string reverse_name(name.rbegin(), name.rend())
创建反向字符串。
然后使用cout
显示它。
仅供参考,不要使用goto
s ...
答案 1 :(得分:2)
删除最后两个cout语句。 反向字符串已经由do-while循环内的cout语句打印。您可以移动
cout<<" Your reverse name is "<<endl;
如果确实需要,在do语句之前。
答案 2 :(得分:2)
您可以使用std :: reverse为您反转它:
#include <iostream>
#include <cstdlib>
#include <algorithm> // std::reverse
int main(){
std::string name;
while(true) {
std::cout << "Hey! Enter your name: " << std::flush;
std::cin >> name;
std::cout << "Your name is: " << name << "\n";
std::reverse(begin(name), end(name));
std::cout << "Your reverse name is: " << name << "\n";
}
}
答案 3 :(得分:1)
1),因为您要在cout语句之前的do while循环中打印名称[i]。
2)因为因为(i> -1)条件变为false,而i的值不等于while循环,所以i = -1,而name [-1]可能什么也不打印。