【00005】

【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;

}