C语言基础 一维数组


一、一维数组(掌握)

1、数组的定义:具有相同类型的数据的集合

【特点】(1)连续存储数据,访问比较简便。

                 (2)一次存储多个数据。

2、认识数组:

(1)数组的声明:

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

【注意】1、数组元素个数是一个常量表达式

                 2、数组名是一个常量,因为它是数组的首地址。

数组的类型: 数据类型 [元素个数]  (复合类型,是由基础类型构成的自定义类型),相当于声明了多个元素。

(2)计算数组的大小

数组每个元素类型的大小*数组元素的个数,可以使用sizeof求出。

(3)计算出数组元素个数

数组元素个数 = 数组大小/数组每个元素类型的大小

3、数组的初始化

(1)完全初始化

(2)部分初始化

4、赋值

不能对数组整体赋值,只能对每个元素单独赋值。

 

练习:1、从终端输入10个数,保存在一个整型数组里,然后以赋值的形式打印出数组下标及对应的元素。

例如 a[0]=5

2、int b[5]={1,2,3,4,5}; int a[5];将b中的所有元素拷贝到a中。

3、从终端输入6个数,找出其中最大的那个数,输出这个数和其下标。

【扩展】数组的下标(索引)

数组的下标从0开始,到数组元素个数-1结束

数组的下标在非声明时,可以是表达式。

 

【扩展】字符数组

(1)定义:由字符元素构成的数组

(2)声明: char ch[5];

(3)初始化:

如果要使用字符串给字符数组初始化,则数组实际元素个数要多一个(多的那个存储’\0’ )。

练习:1、定义一个字符数组,输入10个字符到数组中,将字符数组内容逐个输出,每个字符之间用空格隔开。

A B C D E F G H I J

A B C D E F G H I J

 

二、数组排序(掌握)

1、冒泡排序

基本思想:比较相邻的元素,根据升序或降序要求,决定元素是否交换。

对升序:

(1)找到所有元素中的最大的,放在最后一个位置,最后一个位置不再变动。

(2)找到剩余元素中最大的,放在倒数第二个位置上,倒数第二个位置也不再变动。

(3)以此类推,直到按照升序排序完成。

升序时采用大数沉底法,降序时采用小数上升法。

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

 

升序排序

第一轮

5和4比较,交换,4,5,3,2,1

5和3比较,交换,4,3,5,2,1

5和2比较,交换,4,3,2,5,1

5和1比较,交换,4,3,2,1,5

 

冒出了5

 

第二轮 4,3,2,1,5

4和3比较,交换,3,4,2,1,5

4和2比较,交换,3,2,4,1,5

4 和1比较,交换,3,2,1,4,5

 

第三轮 3,2,1,4,5

3和2比较,交换, 2,3,1,4,5

3和1比较,交换,2,1,3,4,5

 

第四轮 2,1,3,4,5

2和1比较,交换,1,2,3,4,5

 

双层循环

数组名a

N个元素

外层循环:控制轮数

for(int i = 0;i<N-1;i++)

内层循环:控制比较和交换的过程

for(int j =0;j<N-1-i;j++)

{

      //考虑升序还是降序

      if(a[j]>a[j+1])

      {

           //交换过程,采用临时变量保存某一个元素

            int temp = a[j];

            a[j] = a[j+1];

            a[j+1] = temp;

      }

}

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值