文章目录
Day5
1.数组
1.1 概念
一组数据类型相同的元素的集合
(1)数据类型相同 (2)地址连续
1.2 定义
存储类型 数据类型 变量名;
int a;
存储类型 数据类型 数组名[元素个数];
int a[5];
存储类型:auto、static、extern、register
数据类型:数组中每一个元素的数据类型
数组的数据类型:数据类型 [元素个数]; int [5]
数据类型:去掉变量名就是数据类型
数组名:(1)数组名代表的是数组首元素的地址
(2)代表的是整个数组
元素个数:必须是一个确定的数(常量)
1.3 初始化
1.3.1 部分初始化
int a[5]={1,2,3}
a[3]=a[4]=0
未初始化部分的值为0,因此我们利用这一特点对数组中的元素清零.
1.3.2 全部初始化
int a[5]={1,2,3,4,5};
全部初始化的时候,数组元素的个数可以省
int []={1,2,3};
1.4 数组的访问
数组名[下标];
下标必须从0开始;
1.5 数组的输入输出
案例:
1、 int a[5];
a[5] = {1,2,3,4,5}; //error
2、 int a[ ] = {0}; //表示数组中只有一个元素,但是这样没有意义
3、 int a[5];
a = {1,2,3,4,5};//error 数组名代表的是数组首元素的地址
1.6 冒泡排序
思想:从左至右两两依次比较,如果前一个数比后一个数大的话就交换位置,否则不变
2.字符数组
字符数组的本质:字符串(以\0作为结束符)
存储类型 数据类型 数组名[元素个数]
char str[5] = {0};//最多能存放4个元素,留一个位置给’\0’
char str[6] = {‘h’,’e’,’l’,’l’,’o’,’\0’};
char str[6] = {“hello”};
2.1 字符数组的输入输出
2.1.1 字符数组的输出
格式化符 %s;
puts(数组名);
功能:将数组中的字符串打印到终端上,会自动添加换行符
注意:遇到’\0’结束
2.1.2 字符串的输入
gets(数组名);
功能:将键盘输入的字符串保存在数组中,会自动在末尾添加‘\0’;
注意:gets不会进行越界检查,输入的时候注意不要越界
总结:
1、scanf和gets的区别:
scanf是以空格、回车、Tab键作为结束符,而gets是以回车作为结束符
缓冲区:
gets输入完成会自动清空缓冲区
scanf输入完成之后,缓冲区会遗留空格、回车、Tab键
gets输入之前,先会查看缓冲区中是否有内容,有的话直接拿过来使用
scanf是标准输入函数,每一次输入都需要从键盘获取
Day6
1.字符串的处理函数
1.1 strlen
strlen(数组名)
功能:求字符串的实际长度.
返回值:返回字符串的实际长度,不包括‘\0’
sizeof和strlen的区别:
1、sizeof是运算符,而strlen是函数
2、sizeof求得的是内存空间的大小,strlen求得的是字符串的实际长度(不包含’\0’)
案例:求字符串的实际长度(不使用库函数)
1.2 strcpy拷贝函数
strcpy(数组1,数组2/字符串);
功能:将数组2或者字符串2拷贝到数组1中
注意:(1)数组1足够大
(2)完全拷贝,会将数组2/字符串2的‘\0‘也拷贝过去
strncpy(数组1,数组2/字符串,n);
功能:将数组2/字符串2的前n个字符拷贝到数组1中
注意:不包含’\0’
1.3 字符串的连接函数
strcat(数组1,数组2/字符串2);
功能:将数组2/字符串2连接到数组1之后
注意:(1)数组1的容量足够大
(2) 数组1中的‘\0’会被覆盖
strncat(数组1,数组2/字符串2,n);
功能:将数组2/字符串2的前n个字符连接到数组1之后
1.4 字符串的比较函数
strcmp(数组1/字符串1,数组2/字符串2);
功能:比较两个字符串的大小
返回值:
大于0:字符串1 > 字符串2
等于0:字符串1 == 字符串2
小于0:字符串1 < 字符串2
比较规则:从左至右,依次比较每个字符的ASCII码值,直到遇到不同的ASCII码或者’\0’结束
strncmp(数组1/字符串1,数组2/字符串2,n);
功能:比较字符串的前n个字符的大小
2.二维数组
2.1 概念
元素为一维数组的数组(数组的数组)
(1)数据类型相同 (2)地址连续
2.2 定义
存储类型 数据类型 数组名[行数][列数];
行数:有几个一维数组
列数:一维数组中有几个元素
int a[2][3];
//定义了一个二维数组,该数组有两个元素,每一个元素是由3个int型的元素组成的
//定义了一个二维数组,该数组有两个元素,每一个元素是由3个int型的元素组成的
2.3 初始化
2.3.1 部分初始化
int a[2][3] = {1,2,3};
2.3.2 全部初始化
int a[2][3] = {1,2,3,4,5,6};
int a[2][3] = {{0},{4,5,6}};
int a[2][ ] = {1,2,3,4,5,6};//error 列数不能省
int a[ ][3] ={1,2,3,4,5};//有2个一维数组,每一个一维数组中有3个元素
注意:二维数组的行数可以省略,但是列数不能省
2.4 访问
数组名[下标];
注意:下标必须从0开始
2.5 输入输出
案例:打印杨辉三角(8*8)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3.二维字符数组
char str[30] = {0};
scanf(“%s”,str);
printf(“%s”,str);
存储类型 数据类型 数组名[行数][列数];
char str[5][20]; //定义了一个长度为5的数组,数组中的每一个元素又是一个长度为20的char型元素