从C语言中的单词列表中选择随机单词时出现问题
我正在上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
#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 (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和nextif
您应该使用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;
}