数组遍历与随机数

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

// 判断数组中有没有某个数
int contains(int array[], int number, int count);

int main(void) {
  /*
   * 需求:生成10个1~100之间的随机数存入数组,要求数据不能重复
   * 1) 求出所有数据的和
   * 2) 求所有数据的平均数
   * 3) 统计有多少个数据比平均数小
   * */
  srand(time(NULL));
  int arr[10] = {0};
  int len = sizeof(arr) / sizeof(arr[0]);
  int sum = 0;
  double average;
  int counter = 0;

  // 求所有数据的和
  for (int i = 0; i < len; i++) {
    // 判断数据是否重复
    int temp = rand() % 100 + 1;
    if (contains(arr, temp, i) == 0) {
      arr[i] = temp;
    } else {
      i--;
      continue;
    }
    sum += arr[i];
    printf("%d ", arr[i]);
  }

  /*
  for (int i = 0; i < len; ) {
    // 判断数据是否重复
    int temp = rand() % 100 + 1;
    if (!contains(arr, temp, i)) {
      arr[i] = temp;
      i++;
    }
    sum += arr[i];
    printf("%d ", arr[i]);
  }
  * */

  // 求所有数据的平均数
  average = 1.0 * sum / len;
  printf("\nsum = %d, average = %.1lf\n", sum, average);

  // 统计有多少个数据比平均数小
  for (int i = 0; i < len; i++) {
    if (arr[i] < average) {
      counter++;
      printf("%d ", arr[i]);
    }
  }
  printf("\n这%d个数据比平均数%.1lf小\n", counter, average);

  return 0;
}

int contains(int array[], int number, int count) {
  int is = 0;
  for (int i = 0; i < count; i++) {
    if (number == array[i]) {
      is++;
      break;
    }
  }

  return is;
}
posted @ 2026-01-14 22:30  Zhuye_inking  阅读(2)  评论(0)    收藏  举报