在 C89 中打印随机数组元素
Printing random array element in C89
我有以下代码可以正常工作:
#include <stdio.h>
#include <stdlib.h>/*need this for rand()*/
#include "random.h"
#include <time.h>/*for time() function*/
int main()
{
int arr[5], a = 0;
printf("enter 5 array elements\n");
scanf("%d", &arr[0]);
scanf("%d", &arr[1]);
scanf("%d", &arr[2]);
scanf("%d", &arr[3]);
scanf("%d", &arr[4]); /*scan all elements*/
srand(time(NULL)); /*set the seed*/
a = arr[rand() % ARR_SIZE(arr)];/*from .h file*/
printf("%d\n",a);/*print the random element generated above*/
return 0;
}
它为 5 个整数的数组选择一个随机整数。
我需要对其进行以下修改:
一个函数应该接受两个参数——一个空指针数组和数组长度。它应该 return 一个空指针。
该函数应该从数组中随机选择一个元素,return它。
int main() 必须为随机数生成器提供种子,然后调用该函数。然后最后它应该打印生成的随机元素。
不知道如何修改才能满足以上要求
random.h 文件内容如下:
#define ARR_SIZE(arr) ( sizeof((arr)) / sizeof((arr[0])) )
这应该可以解决问题。
void* getRandomElement(void** array, int size)
{
int* arr = (int*)*array;
return (void*)&(arr[rand() % size]);
}
int main(void)
{
int arr[5];
void* p = (void*)arr;
printf("enter 5 array elements\n");
scanf("%d", &arr[0]);
scanf("%d", &arr[1]);
scanf("%d", &arr[2]);
scanf("%d", &arr[3]);
scanf("%d", &arr[4]); /*scan all elements*/
srand(time(NULL)); /*set the seed*/
printf("random element %d\n", *(int*)getRandomElement(&p, ARR_SIZE(arr)));
return 0;
}
我有以下代码可以正常工作:
#include <stdio.h>
#include <stdlib.h>/*need this for rand()*/
#include "random.h"
#include <time.h>/*for time() function*/
int main()
{
int arr[5], a = 0;
printf("enter 5 array elements\n");
scanf("%d", &arr[0]);
scanf("%d", &arr[1]);
scanf("%d", &arr[2]);
scanf("%d", &arr[3]);
scanf("%d", &arr[4]); /*scan all elements*/
srand(time(NULL)); /*set the seed*/
a = arr[rand() % ARR_SIZE(arr)];/*from .h file*/
printf("%d\n",a);/*print the random element generated above*/
return 0;
}
它为 5 个整数的数组选择一个随机整数。
我需要对其进行以下修改:
一个函数应该接受两个参数——一个空指针数组和数组长度。它应该 return 一个空指针。
该函数应该从数组中随机选择一个元素,return它。
int main() 必须为随机数生成器提供种子,然后调用该函数。然后最后它应该打印生成的随机元素。
不知道如何修改才能满足以上要求
random.h 文件内容如下:
#define ARR_SIZE(arr) ( sizeof((arr)) / sizeof((arr[0])) )
这应该可以解决问题。
void* getRandomElement(void** array, int size)
{
int* arr = (int*)*array;
return (void*)&(arr[rand() % size]);
}
int main(void)
{
int arr[5];
void* p = (void*)arr;
printf("enter 5 array elements\n");
scanf("%d", &arr[0]);
scanf("%d", &arr[1]);
scanf("%d", &arr[2]);
scanf("%d", &arr[3]);
scanf("%d", &arr[4]); /*scan all elements*/
srand(time(NULL)); /*set the seed*/
printf("random element %d\n", *(int*)getRandomElement(&p, ARR_SIZE(arr)));
return 0;
}