- #include <stdio.h>
- #include <stdlib.h>
- #define COUNT 1000000//宏定义
- int main(void)
- {
- int a[COUNT] = {0};//这个就是数组初始化,数组元素全为0
- /*
-
- */
- for (int i = 0; i < COUNT; i++) {
- int number = arc4random_uniform(5);
- /*这个循环作用就是循环1000000次,每次随机生成0~~4之间的随机数,赋值给number
- */
- a[number] ++;
- /*注意这个语句作用,理解数组下标和数组元素的值区别,number是数组下标,a[number]是下标所对应数组元素值,这个数组范围是0~~999999,当随机生成number值等于0~~999999之间数时候,该下标对应数组元素自增1,
- */
- }
- for(int i = 0 ;i < COUNT;i++){
- /*这里就是简单遍历数组,当数组元素值补位 0 就输出里面的值(这个值就是他重复出现的次数)
- */
- if (a[i] > 1) {
- printf("%d repeats %d times\n",i+1,a[i]);
- }
- }
- return 0;
- }
- /*
- 运算结果:
- 1 repeats 200340 times
- 2 repeats 199858 times
- 3 repeats 200285 times
- 4 repeats 199432 times
- 5 repeats 200085 times
- 最后我想吐槽给出答案的人,
- 1 这段代码定义这么那么大数组,却仅出现0~~4随机数,也就是说 5~~999999数组元素都是不会重复出现的,这样居心何在啊???
- 2 printf("%d repeats %d times\n",i+1,a[i]);这里输出为何还要i+1?不直接输出i,难道故意迷惑人的么 - -
- */
复制代码 |