我可以将字符串存储在字符数组中,但顺序相反,这样0(索引)就可以指向字符串中的最后一个字符吗



我开始学习编程,并试图将字符串存储到字符数组中,但顺序相反,这样数组索引位置0(零(指向字符串中的最后一个字符。我尝试用不同的术语使用for循环,但得到了所需的输出。我想用C++解决这个问题。这是我被卡住的代码,

#include <iostream>
using namespace std;
int main()
{
     char str[maxn];
     string entstr;
     cin>>entstr;
     int len = entstr.length();
     cout<<len<<endl;
     for(int i = 0 ; i < len ; i++)        //this makes n no sense//
         for(int j = len-1 ; j >= 0 ; j--)
             str[i] = entstr[j];

     for(int i = len-1 ; i >= 0 ; i--)
         cout<<"Straight for array "<<i<<" "<<str[i]<<endl;        
            
    return 0;
}
OUTPUT:
sachin
6
Straight for array 5 s
Straight for array 4 s
Straight for array 3 s
Straight for array 2 s
Straight for array 1 s
Straight for array 0 s

我想你不想使用评论中提到的std::reverse,因为你想练习你的算法技能。

你可以用这个简短的程序来帮助自己。它使用std::malloc来分配输入字符串大小的char数组。然后,您只需要通过字符串的字符向后循环,并将其存储到数组中。我建议你在循环中遵循(写在纸上(ilen-1-i的值。它将帮助您了解索引是如何工作的。

#include <iostream>
using namespace std;
int main()
{
    string entstr;
    cin >> entstr;
    int len = entstr.length();
    char* charArray = (char*) malloc (len);
     
    for(int i = 0; i < len; i++)
    {
        charArray[i] = entstr[len-1-i];
    }
    
    cout << "charArray contains: ";
    for(int j = 0; j < len; j++)
    {
        cout << charArray[j];
    }
    return 0;
}

祝你好运!

我认为两个循环没有任何用处。只需从前面开始字符串,从len-1开始数组(就像在for循环中打印一样(。你可以采取任何长度,你想你的字符数组。

#include <iostream>
using namespace std;
int main()
{
     char str[100]; //put whatever you want the length of the char array to be
     string entstr;
     cin>>entstr;
     int len = entstr.length();
     cout<<len<<endl;
     for(int i = 0 ; i < len ; i++)
     {
         str[len-1-i]=entstr[i];
     }

     for(int i = len-1 ; i >= 0 ; i--)
         cout<<"Straight for array "<<i<<" "<<str[i]<<endl;        
            
    return 0;
}

你也可以使用两个指针,即一个从前面开始,一个从后面开始(如果你感到困惑(

 for(int i = 0, j=len-1 ; i < len ; i++, j--)
 {
     str[j]=entstr[i];
 }

最新更新