C中的随机数和数组

时间:2014-02-26 19:37:39

标签: c arrays random

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

double main(){
  int N, x;

  printf("\nEnter the number of randoms to go into the array = ");
  scanf("%d", &N);

  double myArray[N];

  srand(time(NULL));

  for(x = 0; x < N; x++){
    myArray[x] = (rand() % 101);
    printf("myArray[x]: %d\n" , myArray[x]);
  }

  printf("\n Unsorted Array \n");
  for(x = 0; x < N; x++)
  printf("myArray[x]: %d\n" , myArray[x]);

  BubbleSort(myArray);

  printf("\n Sorted Array \n");
  for(x = 0; x < N; x++)
  printf("myArray[x]: %d\n" , myArray[x]);  
}

这是我的代码。我需要做的是从0-100创建随机值,然后对这些数字进行排序。但是,我似乎无法正确地将数字存储在C中。当我使用5的测试时,我的输出是:

myArray[x]: -30926580
myArray[x]: -28464932
myArray[x]: -17742016
myArray[x]: -5561396
myArray[x]: -6919840

未排序的数组

myArray[x]: 2048
myArray[x]: 2304
myArray[x]: 2560
myArray[x]: 2816
myArray[x]: 3072

排序数组

myArray[x]: 3584
myArray[x]: 3840
myArray[x]: 4096
myArray[x]: 4352
myArray[x]: 4608

之前我已阅读了几个主题,但我似乎无法找出为什么我的随机无效。

2 个答案:

答案 0 :(得分:1)

将myArray键入为双精度数组,然后将其打印为整数。 如果要打印它们,请使用%lf。

答案 1 :(得分:1)

printf()的一点点细微差别是%d替换代表“十进制”,而不是“双倍”。 “Decimals”是整数,并且传递双精度printf期望整数将导致输出错误。

要打印出双精度数,请使用%f说明符,表示“浮动”。

此外,main函数应该返回int,而不是double。这不是一个大问题,但返回double是非标准的,可能会混淆执行环境。