第8章常用数据表达.ppt
《第8章常用数据表达.ppt》由会员分享,可在线阅读,更多相关《第8章常用数据表达.ppt(46页珍藏版)》请在三一办公上搜索。
1、1,第8章 常用数据表达,本章重点:常用的数据类型 宏的定义与应用 数组的定义和使用 指针的定义和使用 结构体的定义,枚举与定义类型 指针和数组 返回值为指针的函数 指向函数的指针,2,基本数据类型,构造类型数据是由基本类型数据按一定规则组成的,所以它们又被称为“导出类型”。,3,为什么要有数组这么一个数据类型?数组与其他基本的数据类型有什么区别?,8.1 数组,4,举例:一个班有30个学生,求这30个学生的总成绩和平均成绩。分析:如果按照我们以前的知识,涉及到30个学生的成绩,那么我们要定义30个变量来存储成绩信息。那么如果100个学生呢?是不是要定义100个变量?若有2万在校生,那么学籍管
2、理系统中是不是要定义2万个变量?-不可能!如何表示这么多学生的相关信息(例如成绩),就要引入数组的概念,数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。可以用一个统一的数组名和下标来惟一的确定数组中的元素,利用循环来统一完成各个元素的各种操作。,5,数组具有如下主要特点:(1)每个数组中的元素类型必须一致。(2)用不同的下标来区分数组的元素。(3)数组在内存中占有连续的存储单元,数组名表示数组在内存中的首地址。(4)数组和指针有着极密切的联系,可以通过指针移动来对数组元素进行操作。,6,#includeint main()int i,a10=1,2,3,4,5,6,7,8,9,1
3、0;/*定义一个整型数组,数组名为a,并给数组初始化*/for(i=0;i10;i+)printf(a%d=%-2d,i,ai);/*ai为数组的第i个元素*/printf(n);return 0;,例8.1 数组及数组元素的表示方法。,7,一、一维数组定义 1.定义形式:数据类型 数组名元素个数;如:int a5;不能写成int a(5);,8.1.1 一维数组,2.注意:数组名由用户定义,规则与变量名相同,元素个数为常量表达式而不能是变量表达式。如:int n=5;int an;数组的下标从0开始。如:a10下标是从09,而不是1-10。下标可以是整型常量或整型常量表达式 和其他变量一样,
4、数组也必须先定义后使用。,8,二、一维数组的引用、初始化与赋值C语言规定不能一次引用整个数组,引用时只能对逐个元素进行引用。(1)一维数组引用:引用形式:数组名下标注意:对下标的使用不要超过下标的最大值。尽管超过最大值时不出现编译错误。但是运行的时候会出现杂乱的结果。例如:a0=8;a2=0;a3=2*a2;,9,(2)一维数组赋值如何给一维数组赋值呢?可以有三种方法:数组的初始化 程序中赋值 键盘中读入数组的初始化 在定义数组时对数组元素可赋以初值。例如:static int a10=0,1,2,3,4,5,6,7,8,9;初始化时可以只对一部分元素赋初值。例如:int a10=0,1,2,
5、3,4;如果想使一个数组的元素值全部为0.例如:static int a10=0;在对全部数组元素赋初值时,可以不指定数组长度。例如:int a=1,0,3,5,7;,10,程序中给数组的元素赋值。例8.2 程序中给数组的元素赋值,并输出数组元素的值。#include int main()int s10=1,2,3,4,5,6,7,8,9,10;/*定义数组s,并初始化*/int i=2,a3;/*定义数组a*/a0=si;/*为数组元素a0赋值*/a1=s2+i;a2=s2*i+3;printf(a0=%d a1=%d a2=%dn,a0,a1,a2);return 0;,程序执行结果:,1
6、1,程序运行时从键盘输入,例8.3程序运行时从键盘输入,给数组的元素赋值,最后输出数组元素的值。#includevoid main()int i,a10;printf(请输入10个整型数,以空格隔开n);for(i=0;i10;i+)/*输入10个数,分别赋予10个元素*/scanf(%d,12,C语言本身没有字符串类型,字符串的存储完全依赖于字符数组,但字符数组又不等于字符串。虽然C语言中没有字符串数据类型,但却允许使用字符串常量。在C语言中,字符串是借助于字符型一维数组来存放的,以字符0作为字符串结束标志,它的ASCII代码值为0,0占用存储空间、不输出,也不计入串的实际长度。用字符数租存
7、放字符串。,8.1.2 字符数组,13,char c10;c0=I;c1=;c2=a;c3=m;c4=;c5=h;6=a;c7=p;c8=p;c9=y;,字符数组的定义字符数组的定义方法与普通的数组的定义方法类似。,a0 a1 a2 a3 a4 a5 a6 a7 a8 a9,14,字符数组的输入输出,有下列方法:(1)逐个字符输入输出。用格式符%c 输入或输出一个字符。(2)将整个字符串一次输入或输出。用格式符“%s”,对字符串进行输入输出。(3)用gets()输入字符串,用puts()输出字符串。,15,例8.4 利用字符数组,在终端中输出字符串“I Love China!”。分析:初始化数
8、组string,在初始化时直接用字符串常量,给字符数组string赋值。,#includeint main()char string=“I Love China!”;/*定义数组并初始化*/printf(“%sn”,string);/*字符串输出*/return 0;,程序执行结果:,16,例8.5 输入一行字符,统计其中字母、数字、空格和其它字符的个数,并输出结果。,分析:用函数gets()输入字符串,字符个数小于等于80(因为数组长度为80)。用gets()函数输入字符,可以输入空格,若用scanf()函数输入字符,遇到空格时系统认为字符串结束。设整型变量letter,digit,spac
9、e,other分别存放字母、数字、空格和其他字符的个数,其初始值均为0。在循环中判断数组中的每个字符是字母(则letter+)?还是数字(则digit+)?还是空格(则space+)?还是其他字符(则other+)?,17,#includevoid main()char str80;int letter=0,digit=0,space=0,other=0,i,length=0;gets(str);/*输入若干字符*/for(i=0;stri!=0;i+)/*判断字符是什么*/if(stri=a,18,8.1.3 二维数组,在C语言中,可以把二维数组看作是一种特殊的一维数组。二维数组中元素的排列
10、顺序是:先按行存放,再按列存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。,19,一、二维数组的定义 定义格式:类型 数组名行数列数;(1)如:int a23;(2)在内存中,是按行存放的。(3)因为数组的存储是顺序的,所以,各个元素的存储顺序为:a00 a01 a02 a10 a11 a12,0行:a00 a01 a02,1行:a10 a11 a12,20,三、二维数组元素的初始化,1.按行给二维数组赋初值。如:int aa23=0,0,1,1,0,0;2.也可以把数值写在一块:int aa23=0,0,1,1,0,0则aa00=0 aa01=0 aa02=1aa10=1 aa1
11、1=0 aa12=0,二、二维数组元素的引用行号和列号都是从0开始的,并注意行号和列号不要超过数组定义的范围。,21,3.如果初始化值比数组元素少,则后面的元素值为0,如:int a45=1,2,0,1,3则各值为:1 2 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 4.可以对单个元素进行赋值:aa34=5;,22,5.如果对二维数组的所有元素都赋值,则数组的第一维可以省略。如:int m3=1,2,3,4,5,6,7,8,9;则默认的第一维的值是3 又如int m3=1,2,3,4,5,6,7;则默认的第一维的值也是3;其中m21=m22=0;,23,例8.6 二
12、维数组输入、输出的例子。,#includeint main()int i,j,a43;printf(请输入12个整型数,以空格隔开n);for(i=0;i4;i+)for(j=0;j3;j+)scanf(%d,24,例8.7 二维数组程序举例,对以下矩阵进行转置:2 3 4 1 5 9 135 6 7 8 2 6 7 1410 11 12 3 7 11 1513 14 15 16 4 8 12 16 说明:该矩阵是对称矩阵,主对角线上下元素可以直接交换。若是非对称矩阵,可以利用两个二维数组进行存储原矩阵和转置矩阵。,25,#includevoid main()int i,j,t;int a44
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 数据 表达
链接地址:https://www.31ppt.com/p-5667102.html