#include <stdio.h>
#include <time.h>
#define SIZE 20
#define MIN 0
#define MAX 100
void FillArray(int *array, int size);
void PrintArray(int *array, int size);
void BubbleSort(int *array, int size);
void SelectionSort(int *array, int size);
void Swap(int *x, int *y);
int main() {
int NumList[SIZE];
int *array;
array = NumList;
FillArray(array, SIZE);
PrintArray(array, SIZE);
}
void FillArray(int *array, int size) {
int i;
srand(time(NULL));
for (i = 0; i < size; i++); //<--- the K&R brace style would make this bug obvious!
{
*(array+i) = MIN + rand() % (MAX - MIN + 1);
}
}
void PrintArray(int *array, int size) {
int i;
for (i = 0; i < size; i++) {
printf ("%d\n", array);
array++;
}
}
这个程序似乎是按递增顺序输出随机整数(不是最小值和最大值),我想知道它为什么不是随机的。
具体在FillArray
函数中。它似乎没有正确填写。
答案 0 :(得分:0)
你没有这个循环的身体
for (i=0; i<size; i++);
结束时,下一行
*(array+i) = MIN + rand() % (MAX - MIN + 1);
在数组范围之外写入。
删除分号......
for (i=0; i<size; i++) // ---> ;
还有
的问题printf ("%d\n", array);
应该是
printf ("%d\n", *array);