请用c语言写出以下程序:需求是生成10个1到100之间的随机数存入数组,要求数据不能重复.要求1:求出所有数据的和.2:求所有数据平均数。3.统计有多少个数字比平均数小(要求用函数方法来完成)
时间: 2024-10-04 21:02:48 浏览: 37
以下是满足你需求的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 函数声明
int generate_random(int* arr, int size);
double calculate_average(int* arr, int size);
int count_numbers_less_than_average(int* arr, int size);
int main() {
srand(time(0)); // 初始化随机种子
int numbers[10];
if (generate_random(numbers, 10) == -1) {
printf("Error generating unique random numbers.\n");
return 1;
}
// 求出所有数据的和
int sum = calculate_sum(numbers, 10);
printf("Sum of the numbers: %d\n", sum);
// 求所有数据平均数
double average = calculate_average(numbers, 10);
printf("Average of the numbers: %.2f\n", average);
// 统计有多少个数字比平均数小
int less_than_avg = count_numbers_less_than_average(numbers, 10);
printf("Number of numbers less than the average: %d\n", less_than_avg);
return 0;
}
// 生成随机数并保证不重复
int generate_random(int* arr, int size) {
int i, temp;
for (i = 0; i < size; ++i) {
do {
arr[i] = rand() % 100 + 1;
} while (i > 0 && arr[i] == arr[i - 1]);
if (i == 0 || arr[i] != arr[i -1; // 如果没找到所有不重复的数,则返回-1
}
return 0;
}
// 计算数组元素总和
int calculate_sum(int* arr, int size) {
int sum = 0;
for (int i = 0; i < size; ++i)
sum += arr[i];
return sum;
}
// 计算平均值
double calculate_average(int* arr, int size) {
return (double)calculate_sum(arr, size) / size;
}
// 判断数组中有多少个数字小于平均数
int count_numbers_less_than_average(int* arr, int size) {
int count = 0;
for (int i = 0; i < size; ++i) {
if (arr[i] < calculate_average(arr, size))
count++;
}
return count;
}
```
这个程序首先生成10个1到100之间的不重复随机数,然后计算它们的和、平均数,并统计有多少个数字比平均数小。
阅读全文