【问题标题】:Create a dynamic array and assign random integer values to it?创建一个动态数组并为其分配随机整数值?
【发布时间】:2016-10-23 04:29:51
【问题描述】:
int* create_array(char category, int n){
  int *a;

  a = malloc(n* sizeof(int));

  for (int i = 0; i < n; i++) {
    int x;
    srand( time(NULL));
    x = rand();
    a[i] = x;
  }

当我打印此代码时,它只会打印相同的随机变量“n”次。

【问题讨论】:

标签: c arrays srand


【解决方案1】:

您可以使用srand(getpid() 或者您可以使用x=rand()%11 指定从0-10 生成的随机数范围;

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int *create_array(char category, int n);
    
    int
    main(int argc, char const *argv[]) {
        time_t t;
        int *array;
        int i, n;
        char category;
    
        srand((unsigned)time(&t));
    
        printf("Enter category: ");
        if (scanf("%c", &category) != 1) {
            printf("Invalid category.\n");
            exit(EXIT_FAILURE);
        }
    
        printf("Enter n numbers: ");
        if (scanf("%d", &n) != 1) {
            printf("Invalid n value.\n");
            exit(EXIT_FAILURE);
        }
    
        array = create_array(category, n);
    
        printf("Your n random numbers between 0-10:\n");
        for (i = 0; i < n; i++) {
            printf("%d ", array[i]);
        }
    
        free(array);
    
        return 0;
    }
    
    int
    *create_array(char category, int n) {
        int *array;
        int i, candidate;
    
        array = malloc(n * sizeof(*array));
    
        for (i = 0; i < n; i++) {
            candidate = rand() % 10;
            array[i] = candidate;
        }
    
        return array;
    }   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 2020-10-12
      • 2012-04-29
      • 2013-09-30
      相关资源
      最近更新 更多