ANSI C - 获取每个数组的随机字

时间:2012-10-08 00:10:55

标签: c arrays random ansi

我在代码上遇到一些问题,要生成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 个答案:

答案 0 :(得分:1)

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

类似的东西,

int a = rand() % 5;

答案 1 :(得分:1)

  • 使用%s,而不是%c; s打印一个字符串,一个字符。
  • rand() % 5或者几乎所有时间你都会超出范围。
  • 为每一行使用单独的索引,除非您希望每个数组中只有n为任何给定的n。

答案 2 :(得分:1)

因为你有5个元素的数组,所以你需要0-4的随机数,所以你应该使用:

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

答案 3 :(得分:0)

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

由于你的printf函数始终是相同的,唯一改变的是你正在使用的索引,你可以将它放在一个循环中,只使用一个变量而不是6。