【00005】
二、C语言
2.4数组
1.数组
分为一维数组,二维数组,多维数组
(1)一维数组
数据类型 数组名[元素个数];
数组名:与变量名要求一致
元素个数必须为常量,不能是变量或变量表达式
1.定义
数组是一组相同类型数据的有限集合
2.性质
单一性
连续性
有序性
(2)元素访问
数组名[元素下标]
元素下标为:0 -- 元素个数-1 ,避免访问越界
元素下标可以为常量、变量、表达式
(3)数组的存储
int a[n];
数组所占空间大小 == 数据类型所占空间大小 * 元素个数
获得数组元素个数的方法
sizeof(a) / sizeof(a[0])
(4)数组初始化
初始化 != 赋值
不能对数组整体做操作,只能依次对所有元素操作
1.全部初始化
int a[5] = {1, 2, 3, 4, 5};
2.部分初始化
int a[5] = {1, 2, 3};
3.默认初始化
int a[] = {1, 2, 3, 4, 5};
(5)数组常见算法
1.找最大值
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);
int i = 0;
int max = 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 = a[i];
}
}
printf("max = %d\n", max);
return 0;
}
2.找最小值的下标位置
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);
int i = 0;
int minno = 0;
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
minno = 0;
for (i = 1; i < len; i++)
{
if (a[i] > a[minno])
{
minno = i;
}
}
printf("min = %d, no = %d\n", a[minno], minno);
return 0;
}
3.数组元素的倒置
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);
int i = 0;
int tmp = 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];
}
for (i = 0; i < len; i++)
{
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}
4.数组的排序
1.冒泡排序
#include <stdio.h>
int main(void)
{
int i = 0;
int j = 0;
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);
int tmp = 0;
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
for (j = 0; j < len-1; j++)
{
for (i = 0; i < len-1-j; i++)
{
if (a[i] > a[i+1])
{
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
}
for (i = 0; i < len; i++)
{
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}
2.选择排序
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);
int i = 0;
int j = 0;
int min = 0;
int tmp = 0;
for (i = 0; i < len; i++)
{
scanf("%d", &a[i]);
}
for (j = 0; j < len-1; j++)
{
min = j;
for (i = j+1; i < len; i++)
{
if (a[i] < a[min])
{
min = i;
}
}
if (min != j)
{
tmp = a[j];
a[j] = a[min];
a[min] = tmp;
}
}
for (i = 0; i < len; i++)
{
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}