注册 登录
编程论坛 C++教室

讲一个字符串逆袭输出,请问哪错了?

你爸边哭边 发布于 2018-03-20 16:27, 1167 次点击
#include<iostream>
#include<string>
using namespace std;
void main()
{
    int n,i;
    string string1,string2;
    cin>>string1;
    n=sizeof(string1);
    for(i=1;i<=n;i++);
    {
    string2[i]=string1[n-i+1];
    cout<<string2<<endl;
    }
}
2 回复
#2
rjsp2018-03-20 16:58
“哪错了?”难道不是你告诉大家吗?!比如 编译报错……,运行结果不符合预期……

n=sizeof(string1); // 我猜你想要的是 size_t n= string1.size();
for(i=1;i<=n;i++); // 对于长度为n的序列,下标是从0到n-1。而且下标类型应该是size_t
string2[i]=string1[n-i+1]; // string2是空吧,那string2[i]不溢出?
cout<<string2<<endl; // 你期望每个循环步骤都输出一次?

在你原基础上修改
程序代码:
#include <iostream>
#include <string>
using namespace std;

int main( void )
{
    string s;
    cin >> s;

    string s2( s.size(), ' ' );
    for( size_t i=0; i!=s.size(); ++i )
        s2[i] = s[s.size()-i-1];

    cout << s2 << endl;
}


程序代码:
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;

int main( void )
{
    string s;
    cin >> s;

    copy( s.rbegin(), s.rend(), std::ostream_iterator<char>(cout,"") ) = '\n';
}

#3
Laity_CR2018-03-21 11:17
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str1="abcdefg";
    for(int i=str1.length()-1;i>=0;i--)
    {
        cout<<str1[i];
    }
    cout<<endl;
    retrun 0;
}
1