【发布时间】:2015-11-23 18:17:08
【问题描述】:
我对 C 编程完全陌生,但遇到了一些问题。
我正在尝试创建单词搜索,但是遇到了问题。 https://en.wikipedia.org/wiki/Word_search
我正在尝试随机化一个数字,以便包含单词的数组是随机的。 在我添加决定或任何其他编码之前,srand 工作。
我正在使用 switch case,因为我遇到了 else if 的问题。
这是代码:
#include <stdio.h>
#include<string.h>
#include <time.h>
#define ARRAY_SIZE 10
int main (void)
{
int r;
srand(time(NULL));
r = (rand() % 3) + 1 ; //random number
printf ("%d\n", r);
char *names1[]= {"DOG" , "CAT", "HORSE" , "SNAKE" };
char *names2[]= {"RAT", "FOX", "FISH", "DRAGON" };
char *names3[]= { "TIGER", "COW", "SHARK", "BEAR" };
switch(r)
{
case '1' : printf (" %s", names1);
break;
case '2' : printf (" %s", names2);
break;
case '3' : printf (" %s", names3);
break;
default : puts ("Invalid");
getchar();
return 0;
}
【问题讨论】:
-
你遇到了什么问题?
-
'1'与1非常不同。 -
看起来你需要调用
rand()两次:一次选择哪一组动物,再次选择其中的动物。所以rand() % 3然后rand() % 4。坚持以 0 为基础的值,仅调整 0->1 以供人类消费。 -
我只需要选择一组动物,因此我认为我只需要调用 rand() 一次。我遇到的问题是程序甚至没有编译。
-
您缺少右大括号来结束
switch语句。您必须在开关中使用整数文字 (case 1:) 而不是字符文字 (case '1':),因为随机表达式的结果是整数,而不是字符(字符文字'1'的值不同于整数文字1) 你不能用"%s"格式打印names1,因为它是一个字符串数组(而不是简单的字符串),你必须决定是打印names1[0],还是要打印哪个索引使用(也许另一个随机调用可以在这里提供帮助)。
标签: c if-statement switch-statement srand