数组:相同类型元素的集合
定义:
type name[numbers];
初始化:
type name[numbers] = {}; //每一个元素的初始值为0
type name[numbers] = {0}; //每一个元素的初始值为0
type name[numbers] = {1}; //第一个元素的初始值为1,其他都为0
type name[numbers] = {1,3,5};//每个元素初始化,逗号分隔
使用:
通过数组的下标索引值取得数组中的每一个成员索引是从0开始的,下标索引值的取值范围【0,n-1】
注意:不要越界
运算符 [ ]: a[b] ==> *(a+b) ==> b[a];
#include <stdio.h>
int main()
{
//索引连续,循环遍历索引访问数组中的每一个元素
int arr[5] = {};
int i;
for(i=0;i<5;i++)
printf("%d ",arr[i]);
printf("\n")
//数组的每一个成员赋值
for(i=0;i<5;i++)
{
arr[i] = i+1;
//*(arr+i) = i+1;
//i[arr] = i+1;
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
随机数的产生:
1.通过函数产生:
srand( );
rand( );
//具体用法可查看man手册
2.时间戳:
当前时间距离1970.1.1 00:00:00经过了多少秒
time(NULL);
//具体用法可查看man手册
3.程序运行是的id不同:
即进程ID
getpid(2);
//具体用法可查看man手册
用法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/types.h>
#include <unistd.h>
#define NUM 10
int main(void)
{
int arr[NUM] = {};
int i;
//srand(time(NULL));
srand(getpid());
for (i = 0; i < NUM; i++) {
arr[i] = rand() % 100;
}
// 访问
for (i = 0; i < NUM; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
数组练习题
1.随机产生一个由10个整型元素组成的数组,求得此数组的最大最小及平均值,并将最大最小值进行交换
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main(void)
{
int arr[N] = {};
int i;
int max_index, min_index;
double sum;
int tmp;
srand(time(NULL));
for (i = 0; i < N; i++) {
arr[i] = rand() % 100;
printf("%d ", arr[i]);
}
printf("\n");
// 最大最小值
min_index = max_index = 0;
sum = arr[0];
for (i = 1; i < N; i++) {
if (arr[i] > arr[max_index]) {
max_index = i;
}
if (arr[i] < arr[min_index]) {
min_index = i;
}
sum += arr[i];
}
printf("最大值:%d, 最小值:%d, 平均值:%lf\n", arr[max_index], arr[min_index], sum / N);
// 交换
tmp = arr[max_index];
arr[max_index] = arr[min_index];
arr[min_index] = tmp;
for (i = 0; i < N; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
2.运用函数将任意给定的整型数组的最大值求出并返回
#include <stdio.h>
int maxofarr(int arr[], int n);
int main(void)
{
int a[10] = {100, 2, 4, 1, 111, 88, 78, 98, 23, 99};
printf("%d\n", maxofarr(a, 10));
return 0;
}
/*
函数功能:将任意给定的整型数组的最大值求出并返回
*/
int maxofarr(int arr[], int n)
{
int max = arr[0];
int i;
for (i = 1; i < n; i++)
{
if (arr[i] > max)
max = arr[i];
}
return max;
}