接上篇:
插入排序:
DABC
基本思想:
在一个有序的序列中,找到要插入的位置,进入数据插入
//原地插入排序
int j = 0;
for (i = 1; i < n; ++i)
{
int t = a[i];
j = i;
while (j > 0 && t < a[j-1])
{
a[j] = a[j-1];
--j;
}
a[j] = t;
}
1.二维数组
二维数组的定义
适用于:多个同类型数据 批量处理的情况 。
类型说明符 数组名 [常量表达式][常量表达式];
(1) (2) (3)
(1).类型说明符 ---表示二维数组中数据元素的类型
(2).数组名 ---标识符
(3).[常量表达式][常量表达式] //
第1维 第2维
行 列
二维数组的本质 --- 实际上一个一维数组 ,c语言中并不存在真正的二维数组
二维数组元素的访问:
数组名[第一维下标][第二维下标]
数组名[行][列]
全部初始化
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; //全部初始化
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //全部初始化
部分初始化
int a[3][4] = {1,2,3,4,5,6}; //全部初始化
int a[3][4] = {{1,2},{5,6},{9,10,11,12}}; //全部初始化
2.字符串:
char ch[10] = {'h','e','l','l','o'};
//主要用途: 希望可以处理字符串数据
"hello" //一串字符
"hello" //字符串
(1).字符串 -- 按照一维字符型数组的方式存储的
(2).
char ch[10] = {'h','e','l','l','o'}; //字符型数组
"hello" //字符数组的形式存储的
(3).字符串
都有一个结束标志
(4).字符串 是一个特殊的 字符数组
自带了 结束标志
操作字符串,更关心是 有没有到达结束标志
而字符数组,更多的是作为了存放字符串数据的一个空间
字符数组 和 字符串:
char ch[ ] = {'h','e','l','l','o'};
char ch[ ] = "hello";
'h','e','l','l','o',0, 0,0,0,0
#include <stdio.h>
char *gets(char *s);
功能:
从键盘输入一个字符串
参数:
s //表示存放字符串的空间的首地址
返回值:
char * 代表存放字符串的空间的首地址
int puts(const char *s);
功能:
往屏幕上输出一个字符串
参数:
s //表示存放字符串的空间的首地址
返回值:
成功 返回非负值
失败 返回EOF //(-1)
数组长度: 数组能容纳的元素的个数
size_t strlen(const char *s);
功能:
统计字符串长度
参数:
s //表示存放字符串的空间的首地址
返回值:
表示 字符串长度
strcpy
//逐个字符赋值过去
//遇到'\0'
//最终str2还需要有'\0'作为结束标志 --手动添加一个'\0'
char *strcpy(char *dest, const char *src);
功能:
拷贝字符串
将src中的字符串拷贝到dest中
参数:
src //表示存放 源字符串的空间的首地址
dest //表示存放 目的字符串的空间的首地址
返回值:
返回的 就是dest
strcat
char s1[20] = "hello";
char s2[20] = "world";
"helloworld"
思路:
1.先定位到 目标字符串 '\0'
2.从目标字符串 '\0'位置开始
将源字符串中的字符 挨个 赋值过来
3.考虑 最后 '\0'
char *strcat(char *dest, const char *src);
功能:
拼接字符串
将src中的字符串拼接到dest中
参数:
src //表示存放 源字符串的空间的首地址
dest //表示存放 目的字符串的空间的首地址
返回值:
返回的 就是dest
strcmp
"hello"
"world"
字符串比较的规则与其他语言中的规则相同,
即
对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),
直到出现
不同的字符或遇到'\0'为止。
如全部字符相同,则认为相等;
若出现不相同的字符,
则以第一个不相同的字符的比较结果为准
"hello" //
"hello"
找到不同的字符 或者 是 '\0'
判断 比较结果
看 最后停的位置上的两个字符的关系
(点关注,不迷路,每日更新!)