0

我的代码在生成 6 个随机人类字符和 6 个随机数时遇到了一些问题,这是我的代码:

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

char name[5] = {'Daniel','Bill','Ben','Steve','Drew'};
char animals[5] = {'Dog','Cat','Mouse','Chicken','Bird'};
int age[5] = {25,17,18,50,10};
char city[5] = {'Palo Alto','Escondido','Chicago','Mumbai','Zapopan'};

int main() {
srand(time(NULL));
int a = rand(),b = rand(),c = rand(),d = rand(),e = rand(),f = rand();
printf("Name: %c\nAnimal: %c\nAge: %d\nCity: %c",name[a],animals[a],age[a],city[a]);
printf("Name: %c\nAnimal: %c\nAge: %d\nCity: %c",name[b],animals[b],age[b],city[b]);
printf("Name: %c\nAnimal: %c\nAge: %d\nCity: %c",name[c],animals[c],age[c],city[c]);
printf("Name: %c\nAnimal: %c\nAge: %d\nCity: %c",name[d],animals[d],age[d],city[d]);
printf("Name: %c\nAnimal: %c\nAge: %d\nCity: %c",name[e],animals[e],age[e],city[e]);
printf("Name: %c\nAnimal: %c\nAge: %d\nCity: %c",name[f],animals[f],age[f],city[f]);
return 0;
}

它似乎不起作用 S:我是一个初学者,有人可以帮助我吗?

谢谢!

4

4 回答 4

1

as you have array of 5 elements so you need random number from 0-4 so you should use:

int number = rand() % 5; // range 0-4

于 2012-10-08T00:32:46.083 回答
1

您需要确保随机值小于数组中的元素数。

就像是,

int a = rand() % 5;
于 2012-10-08T00:13:14.623 回答
1
  • 使用%s,而不是%c;s 打印一个字符串,ca 字符。
  • rand() % 5否则你几乎总是会出界。
  • 为每一行使用一个单独的索引,除非您希望对于任何给定的 n 在每个数组中只包含第 n 个。
于 2012-10-08T00:15:23.490 回答
0

rand()%5,因为你只想要 0 到 4 之间的索引

而且由于您的printf函数始终是相同的,唯一改变的是您正在使用的索引,因此您可以将其放入循环中并仅使用一个变量而不是 6 个。

于 2012-10-08T01:05:23.387 回答