整理了一下老师的思路,自己写的答案
随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和
#include <stdlib.h>
void algorithm(int arr[],int n)
{
int min,max,sum = 0;
float avg;
min = max = arr[0];
for (int i = 0; i < 20; i++) {
// 最大值,最小值
if (arr[i] > max) {
max = arr[i];
}
else if (arr[i] < min){
min = arr[i];
}
// 求和
sum += arr[i];
}
// 平均值
avg = (float)sum / n;
printf("\n最大值是:%d\n",max);
printf("最小值是:%d\n",min);
printf("元素和是:%d\n",sum);
printf("平均值是:%.4f\n",avg);
}
// 生成随机数
void createArr(int arr[])
{
for (int i = 0; i < 20; i++) {
arr[i] = arc4random_uniform(40)+10;
}
}
int main()
{
int arr[20] = {0};
// 获得数组
createArr(arr);
printf("随机函数是:\n");
for (int i =0; i < 20; i++) {
printf("%d\t",arr[i]);
}
// 计算
algorithm(arr,20);
return 0;
}
13.
/*
有1000000个数,每个数取值范围是0-999999,找出其中重复的数。
*/
#define NUM 1000000
#include <stdio.h>
include <stdlib.h>
int main(){
int arr[NUM] = {0};
// 计算出现次数
for (int i = 0; i < NUM; i++) {
int count = arc4random_uniform(NUM);
arr[count - 1]++;
}
for (int i = 0; i < NUM; i++) {
if (arr[i] > 0) {
printf("num %d repeats %d times.\n",i+1,arr[i]);
}
}
return 0;
}
|
|