从C语言中的单词列表中选择随机单词时出现问题

从C语言中的单词列表中选择随机单词时出现问题,c,random,C,Random,我正在上C编程入门课,我正试图编写一个《刽子手》游戏。我目前处于非常早期的阶段,希望在让电脑选择游戏用词的部分得到帮助。以下是我到目前为止的情况: #include <string.h> #include<string.h> #include <time.h> /* contains prototype for function time */ #define MAX 10 int main() { int randnum; cha

我正在上C编程入门课,我正试图编写一个《刽子手》游戏。我目前处于非常早期的阶段,希望在让电脑选择游戏用词的部分得到帮助。以下是我到目前为止的情况:

#include <string.h>  
#include<string.h>  
#include <time.h> /* contains prototype for function time */  
#define MAX 10  

int main()  
{   
int randnum;
char gameword[MAX];
randnum = 1+(rand() % 20);
printf("%d\n", randnum);

if (randnum=1)(
    gameword= char word1[MAX]=who);
if randnum=2(
    gameword=char word2[MAX] = lives);
if randnum=3(
   gameword=char word3[MAX] = in);
if randnum=4(
   gameword=char word4[MAX] = a);
if randnum=5(
   gameword=char word5[MAX] = pineapple);
if randnum=6(
   gameword=char word6[MAX] = under);
if randnum=7(
   gameword=char word7[MAX] = the);
if randnum=8(
   gameword=char word8[MAX] = sea);
if randnum=9(
   gameword=char word9[MAX] = absorbant);
if randnum=10(
   gameword=char word10[MAX] = and);
if randnum=11(
   gameword=char word11[MAX] = yellow);
if randnum=12(
   gameword=char word12[MAX] = porous);
if randnum=13(
   gameword=char word13[MAX] = is);
if randnum=14(
   gameword=char word14[MAX] = he);
if randnum=15(
   gameword=char word15[MAX] = sponge);
if randnum=16(
   gameword=char word16[MAX] = bob);
if randnum=17(
   gameword=char word17[MAX] = square);
if randnum=18(
   gameword=char word18[MAX] = pants);
if randnum=19(
   gameword=char word19[MAX] = crabby);
if randnum=20(
   gameword=char word20[MAX] = patties);

printf("%c", gameword);
return 0;
}  
#包括
#包括
#include/*包含函数时间的原型*/
#定义最大值10
int main()
{   
int-randnum;
char gameword[MAX];
randnum=1+(rand()%20);
printf(“%d\n”,randnum);
如果(randnum=1)(
gameword=char-word1[MAX]=who);
如果randnum=2(
gameword=char-word2[MAX]=lifes);
如果randnum=3(
gameword=char-word3[MAX]=in);
如果randnum=4(
gameword=char-word4[MAX]=a);
如果randnum=5(
gameword=char-word5[MAX]=菠萝);
如果randnum=6(
gameword=char-word6[MAX]=under);
如果randnum=7(
gameword=char-word7[MAX]=the);
如果randnum=8(
gameword=char-word8[MAX]=sea);
如果randnum=9(
gameword=char-word9[MAX]=吸收剂);
如果randnum=10(
gameword=char-word10[MAX]=and);
如果randnum=11(
gameword=char-word11[MAX]=黄色);
如果randnum=12(
gameword=char-word12[MAX]=多孔);
如果randnum=13(
gameword=char-word13[MAX]=is);
如果randnum=14(
gameword=char-word14[MAX]=he);
如果randnum=15(
gameword=char-word15[MAX]=海绵);
如果randnum=16(
gameword=char-word16[MAX]=bob);
如果randnum=17(
gameword=char-word17[MAX]=square);
如果randnum=18(
gameword=char-word18[MAX]=裤子);
如果randnum=19(
gameword=char-word19[MAX]=crabby);
如果randnum=20(
gameword=charword20[MAX]=肉饼);
printf(“%c”,gameword);
返回0;
}  
我遇到了如下错误:

第19行建议将赋值周围的括号用作真值

第20行“char”之前的预期表达式

第64行应为“;”在“}”标记之前

第64行控件到达非void函数的末尾

任何帮助都会很好。我还有很长的路要走,但我很早就被困在这里了

// ...
if (randnum == 13)
  gameword = "is"; else
// ...

printf("%s\n", gameword);
这是您的代码,更像C语言:

#include <string.h>  
#include<string.h>  
#include <time.h> /* contains prototype for function time */  

