通过使用在线教程,我努力尝试对数组中的字符进行混洗。我使用的教程使用整数,并且不包含任何用户输入,但是当我尝试复制它并更改它以执行我在下面编写的代码中想要的操作时,此方法无法解决。

完全没有错误消息。当我运行程序时,它仅提示用户输入单词,然后结束。

万一您不能从代码中理解我想要什么,我希望用户能够插入一个单词,然后在最后打印“改组”单词。 (例如,Hello> elHol)

我仍然是一个非常新的程序员,总体上对这个主题很难,所以请理解您可能遇到的“愚蠢”错误。

在此先感谢您的帮助!

#include <stdio.h>
#include <time.h>

int main ()
{
    char word[15];
    int i,length,j, temp;

     srand(time(NULL));

     printf("Insert word\n");
     scanf("%s", word);

     for(i=0; word[i] != '\0'; )
     {
        i = i + 1;
    }

     i = length;

     for(i = 0; i < length; i++)
    {
        j = (rand()%length);
        temp = word[i];
        word[i] = word[j];
        word[j] = temp;
    }

    for(i=0; i<length; i++)
    {
         printf("%c", word[i]);
    }
}

最佳答案

欢迎;)。除了其他工程师对您的问题的解决方案之外,我还修改了您的代码,以免使用临时变量进行交换。[由于您提到了新程序员,所以我认为这应该有所帮助。 ;)]

看下面的源代码。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main ()
{
    char word[15];
    int i,length,j, temp;

     srand(time(NULL));

     printf("Insert word\n");
     scanf("%s", word);

     for(length=0; word[length++] != '\0';);
     for(i = 0; i < length; i++)
    {
        j = (rand()%length);
        word[i] = word[i] ^ word[j];
        word[j] = word[i] ^ word[j];
        word[i] = word[i] ^ word[j];
    }

    for(i=0; i<length; i++)
    {
         printf("%c", word[i]);
    }
}

08-26 16:02