引导案例:
数组的遍历:这里需要注意的是我们在遍历数组时是使用for循环,这里则需要计算数组的长度
计算公式:sizeof(数组名) / sizeof(数组的数据类型)
#include<stdio.h>
int main() {
int arr[] = { 1,2,3,4,5,6,7,8 ,9,10};
int length = sizeof(arr) / sizeof(int);
for (int i = 0; i < length; i++) {
printf("%d\n", arr[i]);
}
}
案例1:
给定一个数组求数组中的最大值
#include<stdio.h>
int main() {
int arr[] = { 33,78,48,39,10 };
int max = arr[0];
int length = sizeof(arr) / sizeof(int);
for (int i = 0; i < length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
printf("最大值为:%d", max);
在本代码中:将max < arr[i] 中的小于号换成大于号,求出来的则为最小值
案例2:
生成10个1-100之间的随机数存入数组,要求数组数不重复
(1)求出所有数据的和
(2)求所有数据的平均数
(3)统计多少个数据比平均值小
思路:本题主要重点是如何时数组不重复,也是本题首先要解决的问题
因为每次向数组添加一个随机数时我们都需要检测一下数组中是否有元素与其重复
所以我们需要创建一个函数用来检测元素是否重复,
如下代码中的fun函数将要添加的随机数与数值中的每一个元素都比较一遍
如果有相同的则返回1反之为0,这样当我们每次要添加元素时就可以通过
if来判断如果fun函数返回0则将随机数添加给数组,反之则一直更换随机数直到
fun函数返回0为止
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int fun(int arr[], int len, int num); //声明函数
int main() {
//设置种子
srand(time(NULL));
int arr[10] = {0};
//求数组的长度
int length = sizeof(arr) / sizeof(int);
for (int i = 0; i < length; ) {
int num = rand() % 100 + 1; //生成0-100之间的随机数
//判断新生成的随机数是否与数组中已经存储的元素重复,没有则继续添加
int x = fun(arr, length, num);
if (x==0) {
arr[i] = num; //如果检测无重复的元素就继续往下执行否则就一直跟换元素
i++; //直到元素不重复为止
}
}
int sum = 0;
for (int i = 0; i < length; i++) { //求出所有数据的和
sum += arr[i];
}
printf("所有数据的和为:%d\n", sum);
//求所有数据的平均数
int avg = sum / length;
printf("所有数据的平均数为:%lf\n", avg);
//统计多少个数据比平均值小
int count = 0; //用来记录有多少个数据比平均数小
for (int i = 0; i < length; i++) {
if (arr[i] < avg) {
count++;
}
}
printf("比平均数小的数有:%d\n", count);
}
int fun(int arr[], int len, int num) { //检测数组中的元素是否有重复的有则输出1
for (int i = 0; i < len; i++) { //反之则输出0 .其中的num为生成的随机数
if (arr[i] == num) {
return 1;
}
}
return 0;
}