第一阶段 C语言基础与入门8

字符转换:

 

   自动类型转换:

1.非赋值运算的类型转换:

数据类型的自动转换需遵循的规则见图。为保证运算精度不低,可采用以下方法:

  1. 水平方向的转换:所有char类型和short型自动地转换成int型,所有的unsigned short型自动转换成unsigned型,所有long型自动地转换成unsigned long型,所有的float型自动地转换成double型。
  2. 垂直方向的转换:经过水平方向的转换,如果参加运算的数据的类型仍然不相同,再将这些数据自动转换成其中级别最高的类型。

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数组中各元素为:

           

123
456
789

二维数组的初始化也可以只针对部分元素,例如:

      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:

 

 

 本周学习到此为止,

如有错误,欢迎指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值