#include
#include
#include
#define MIN 1 // 数字的最大值至少为1 (0无意义), 数字个数最小值
#define MAX 100 // 数字的最大值
#define ARRMAX 100 // 数字的最大个数
void arr_rand(int * p, int max, int size)
{
int i;
++max; // max = max + 1
for(i = 0; i < size; i++) //
p[i] = rand() % max; // 0 - max
}
void show(int * p, int size)
{
int i;
for(i = 0; i < size; i++)
{
printf("%3d ", p[i]);
if((i+1) % 8 == 0)
putchar('\n');
}
putchar('\n');
}
int plural(int * ar, int max, int size)
{
int i;
int t;
int plu;
++max;
int * p = (int *)malloc(sizeof(int *) * max); // 用于统计数字个数
for(i = 0; i < max; i++) // 初始化数组
p[i] = 0;
for(i = 0; i < size; i++) // 数字个数累积
p[ar[i]]++;
/* show(p, max); */
for(i = 0, t = 0; i < max; i++) // 取数组中最大数
if(p[i] > t)
{
t = p[i];
plu = i;
}
free(p);
return plu;
}
/******************* Main ********************/
int main(void)
{
int max;
int size;
int * p;
srand((unsigned int)time(NULL));
/* max 数字的范围 0 到 max */
/* size 是要生成的数字个数 */
while(scanf("%d %d", &max, &size) == 2
&& max >= MIN && max <= MAX
&& size >= MIN && size <= ARRMAX )
{
while(getchar() != '\n');
p = (int *)malloc(sizeof(int) * size);
arr_rand(p, max, size);
/* show(p, size); */
printf("%d\n", plural(p, max, size));
free(p);
}
puts("\nDone.");
return 0;
}
[此贴子已经被作者于2007-11-20 16:50:53编辑过]