C++;反向阵列 在C++中,我需要: 从用户输入中读入一个字符串,并将其放入一个字符数组[done] 然后将该数组传递给函数[done] 该函数应该颠倒字符顺序[问题!] 然后,回到main(),它将显示带有新反转字符的原始数组

C++;反向阵列 在C++中,我需要: 从用户输入中读入一个字符串,并将其放入一个字符数组[done] 然后将该数组传递给函数[done] 该函数应该颠倒字符顺序[问题!] 然后,回到main(),它将显示带有新反转字符的原始数组,c++,arrays,reverse,C++,Arrays,Reverse,我在创建实际执行反转的函数时遇到问题,因为我有一些限制: 我不能有任何本地数组 变量 也没有指针 我的函数只传入原始数组,即: void reverse(char word[]) 编辑:这是我目前的代码库: void reverse(char word[]); void main() { char word[MAX_SIZE]; cout << endl << "Enter a word : "; cin >> word; cou

我在创建实际执行反转的函数时遇到问题,因为我有一些限制:

  • 我不能有任何本地数组 变量
  • 也没有指针
我的函数只传入原始数组,即:

void reverse(char word[])
编辑:这是我目前的代码库:

void reverse(char word[]);

void main() 
{
  char word[MAX_SIZE];

  cout << endl << "Enter a word : ";
  cin >> word; 
  cout << "You entered the word " << word << endl;

  reverse(word); 

  cout << "The word in reverse order is " << word << endl;
}

void reverse(char myword[]) 
{
  int i, temp;
  j--;

  for(i=0;i<(j/2);i++) 
  {
    temp      = myword[i];
    myword[i] = myword[j];
    myword[j] = temp; 

    j--; 
  }
}
void反向(char-word[]);
void main()
{
字符字[最大大小];
单词;

cout如果我们谈论的是C字符串,那么您的函数应该是

void reverse(char word[],size_t wordlen)
同一问题的第一个答案(这是一个被愚弄的问题)

这并不能满足你的需求,但却能让你离得很近

 int ReverseString(char *rev)
         {
            if(*rev!='\0')
            {
               ReverseString(rev + 1);
               putchar(*rev);//change this.
            }

            return 1;
         }

@devinb.

尽管这看起来很像家庭作业,但我可以建议:

void reverse(char word[])
{
    int len=strlen(word);
    char temp;
    for (int i=0;i<len/2;i++)
    {
            temp=word[i];
            word[i]=word[len-i-1];
            word[len-i-1]=temp;
    }
}
void reverse(字符字[])
{
int len=strlen(字);
焦炭温度;

对于(int i=0;i,因为这是家庭作业,所以我将向您指出解决方案,而不只是给出答案


您的
reverse
函数可以修改传入的
word
。您需要知道的一件事是单词的长度(这样您就可以知道要反转多少个字母),您可以从
strlen()获取此信息
函数。如果不允许使用指针,则可以使用本地
int
索引变量。

//此程序可帮助您查找数组中的最大值和最小值

#include<iostream.h>
#include<conio.h>
int main()
{int max;

    int a[5]={12,1,0,4,5};
 int min=a[0];
    int i=1;
    max=a[0];

    while(i<=4)
    {
              if (max < a[i])
              max=a[i];
              if (min > a[i])
              min=a[i];
              i++;

    }
              cout << min <<"\n";
              cout << max;
              getch();
              return 0;
}              
#包括
#包括
int main()
{int max;
int a[5]={12,1,0,4,5};
int min=a[0];
int i=1;
max=a[0];
而(我是[我])
min=a[i];
i++;
}

很抱歉,这是我忘了提到的另一个限制-也不应该使用指针。这不会按照问题的要求返回反转数组。@Greg它说必须返回反转数组的位置是哪里?@Tom:“回到main(),它会用新反转的字符显示原始数组”我将把它留给你来处理@dazedandfuzzle。这是家庭作业吗?这些限制在现实世界中听起来相当随意。Greg,是的-这确实是家庭作业,我也有同样的感觉!j似乎在任何地方都没有被声明。而且我肯定有人希望将答案标记为答案。那么,我应该将我的字符数组转换为str吗是否要使用strlen()函数?字符串与字符数组完全相同。您可以调用strlen(word)谢谢格雷戈,我被一个“警告”给甩掉了。它正在建设。谢谢戴夫,这真的很有帮助。”达累德困惑地说:“我在C++相关的面试中看到了这个问题。我同意格雷戈的观点。你很重要的是理解他的解决方案是如何工作的。用于反转数组中字符顺序的标准反转算法,即std::reverse(word,word+strlen(word))。但是,我不会向您的老师提供这种简单的解决方案。:)使用XOR比使用临时对象交换要慢得多。这并不是本问题作者真正想要的-他们想要反转数组。
#include<iostream.h>
#include<conio.h>
int main()
{int max;

    int a[5]={12,1,0,4,5};
 int min=a[0];
    int i=1;
    max=a[0];

    while(i<=4)
    {
              if (max < a[i])
              max=a[i];
              if (min > a[i])
              min=a[i];
              i++;

    }
              cout << min <<"\n";
              cout << max;
              getch();
              return 0;
}