1. 一维数组的定义
相同类型有限数据的一个集合
数据类型 数组名[元素个数];
注意:
-
数组中的元素必须为同一类型
-
元素个数有限个
-
数组定义时,元素个数必须为常量或者常量表达式,不能为变量
2. 数组元素的访问
数组名[元素下标]
元素下标可以为常量、变量、或常量变量表达式
3. 数组元素的初始化
3.1 全部初始化
int a[5] = {1, 2, 3, 4, 5};
3.2 局部初始化
int a[5] = {1, 2, 3};
没有给定初值的元素统一给0值
3.3 默认初始化
int a[] = {1, 2, 3, 4, 5};
注意:初始化 不等同于 赋值
4. 数组的储存
4.1 连续性
数组存储空间连续
4.2 有序性
数组存放顺序有序
注意:计算元素个数方法 sizeof(a) / sizeof(a[0]);
5. 数组的常见操作
5.1 获得最大值
cpp
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int i = 0;
int min = 0;
int len = sizeof(a) / sizeof(a[0]);
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
max = a[0];
for (i = 1; i < len; i++)
{
if (a[i] > max)
{
min = a[i];
}
}
printf("max = %d\n", max);
return 0;
}
5.2 获得最小值
cpp
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int i = 0;
int min = 0;
int len = sizeof(a) / sizeof(a[0]);
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
min = a[0];
for (i = 1; i < len; i++)
{
if (a[i] < min)
{
min = a[i];
}
}
printf("min = %d\n", min);
return 0;
}
5.3 获得最大值下标
cpp
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int i = 0;
int max = 0;
int len = sizeof(a) / sizeof(a[0]);
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
max = a[0];
for (i = 1; i < len; i++)
{
if (a[i] > max)
{
max = i;
}
}
printf("max = %d\n", max);
return 0;
}
5.4 获得最小值下标
cpp
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int i = 0;
int min = 0;
int len = sizeof(a) / sizeof(a[0]);
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
min = a[0];
for (i = 1; i < len; i++)
{
if (a[i] < min)
{
min = i;
}
}
printf("min = %d\n", min);
return 0;
}
5.5 数组元素倒置
cpp
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int i = 0;
int tmp = 0;
int len = sizeof(a) / sizeof(a[0]);
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < len/2; i++)
{
tmp = a[i];
a[i] = a[len-1-i];
a[len-1-i] = tmp;
}
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
putchar('\n');
return 0;
}
5.6 冒泡排序法
cpp
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int i = 0;
int j = 0;
int len = sizeof(a) / sizeof(a[0]);
int tmp = 0;
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < len-1; i++) //min -> max
{
for (j = 0; j < len-1-i; j++)
{
if (a[j] > a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
putchar('\n');
return 0;
}
5.7 选择排序法
cpp
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int i = 0;
int j = 0;
int len = sizeof(a) / sizeof(a[0]);
int tmp = 0;
int min = 0;
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < len-1; i++) //min -> max
{
min = i;
for (j = i+1; j < len; j++)
{
if (a[j] < a[min])
{
min = j;
}
}
if (min != i)
{
tmp = a[min];
a[min] = a[i];
a[i] = tmp;
}
}
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
putchar('\n');
return 0;
}