字符转换:
自动类型转换:
1.非赋值运算的类型转换:
数据类型的自动转换需遵循的规则见图。为保证运算精度不低,可采用以下方法:
- 水平方向的转换:所有char类型和short型自动地转换成int型,所有的unsigned short型自动转换成unsigned型,所有long型自动地转换成unsigned long型,所有的float型自动地转换成double型。
- 垂直方向的转换:经过水平方向的转换,如果参加运算的数据的类型仍然不相同,再将这些数据自动转换成其中级别最高的类型。
2.赋值运算的类型转换:
赋值运算时,将赋值号右侧表达式的类型自动转换成赋值号左侧变量的类型。
注:在赋值运算时,赋值号两侧的数据的类型最好相同,至少右侧数据的类型比左侧数据的类型级别低,或者右侧数据的值在左侧变量的取值范围内,否则,会导致运算精度降低,甚至出现意向不到的结果。
强制类型转换:
使用强制类型转换运算符,可以将一个表达式转换成给定的类型。其一般形式是:
(类项名) 表达式;
例如,设i的类型为int型变量,double(i)将i的值转换成double型,而(int)3.8将3.8转换成int型,得到3.
两种转换方式,都是为了本次运算的需要,对数据的类型进行临时转换,并没有改变数据的定义。例如,(double)i的类型是double,而i的类型并没有改变,仍然是int。
注:强制类型转换符是运算符,不是函数,故(int)x不能写成int(x)。强制类型转换运算符的优先级较高,与自增运算符++相同,它的结合性是从右到左。例如,(int)3.8+1.3等价于((int)3.8)+1.3,它的值是4.3,而(int)(3.8+1.3)的值是5。
一维数组的定义与引用:
1.定义
定义一个数组,需要明确数组变量名,数组元素的类型和数组大小(即数组中元素的数量)。
一维数组定义的一般形式为:
类型名 数组名[数组长度];
类型名指定数组中每个元素的类型;数组名是数组变量(以下简称数组)的名称,是一个合法的标识符;数组长度是一个整型常量表达式。设定数组的大小。
2.引用
定义数组后,就可以使用它了。C语言规定,只能引用单个的数组元素,而不能一次引用整个数组。
数组元素的引用要指定下标,形式为:
数组名[下标]
下标可以是整型表达式。它的合理取值范围是[0,数组长度-1]。
注:数组下标从0开始,下标不能越界。
一维数组的初始化:
和简单的初始化一样,在定义数组时,也可以对数组元素赋初值。
其一般形式为:
类型名 数组名[数组长度]={初值表};
虽然C语言规定,只有静态储存的数组才能初始化,但一般的C编译系统都允许对动态储存的数组赋初值。但是,如果静态储存的数组没有初始化,系统自动给所有的数组元素赋0。
进行一维数组编程:
数组的应用离不开循环。将数组的下标作为循环变量,通过循环,就可以对数组的所有元素逐个进行处理。
程序首部通过宏定义的方式定义了一个符号常量MAXN,其值固定为46,主函数中出现MAXN的位置一律用46替换。
顺序查找法:
课本p158:
选择法排序:
二维数组的定义与引用:
1.定义
二维数组的定义形式为:
类型名 数组名[行长度][列长度];
类型名指定数组中每个元素的类型;数组名是数组变量(以下简称数组)的名称,是一个合法的标识符;行长度和列长度是整型常量表达式,分别给定数组的行数和列数。
例如:
int a[3][2]; /*定义一个二维数组a,3行2列,共6个元素。*/
2.引用
引用二维数组的元素要指定两个下标,即行下标和列下标,形式为:
数组名[ 行下标] [ 列下标]
行下标的合理取值范围是[0,行长度-1],列下标的合理取值范围是[0,列长度-1]。对前面定义的数组a,其行下标取值范围是[0,2],列下标取值范围是[0,1], 6个元素分别是 : a[0][0], a[0][1], a[1][0],a[1][1],a[2][0],a[2][1],可以表示一个3行2列的矩阵。
二维数组的初始化:
在定义二维数组时,也可以对数组元素赋初值,二维数组的初始化方法有两种。
1.分行赋初值
一般形式为:
类型名 数组名[行长度][列长度]={{初值表0},···,{初值表k},···};
把初值表k中的数据依次赋给第k行的元素。例如:int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
初始化数组a。此时,a数组中各元素为:
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
二维数组的初始化也可以只针对部分元素,例如:
static int b[4][3]={{1,2,3},{},{4,5}};
只对b数组第0行的全部元素和第2行的前两个元素赋初值,其余元素的初值都是0.只对b数组第0行的全部元素和第2行的前两个元素赋初值,其余元素的初值都是0.
2.顺序赋初值
一般形式为:
类型名 数组名[行长度][列长度]={初值表};
根据数组元素在内存中的存放顺序,把初值表中的数据依次赋给元素。例如int a[3][3]={1,2,3,4,5,6,7,8,9};等价于int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
如果只对部分元素赋初值,要注意初值表中数据的书写顺序。例如:
static int b[4][3]={1,2,3,0,0,0,4,5};
等价于static int b[4][3]={{1,2,3},{ },{4,5}};
练习1:
编程题2:
编程题3:
编程题4:
本周学习到此为止,
如有错误,欢迎指出。