C语言程序设计课程小结——数组

  数组用于保存大量同类型的相关数据,简单的将就是数据容器。

一·数组的特点:
1.数组内的所有元素的数据类型是相同的;
2.数组是存放数据的容器,需要语句引用其中的元素;
3.数组的长度是一定的,这在定义时就已经确定,且不可更改。
二.数组的定义和初始化
数据类型 数组名 [整数1][整数2]…[整数n]
在[ ]中的脚标代表数组中元素的数量,有几个[ ]就是几维数组。特别注意的是,下标是从零开始的,表示的是与第一个元素的距离,下标表示数组的大小,必须为大于零的常量,不能为变量,因此,数组大小一般用宏定义。可以像使用普通变量一样使用下标。下标越界是非常严重的错误,因为下标赋予了指定的存储空间给数组,如果超出这个范围,无法掌控。
#define N 5;int a[N];
数组在定义后是一组随机数需要进行初始化,可以对每个元素依次进行初始化,也可以一次性初始化相同的值,还可以无下标进行初始化(一般不使用)。
三.数组排序
1.选择排序
一种简单直观的排序算法。它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
运行过程:最初扫描所有的元素找到最值,将最值放在数组前段(后端),然后再在剩余的元素中找最值,放在之前寻找到的元素之后,直到最后一个。
宏观过程:
在这里插入图片描述
2.冒泡排序
工作原理:从前往后,依次比较相邻的两个数,把较大的数放到后面。一次循环,可以在当前最末尾位置得到一个当前最大值。
运行过程:(1)比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。(3)针对所有的元素重复以上的步骤,除了最后一个。(4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
在这里插入图片描述
3.插入排序
工作原理:从第二个元素开始,将当前元素插入到前面对应位置,使当前元素i和之前元素形成有序数组。即插扑克牌原理。
运行过程:第一个元素看做已经完成排序,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
在这里插入图片描述
四.c++sort函数的使用
#include
using namespace std;(sort函数默认升序排序)
sort(a,a+n);//两个参数分别为待排序数组的首地址和尾地址。如果要自定义排序方式,需要添加函数:
bool compare(int a,int b)
{return a>b;}//按降序排列
五.字符型数组和字符串类型
1.数据类型为char;
2.初始化方式与普通数组相同,当输入的字符数小于数组大小时,数组会默认填充’\0’;
3.每个字符型数组中的元素只能是一个字符,一个一维数组表示一条字符串,char ch[5]=“a,b,c,d”
二维数组可以存放若干字符串。
4.字符常量和字符串常量的区别
(1)字符常量是单引号引起的一个字符;
字符串常量是双引号引起的若干个字符;
(2)字符常量相当于一个整型值,可以参加表达式的运算;
(3)字符串常量代表一个地址值(该字符串在内存中存放的位置);
(4)字符常量只占一个字节;字符串常量占若干个字节,(至少一个字符结束标志,\0)
5.字符串的输入与输出
(1)scanf语句
格式:scanf(“%s”,字符数组名);
说明:①系统会自动在输入的字符串常量后添加‘\0’标志,因此输入时,仅输入字符串的内容即可。②输入多个字符串时,以空格分隔。
(2)gets语句
格式:gets(字符数组名);
说明:使用gets只能输入一个字符串。读入的是一整行,包括空格。
(3)使用printf语句或puts语句,二者等价。
6.使用字符串必须引用cstring库函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值