云计算百科
云计算领域专业知识百科平台

【DAY5】C语言基础:数组!一维整型数组全解析!

为加强印象,代码纯手敲,若有错误,评论提出

一维整型数组

1.定义方式

数据类型 数组名 [元素个数]

示例: int a[5 ];

注意:元素个数必须为常量、常量表达式

2.数组元素的访问

数组名 [元素下标]

注意:1.元素下标:0—元素个数-1

           2.元素下标可以为变量

3.数组元素的初始化

初始化  !=  赋值

1)全部初始化

例:

int a[5] = {1,2,3,4,5};

2)局部初始化

例:

int a[5] = {1,2,3};

注意:第3、4位的值被初始化位0

           没有被初始化的元素,默认初始化位0

3)默认初始化

int a[] = {1,2,3,4};

注意:由大括号里的初值决定元素个数

4)数组的存储

1. 空间大小

数组所占空间大小 == 每个元素所占空间大小 * 元素个数

2.获得数组元素个数的方法:

               int  len =  sizeof(a) / sizeof(a[0])

3.数组存储的特性:
        1) 连续性:数组存放元素空间连续
        2)有序性:数组存放元素的顺序有序,a[0] a[1] a[2] a[3] a[4]
        3)单一性:数组元素类型一致

4.应用

1)数组从终端接收数据

#include <stdio.h>
int main(void)
{
int i = 0;
int a[6] = {0};
int len = sizeof(a) / sizeof(a[0]);

for(i = 0; i < len; i++)
{
scanf("%d",&a[i]);

print("a[%d] = %d\\n",i,a[i]);
}

return 0;
}

2)找出数组中的最大值、最小值

#include <stdio.h>
int main(void)
{
int i = 0;
int n= 0;
int min = 0;
int max = 0;
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);

for(i = 0; i < len ; i++)
{
scanf("%d", &a[i]);
printf("a[%d] = %d",i,a[i]);
}

min = a[0];
for(i = 1; i < len; i++)
{
if(a[i] < min)
{
min = a[i];
}
}
printf("最小值:%d",min);

max = a[0];
for(i = 1; i < len ; i++)
{
if(i = 0; i < len; i++)
{
if(a[i] > max)
{
max = a[i];
}
}
}
printf("最大值:%d",max);

return 0;
}

3)找出最大值、最小值的下标

#include <stdio.h>
int main(void)
{
int i = 0;
int minN = 0;
int maxN = 0;
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0])

for(i = 0; i <len ;i++)
{
scanf("%d",&a[i]);
printf("a[%d] = %d",i,a[i]);
}

minN = 0;
for(i = 0; i < len; i++)
{
if(a[minN] < a[i])
{
minN = i;
}
}
printf("最小值下标:%d\\n",i);

maxN = 0;
for(i = 0; i < len; i++)
{
if(a[maxN] > a[i])
{
maxN = i;
}
}
printf("最大值下标:%d\\n",i);

return 0;
}

4)数组的倒置(逆序)

                  a[0]  a[1]   a[2]  a[3]   a[4]

若有5个数:1,  2,   3,  4,    5

a[0] <-> a[4]

a[1] <-> a[3]

需要交换2次

若有6 个数需要交换2次

       7 个数需要交换3次

故交换次数为:元素个数 / 2

#include <stdio.h>
int main(void)
{
int i = 0;
int tmp = 0;
int a[6] = {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("a[%d] = %d",i,a[i]);
}

return 0;
}

5)数组的冒泡排序

        先把a[0] 的值,依次与其他位置的值比较,若比其他位置的值大,则与其交换位置

        要找(len – 1)次大的值!

#include <stdio.h>
int main(void)
{
int i = 0;
int n = 0;
int tmp = 0;
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);

for(i = 0; i < len; i++)
{
scanf("%d",&a[i]);
}

for(n = 0; n < len – 1; n++)
{
for(i = 0; i < len – 1 – n; 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;
}

6)数组的选择排序

        把a[0]位置的值,依次和后面位置的值比较,找出最小的值替换到a[0]的位置,并固定在这;

        要找(len -1) 次小的值

#inculde <stdio.h>
int main(void)
{
int i = 0;
int n = 0;
int tmp = 0;
int minN = 0;
int a[5] = {0};
int len = sizeof(a) / sizeof(a[0]);

for(i = 0; i < len – 1; i++)
{
scanf("%d",&a[i]);
}

for(n = 0; n < len – 1; n++)
{
minN = n;
for(i = 1 + n; i < len; i++)
{
if(a[minN] > a[i])
{
minN = i;
}

if(minN != i)
{
tmp = a[i];
a[i] = a[minN];
a[minN] = tmp;
}
}
}

for(i = 0; i < len; i++)
{
printf("%d ",a[i]);
}
return 0;
}

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【DAY5】C语言基础:数组!一维整型数组全解析!
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!