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

Mus*_*tal 2 c random pointers for-loop

我想生成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;}
Run Code Online (Sandbox Code Playgroud)

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

Sou*_*osh 7

很可能你打印的是错误的值.

您需要更改(*array+ y)*(array+ y)in 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]);
}
Run Code Online (Sandbox Code Playgroud)

那说,