数组概念
一组数据类型相同的元素的集合
(1)数据类型相同 (2)地址连续
定义
存储类型 数据类型 变量名;
int a;
存储类型 数据类型 数组名[元素个数];
int a[5];
存储类型:auto、static、extern、register
数据类型:数组中每一个元素的数据类型
数组的数据类型:数据类型 [元素个数]; int [5]
数据类型:去掉变量名就是数据类型
数组名:(1)数组名代表的是数组首元素的地址(2)代表的是整个数组
元素个数:必须是一个确定的数(常量)
数组的访问
数组名[下标];
注意:下标必须从0开始
输入、输出
冒泡排序
思想:从左至右两两依次比较,如果前一个数比后一个数大的话就交换位置,否则不变
字符数组
字符数组的本质:字符串(以’\0’做为结束符)
存储类型 数据类型 数组名[元素个数];
char str[5] = {0};//最多能存放4个元素,留一个位置给’\0’
char str[6] = {‘h’,’e’,’l’,’l’,’o’,’\0’};
char str[6] = {“hello”};
字符数组的输入输出
字符串的输出
格式化符:%s
puts(数组名);
功能:将数组中的字符串打印到终端上,会自动添加换行符
注意:遇到’\0’结束
字符串的输入
gets(数组名);
功能:将键盘输入的字符串保存到数组中,会自动在末尾添加’\0’
注意:gets不会进行越界检查,输入的时候注意不要越界
总结:
1、scanf和gets的区别:
scanf是以空格、回车、Tab键作为结束符,而gets是以回车作为结束符
缓冲区:
gets输入完成会自动清空缓冲区
scanf输入完成之后,缓冲区会遗留空格、回车、Tab键
gets输入之前,先会查看缓冲区中是否有内容,有的话直接拿过来使用
scanf是标准输入函数,每一次输入都需要从键盘获取
puts和printf的区别:
puts会自动添加换行符,而printf不会