int main()  
{   
  int randnum;  
  char gameword[10];

  randnum = 1 + (rand() % 20);  
  printf("%d\n", randnum);  

  switch (randnum)
  {
    case 1:
        gameword = "who";
    break;  

    case 2:
        gameword = "lives";
    break;

    case 3:
        gameword = "in";
    break;

    case 4:
        gameword = "a";
    break;

    case 5:
        gameword = "pineapple";
    break;

    case 6:
        gameword = "under";
    break;

    case 7:
        gameword = "the";
    break;

    case 8:
        gameword = "sea";
    break;

    //...
  }

  return 0;
}
#包括
#包括
#include/*包含函数时间的原型*/
int main()
{   
int-randnum;
chargameword[10];
randnum=1+(rand()%20);
printf(“%d\n”,randnum);
开关(随机数)
{
案例1:
gameword=“谁”;
打破
案例2:
gameword=“生活”;
打破
案例3:
gameword=“in”;
打破
案例4:
gameword=“a”;
打破
案例5:
gameword=“菠萝”;
打破
案例6:
gameword=“under”;
打破
案例7:
gameword=“the”;
打破
案例8:
gameword=“海”;
打破
//...
}
返回0;
}

只要看正确的代码并进行直观的比较,您就应该能够发现许多错误。您使用了错误的符号,括号不匹配,
gameword=
行看起来很奇怪

如果语句
  • 使用两个等号进行比较
  • 在条件表达式周围需要一组平衡的括号
  • 使用大括号
    {
    }
    if
    语句中的代码包围起来
  • 您需要引用字符串,如
    “who”
    “菠萝”
    。双引号
  • 对不起,你的任务陈述还没有结束。你的目标是
    gameword=“谁”
  • 除了使用
    gameword=“who”您将得到一个关于非法分配到数组的错误。这里要说的太多了,但只需说您需要使用
    strcpy
    函数:
    strcpy(gameword,“who”)
考虑到所有这些评论,这里有一个有效的if语句,您可以将其用作模型:

if (randnum == 1) {  
    strcpy(gameword, "who");
}
印刷
%c
格式说明符用于打印单个字符。您正试图打印字符串,因此请改用
%s
。另外,如果在末尾添加换行符
'\n'
,效果会更好

printf("%s\n", gameword);
随机数 一旦你把它编译好,你最终会看到每次都打印相同的单词。
rand()
函数只是一个伪随机数生成器。它返回的随机数不是真正的随机数;它们实际上是使用固定的算法生成的。这意味着它将始终以相同的顺序返回相同的随机数,除非您对随机数生成器进行种子设定

一个好的种子是系统时钟。时钟定期变化,因此您可以使用它向RNG输入不同的种子数。在调用
rand()
之前,请在程序顶部插入此行:


首先,您需要使用
=
作为条件运算符,其中有
randnum=1

=
比较,
=
分配

接下来,您会遇到语法问题。如果(randnum==20),则应为

但是,您可能需要将字符串放入数组中。因此,您可以只使用数组偏移量。

有些事情:

  • 在C(和许多其他语言)中,赋值运算符
    =
    与等式
    =
    运算符不同。第一个用于为变量赋值,而第二个用于检查是否相等
  • 代码
    gameword=charword2[MAX]=lifes)没有多大意义,你想做什么?您需要在单词列表中进行选择。我想,你应该先用硬编码的方式将单词列表编码为

    char*words[]={“foo”、“bar”、“baz”、“lol”}


然后您生成随机数并选择正确的字符串,例如
words[randnum]
使用
else if
而不是second和next
if
您应该使用else if而不是if,if,if,if。。。这样,一旦找到正确的选项,就不会浪费更多的时间检查其他选项

此外,=是赋值,==用于比较

Th
printf("%c", gameword);
printf("%s\n", gameword);
srand(time(NULL));
if randnum=2(
    gameword=char word2[MAX] = lives);
if (randnum=2)
    gameword=char word2[MAX] = lives);
if(randnum == 1)
    gameword = "who"; 
else if(randnum == 2)
    gameword = "lives";
else if(randnum == 3)
    gameword = "in";
#include <stdio.h>
#include <time.h>


int main (void) {
    const int numberOfWords = 3
    srand((unsigned)time(NULL)); //generate a random seed based on time so it's different every time!
    int ran = rand()% numberOfWords; //Generate a random number between 0 to numberOfWords - 1
    char *hello[] = {"One", "Two", "Three"}; //Fill in the array with words
    printf("%s", hello[ran]); //Print a string and choose the nth element from the array
    //remember arrays are 0 based!
    return 0;
}