而不是随机,它生成数字序列

时间:2019-01-30 11:58:26

标签: c for-loop pointers random

我想生成x个随机数,并且一切正常,除了它给了我顺序编号而不是随机数。

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

int main(){

int x;
printf("How many  elements do you want?\n");
scanf("%d", &x);
int *array = (int *)malloc(x * sizeof(int));
srand(time(NULL));
for(int y = 0; y < x; y++){

    *(array + y) = 2 +  rand() % 99;
}

for(int y = 0; y <x; y++){
    printf("Array element %d: %d\n", y, (*array+ y));

}

return 0;}

它给出的数字是:27 28 29 30 31,每次执行中只有第一个数字是随机的,其他的是顺序的。

1 个答案:

答案 0 :(得分:7)

很可能您在打印错误的值。

您需要在(*array+ y)语句中将*(array+ y)更改为printf(),否则,最终将输出第一个随机数的值以及迭代计数器(这将解释您的输出)得到)。

只需添加一些观点即可:数组索引运算符[]在那里,有些人选择更喜欢使用它来避免这样的错误。您的陈述可以很容易地重新编写以利用它,例如

for(int y = 0; y < x; y++){

    array[y] = 2 +  rand() % 99;
}

for(int y = 0; y <x; y++){
    printf("Array element %d: %d\n", y, array[y]);
}

说,