构造型数据类型精选文档.ppt
《构造型数据类型精选文档.ppt》由会员分享,可在线阅读,更多相关《构造型数据类型精选文档.ppt(170页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、构造型数据类型本讲稿第一页,共一百七十页构造型数据类型构造型数据类型n nC中简单数据类型的特点:中简单数据类型的特点:类型值域内的每个值都是类型值域内的每个值都是单值单值一个值内不包含其他值一个值内不包含其他值n n实际生活中实际生活中N维向量维向量mn的矩阵的矩阵个人自然情况表个人自然情况表学生名表学生名表本讲稿第二页,共一百七十页n n构造型数据类型(构造型数据类型(structured-type)指一个数据类型值域之内的一个值是由若干其它指一个数据类型值域之内的一个值是由若干其它类型的值构成的类型的值构成的C中提供的中提供的3种构造数据类型种构造数据类型 数组数组数组数组 结构结构结构
2、结构 联合联合联合联合本讲稿第三页,共一百七十页n n学习使用要回答的三个问题学习使用要回答的三个问题它的基础类型是什么?它的基础类型是什么?该构造型类型是以什么类型为基点出发构该构造型类型是以什么类型为基点出发构造新类型的造新类型的。构造的方法是什么?构造的方法是什么?不同的构造方法形成了不同的构造型数据不同的构造方法形成了不同的构造型数据类型类型。一个成分的存取方式和使用方法一个成分的存取方式和使用方法不同的类型使用不同形式不同的类型使用不同形式。本讲稿第四页,共一百七十页数组类型(数组类型(array-type)n n一种数据结构一种数据结构n n变量的一个有序结合变量的一个有序结合n
3、n所有变量具有同一类型所有变量具有同一类型n n例子例子一句话一句话 由由 若干个若干个 字符字符 组成的一个组成的一个数组数组一个向量一个向量 由由 若干个若干个 实数实数 组成的一个组成的一个数组数组一个矩阵一个矩阵 由由 若干个若干个 向量向量 组成的一个组成的一个数组数组本讲稿第五页,共一百七十页n n回答前面的三个问题回答前面的三个问题回答前面的三个问题回答前面的三个问题 基础类型(成分类型)基础类型(成分类型)基础类型(成分类型)基础类型(成分类型)任意类型任意类型任意类型任意类型 构造方法构造方法构造方法构造方法 把把把把固定数目固定数目固定数目固定数目的的的的同一同一同一同一成
4、分类型的数据成分类型的数据成分类型的数据成分类型的数据顺序顺序顺序顺序排成一个排成一个排成一个排成一个表表表表。每个数据是成分类型的一个值。每个数据是成分类型的一个值。每个数据是成分类型的一个值。每个数据是成分类型的一个值。所有成分顺序排成的值表是数组类型的一个值。所有成分顺序排成的值表是数组类型的一个值。所有成分顺序排成的值表是数组类型的一个值。所有成分顺序排成的值表是数组类型的一个值。成分的存取和使用成分的存取和使用成分的存取和使用成分的存取和使用 每个成分都有唯一的一个下标每个成分都有唯一的一个下标每个成分都有唯一的一个下标每个成分都有唯一的一个下标 下标从下标从下标从下标从0 0开始顺
5、序增加开始顺序增加开始顺序增加开始顺序增加 第一个成分第一个成分第一个成分第一个成分 下标为下标为下标为下标为0 0 第二个成分第二个成分第二个成分第二个成分 下标为下标为下标为下标为1 1 下标表达式下标表达式下标表达式下标表达式本讲稿第六页,共一百七十页数组声明数组声明n n一般形式一般形式T ide;T ide;T ide,ide,.,ide;T ide,ide,.,ide;id是要声明的数组(数组变量)的是要声明的数组(数组变量)的名字名字e暂时看作常量表达式暂时看作常量表达式 它是要声明的数组的它是要声明的数组的尺尺寸寸,也就是相应数组由多少个成分组成,也就是相应数组由多少个成分组成
6、ide 称为数组声明符称为数组声明符本讲稿第七页,共一百七十页n n例子例子int m,n,v10;float vector 10000;int t110,t010,w10;float t22;bool t3 26;char t4 8 ;本讲稿第八页,共一百七十页n n干什么?干什么?具体标明(访问)数组变量的某一个成分具体标明(访问)数组变量的某一个成分n n什么样?什么样?下标表达式下标表达式 后缀表达式后缀表达式 表达式表达式 后缀表达式最终表现为一个数组变量,指出访问哪个后缀表达式最终表现为一个数组变量,指出访问哪个数组的成分;数组的成分;方括号中的表达式的类型必须是方括号中的表达式的
7、类型必须是整数类型整数类型,它具体指,它具体指明访问的是数组的哪一个成分明访问的是数组的哪一个成分下标表达式下标表达式本讲稿第九页,共一百七十页n n例子例子vector255vector vector 的编号为的编号为的编号为的编号为 255(255(第第第第256256个个个个)的成分,为的成分,为的成分,为的成分,为 float float 型变量型变量型变量型变量v2+3 v v 的编号为的编号为的编号为的编号为 5(5(第第第第6 6个个个个)的成分,为的成分,为的成分,为的成分,为 int int 型变量型变量型变量型变量t3i+j*k :若若若若 i+j*ki+j*k落在落在落在
8、落在0.250.25之内之内之内之内 则是则是则是则是 t3 t3 的编号为的编号为的编号为的编号为i+j*k(i+j*k(第第第第i+j*k+1i+j*k+1个个个个)的成分,是一个的成分,是一个的成分,是一个的成分,是一个 bool bool 型变量;型变量;型变量;型变量;否则否则否则否则 i+j*k i+j*k 落在落在落在落在 0.250.25之外,之外,之外,之外,则引起错误则引起错误则引起错误则引起错误 t40 t4 t4 的下标为的下标为的下标为的下标为 0(0(第第第第1 1个个个个)的成分,为的成分,为的成分,为的成分,为 char char 型变量型变量型变量型变量本讲稿
9、第十页,共一百七十页n n下标表达式实际是一个变量。下标表达式实际是一个变量。n n它是相应数组成分类型的一个变量。它是相应数组成分类型的一个变量。它是相应数组成分类型的一个变量。它是相应数组成分类型的一个变量。n n程序中,下标表达式的地位、作用与相应数组成分类型程序中,下标表达式的地位、作用与相应数组成分类型程序中,下标表达式的地位、作用与相应数组成分类型程序中,下标表达式的地位、作用与相应数组成分类型的一般变量的地位、作用完全相同。的一般变量的地位、作用完全相同。的一般变量的地位、作用完全相同。的一般变量的地位、作用完全相同。n n即凡是可使用数组成分类型变量的地方都可以使用下标表达即凡
10、是可使用数组成分类型变量的地方都可以使用下标表达即凡是可使用数组成分类型变量的地方都可以使用下标表达即凡是可使用数组成分类型变量的地方都可以使用下标表达式,有时也称下标表达式为式,有时也称下标表达式为式,有时也称下标表达式为式,有时也称下标表达式为“下标变量下标变量下标变量下标变量”。本讲稿第十一页,共一百七十页需要注意的问题需要注意的问题n n运算运算 C C 没有定义施于数组类型上的运算没有定义施于数组类型上的运算没有定义施于数组类型上的运算没有定义施于数组类型上的运算 数组类型的运算都是通过其成分实现数组类型的运算都是通过其成分实现数组类型的运算都是通过其成分实现数组类型的运算都是通过其
11、成分实现 例子例子例子例子求整型数组求整型数组求整型数组求整型数组t0,t1 t0,t1 的差送入整型数组的差送入整型数组的差送入整型数组的差送入整型数组 w w 中,应如下:中,应如下:中,应如下:中,应如下:for(m=0;m=9;m+)wm=t0m-t1m;而不能写成而不能写成而不能写成而不能写成 w=t0-t1;w=t0-t1;本讲稿第十二页,共一百七十页n n 数组变量不能作数组变量不能作数组变量不能作数组变量不能作I/OI/O函数的实在参数函数的实在参数函数的实在参数函数的实在参数 不能整个读入或输出一个数组不能整个读入或输出一个数组不能整个读入或输出一个数组不能整个读入或输出一个
12、数组 例子例子例子例子读入一批数据送入数组读入一批数据送入数组读入一批数据送入数组读入一批数据送入数组 w w 中,可以用如下方法实现:中,可以用如下方法实现:中,可以用如下方法实现:中,可以用如下方法实现:for(m=0;m=9;m+)for(m=0;m=9;m+)scanf(“%f“,&(wm);scanf(“%f“,&(wm);printf(“%f”,Wm);printf(“%f”,Wm);而不能写成而不能写成而不能写成而不能写成 scanf(“%f“,&w);scanf(“%f“,&w);printf(“%f”,w);printf(“%f”,w);本讲稿第十三页,共一百七十页多维数组多
13、维数组n n二维数组声明符形式:二维数组声明符形式:标识符标识符 赋值表达式赋值表达式 赋值表达式赋值表达式赋值表达式赋值表达式 n n例子例子 float a 105;float a 105;本讲稿第十四页,共一百七十页n n下标表达式形式下标表达式形式 数组变量数组变量 表达式表达式1 表达式表达式2 n n例子例子 a a 矩阵的第矩阵的第矩阵的第矩阵的第 3 行、第行、第行、第行、第 4 4 列元素表示为列元素表示为列元素表示为列元素表示为 a23a23本讲稿第十五页,共一百七十页n n多维数组声明符形式多维数组声明符形式数组标识符数组标识符数组标识符数组标识符 赋值表达式赋值表达式赋
14、值表达式赋值表达式1 1 .赋值表达式赋值表达式赋值表达式赋值表达式n n n n下标表达式形式下标表达式形式数组变量数组变量数组变量数组变量 表达式表达式表达式表达式1 1 表达式表达式表达式表达式2 .2 .表达式表达式表达式表达式k k 本讲稿第十六页,共一百七十页 int x 522653;int x 522653;声明声明声明声明 x x 是一个维数组。它的成分类型是是一个维数组。它的成分类型是是一个维数组。它的成分类型是是一个维数组。它的成分类型是intint型;型;型;型;第一维第一维第一维第一维5 5个成分;个成分;个成分;个成分;第二维第二维第二维第二维2 2个成分;个成分;
15、个成分;个成分;第三维第三维第三维第三维2626个成分;个成分;个成分;个成分;第四维第四维第四维第四维5 5个成分;个成分;个成分;个成分;第五维第五维第五维第五维3 3个成分。个成分。个成分。个成分。下标表达式下标表达式下标表达式下标表达式 x01342 x01342 是是是是 x x 的一个下标变量的一个下标变量的一个下标变量的一个下标变量,类型是类型是类型是类型是intint型。型。型。型。按语法下标表达式中的表达式可写若干,则下标表达式按语法下标表达式中的表达式可写若干,则下标表达式按语法下标表达式中的表达式可写若干,则下标表达式按语法下标表达式中的表达式可写若干,则下标表达式 x0
16、1x01 类型是一个三维数组。即这时把它看成是类型类型是一个三维数组。即这时把它看成是类型类型是一个三维数组。即这时把它看成是类型类型是一个三维数组。即这时把它看成是类型 int x 52int x 52成分类型成分类型成分类型成分类型 的一个下标表达式,成分类型是一个三维数组类型的一个下标表达式,成分类型是一个三维数组类型的一个下标表达式,成分类型是一个三维数组类型的一个下标表达式,成分类型是一个三维数组类型:int t 2653;int t 2653;本讲稿第十七页,共一百七十页程序设计实例程序设计实例n n求两向量内积求两向量内积求两向量内积求两向量内积n n求两矩阵乘积求两矩阵乘积求两
17、矩阵乘积求两矩阵乘积n n打印杨辉三角打印杨辉三角打印杨辉三角打印杨辉三角n n主元排序主元排序主元排序主元排序n n冒泡排序冒泡排序冒泡排序冒泡排序n n逐步增加递增子序列排序逐步增加递增子序列排序逐步增加递增子序列排序逐步增加递增子序列排序n n顺序检索顺序检索顺序检索顺序检索n n对半检索对半检索n n栈栈栈栈n n队列队列n nGaoss 消去法消去法消去法消去法n n星形线图形星形线图形n n最长递增子序列的长度最长递增子序列的长度本讲稿第十八页,共一百七十页例例6-1 求两向量内积求两向量内积设有向量设有向量设有向量设有向量 a an n,bn 则其内积为:则其内积为:则其内积为:
18、则其内积为:e=0for(i=0;i n;i+)e=e+ai*bi结束结束开始开始本讲稿第十九页,共一百七十页n n程序片断程序片断#define n 100#define n 100 float an,bn;float an,bn;float innerproduct(void)float innerproduct(void)float e;int i;e=0;for(i=0;in;i+)e=e+ai*bi;return e;本讲稿第二十页,共一百七十页例例6-2 求两矩阵乘积求两矩阵乘积n n设有矩阵设有矩阵设有矩阵设有矩阵 A Ampmp 、B Bpnpn ,则其乘积矩阵,则其乘积矩阵,
19、则其乘积矩阵,则其乘积矩阵 C Cmnmn 的元素的元素的元素的元素 C Cij ij 为为为为:若矩阵若矩阵若矩阵若矩阵A,B A,B 分别放在二维数组分别放在二维数组分别放在二维数组分别放在二维数组a,ba,b中;则求乘积矩阵中;则求乘积矩阵中;则求乘积矩阵中;则求乘积矩阵c c的算法的算法的算法的算法for(i=0;in;i+)计算一行计算一行 for(j=0;j m;j+)计算元素计算元素ci,je=e+aik*bkje=0cij=efor(k=0;kp;k+)本讲稿第二十一页,共一百七十页n n程序片断如下程序片断如下程序片断如下程序片断如下#define m 10#define m
20、 10#define n 20#define n 20#define p 30#define p 30 float a m p ,b p n ,c m n ;float a m p ,b p n ,c m n ;void matrixproduct(void)void matrixproduct(void)float e;float e;int i,j,k ;int i,j,k ;for(i=0;im;i+)for(i=0;im;i+)for(j=0;jn;j+)for(j=0;jn;j+)e=0;e=0;for(k=0;kp;k+)for(k=0;kp;k+)e=e+aik*bkj;e=e+
21、aik*bkj;cij=e;cij=e;本讲稿第二十二页,共一百七十页例例6-3 打印杨辉三角形前打印杨辉三角形前10行行11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1.打印第打印第i行行打印杨辉打印杨辉 三角形三角形for(i=0;i10;i+)结束结束生成第生成第i行行打印打印本讲稿第二十三页,共一百七十页生成第生成第生成第生成第i i行,用多项式定理计算组合数行,用多项式定理计算组合数n稍大一点,运算量极大稍大一点,运算量极大Cn!m nmnm=-!()!利用杨辉三角形的特性,从第利用杨辉三角形的特性,从第i-1行生成第行生成第i行。行。设把第设把第 i 行
22、数据保存在数组中,第行数据保存在数组中,第i-1行在数组中。行在数组中。并考虑到将来生成第并考虑到将来生成第i+1行时,数组中应为第行时,数组中应为第i行。行。本讲稿第二十四页,共一百七十页假设假设 把第把第0行的的输出在屏幕的第行的的输出在屏幕的第40列列各行数据中每个数占位;第各行数据中每个数占位;第 i 行应从行应从 40-i*(4)处开始显示处开始显示for(j=1;j i-1;j+)aj=bj-1+bjai=1for(j=0;ji;j+)bj=aj印印 40-i*(/2)个空格个空格印印“回车回车”printf(“%8d”,aj)for(j=0;ji;j+)打印杨辉打印杨辉 三角形三
23、角形for(i=0;i10;i+)结束结束生成第生成第i行行打印打印本讲稿第二十五页,共一百七十页#define n 10#define wideword void main()int a11,b11,i,j;for(i=0;in;i+)for(j=1;ji;j+)/生成第生成第i行行 aj=bj-1+bj;ai=1;for(j=0;j=i;j+)/形成下一次的第形成下一次的第i-1行行 bj=aj;for(j=0;j=40-i*(wideword/2);j+)/打印第打印第i行行 printf(%c,);for(j=0;j=i;j+)/printf(“%8d,aj);printf(n);本讲
24、稿第二十六页,共一百七十页0000000000a123456789下标下标0000000000b1.1.i=0i=0不执行不执行不执行不执行 循环,循环,循环,循环,a0=1a0=1b0=a0=1b0=a0=1,打印打印打印打印4040个空格个空格个空格个空格打印打印打印打印a0=1,a0=1,打印回车打印回车打印回车打印回车111.01000本讲稿第二十七页,共一百七十页1000000000a123456789下标下标1000000000b2.2.i=1i=1不执行不执行不执行不执行 循环,循环,循环,循环,a1=1a1=1b0=a0=1b0=a0=1b1=a1=1b1=a1=1打印打印打印
25、打印3636个空格个空格个空格个空格打印打印打印打印a0,a1=1a0,a1=1打印回车打印回车打印回车打印回车111 1 1 .01000本讲稿第二十八页,共一百七十页1100000000a123456789下标下标1100000000b3.3.i=2i=2j=12j=12a1=b0+b1=2a1=b0+b1=2a2=1a2=1b0=a0=1b0=a0=1b1=a1=2b1=a1=2b2=a2=1b2=a2=1打印打印打印打印3232个空格个空格个空格个空格打印打印打印打印a0,a1,a2,a0,a1,a2,打印回车打印回车打印回车打印回车221 1 1 1 2 1 .0111000本讲稿第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构造 数据类型 精选 文档
限制150内