注意定义数组时,int a[100] ;int [100]代表类型名,a 代表数首组元素地址。
如果代码中出现a[101] = 1;或a[100] = 2;这种下标运算符中的数字大于数组本身的长度的情况,会发生数组的越界访问,代码有可能会崩溃。
二分查找法是一种在有序数组中查找特定元素的算法。其基本思想是将目标值与数组中间的元素进行比较,然后根据比较结果来缩小搜索范围,直到找到目标元素或搜索范围为空。
程序示例:
因为二分法是对有序数组进行查找的算法,所以第一部分先要对我们定义的数组进行排列。
第二部分是二分法的代码部分,
初始化索引:定义两个索引变量,通常命名为begin和end,分别指向数组的起始位置和结束位置。
循环条件:只要begin小于等于end,就继续循环。
计算中间索引:计算中间索引mid
,通常是(begin + end) / 2
。注意,这里应该使用整数除法,以确保mid
是一个整数。
一、字符数组
1、字符数组的定义、初始化以及引用
字符数组的定义方法与前面介绍的其他数组类似。
例如:
定义,赋值
char a[10]; c[0] = '1'; char c[100]; char c[ ];
初始化
char a[100] = {1,2,3,4,5,6,8,9,0}; char c[100] = "hello";
由此可以看出在初始化或赋值字符数组时花括号和逗号可以被双引号代替。
2、字符串和字符串结束标志
在c语言中,是将字符串作为字符数组来处理的。
如果有一个字符串,前面9个字符都不是空字符(即'\0'),而第十个字符是空字符,则此字符串的有效字符是9个,也就是说,在遇到字符'\0'时,表示字符结束,由它前面的字符组成字符串。
3、字符串处理函数
(1)puts函数
其一般形式为
puts(字符数组);
其作用是将一个字符串(以'\0'结束的字符序列)输出到终端。
用c语言来实现puts函数
(2)gets 和fgets函数
gets函数其一般形式为
gets(字符数组);
其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。如果输入的字符串长度超过了字符数组最多可读取的字符数会发生越界访问,所以在使用gets函数时要注意输入字符串的长度。
fgets函数其一般形式为
fgets(字符数组,最多可读取的字符数,指向输入流的指针)
其作用是从指定的输入流中读取字符,直到遇到换行符为止。
(3) strcat函数
其一般形式为
strcat(字符数组1,字符数组2);
其作用是连接两个字符数组,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值是字符数组1的地址。
用C语言实现strcat函数
(4)strcpy函数
其一般形式为
strcpy(字符数组1,字符数组2);
其作用是将字符串2复制到字符串1中去。
用c语言实现strcpy函数
(5)strcmp函数
其一般形式为
strcmp(字符串1,字符串2)
其作用是比较字符串1和字符串2。它的本质是比价两个字符串的ASCII码的大小。
strcmp的值大于0就是字符串1大于字符串2,函数值小于0就是字符串1小于字符串2,函数值等于0就是字符串1等于字符串2。
用c语言实现strcmp函数
(6)strlen函数
其一般形式为
strlen(字符数组)
其作用是测试字符串长度。它的函数值是字符串的实际长度(不包括'\0'在内)。
用c语言实现strlen函数