我在代码上遇到一些问题,要生成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:我是个乞丐,有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
您需要确保随机值小于数组中元素的数量。
类似的东西,
int a = rand() % 5;
答案 1 :(得分:1)
%s
,而不是%c
; s打印一个字符串,一个字符。rand() % 5
或者几乎所有时间你都会超出范围。答案 2 :(得分:1)
因为你有5个元素的数组,所以你需要0-4的随机数,所以你应该使用:
int number = rand() % 5; // range 0-4
答案 3 :(得分:0)
rand()%5
,因为您只需要0到4之间的索引
由于你的printf
函数始终是相同的,唯一改变的是你正在使用的索引,你可以将它放在一个循环中,只使用一个变量而不是6。