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

ランダムな値が配列内の要素の数よりも少ないことを確認する必要があります。

何かのようなもの、

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 に答える
1

5つの要素の配列があるため、0〜4の乱数が必要なので、次を使用する必要があります:

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

于 2012-10-08T00:32:46.083 に答える
0

rand()%5、0から4の間のインデックスのみが必要なため

関数は常に同じであり、printf変更されるのは使用しているインデックスのみであるため、ループに入れて、6 の代わりに 1 つの変数のみを使用できます。

于 2012-10-08T01:05:23.387 に答える