第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,#include int main() int i,a10=1,2,3,4,
3、5,6,7,8,9,10; /*定义一个整型数组, 数组名为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
4、,而不是1-10。下标可以是整型常量或整型常量表达式 和其他变量一样,数组也必须先定义后使用。,8,二、一维数组的引用、初始化与赋值 C语言规定不能一次引用整个数组,引用时只能对逐个元素进行引用。 (1)一维数组引用: 引用形式:数组名下标 注意:对下标的使用不要超过下标的最大值。尽管超过最大值时不出现编译错误。但是运行的时候会出现杂乱的结果。 例如:a0=8; a2=0; a3=2*a2;,9,(2)一维数组赋值 如何给一维数组赋值呢?可以有三种方法: 数组的初始化 程序中赋值 键盘中读入 数组的初始化 在定义数组时对数组元素可赋以初值。 例如: static int a10=0, 1, 2
5、,3 , 4, 5, 6, 7, 8, 9; 初始化时可以只对一部分元素赋初值。 例如: int a10=0,1,2,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; /* 为数组元素a
6、0赋值 */ a1=s2+i; a2=s2*i+3; printf(“a0=%d a1=%d a2=%dn“,a0,a1,a2); return 0; ,程序执行结果:,11,程序运行时从键盘输入,例8.3程序运行时从键盘输入,给数组的元素赋值,最后输出数组元素的值。 #include void main() int i,a10; printf(“请输入10个整型数,以空格隔开n“); for(i=0;i10;i+) /*输入10个数,分别赋予10个元素*/ scanf(“%d“, ,12,C语言本身没有字符串类型,字符串的存储完全依赖于字符数组,但字符数组又不等于字符串。虽然C语言中没有字符
7、串数据类型,但却允许使用字符串常量。 在C语言中,字符串是借助于字符型一维数组来存放的,以字符0作为字符串结束标志,它的ASCII代码值为0,0占用存储空间、不输出,也不计入串的实际长度。 用字符数租存放字符串。,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)
8、将整个字符串一次输入或输出。用格式符“%s” ,对字符串进行输入输出。 (3)用gets()输入字符串,用puts()输出字符串。,15,例8.4 利用字符数组,在终端中输出字符串“I Love China!”。 分析:初始化数组string,在初始化时直接用字符串常量,给字符数组string赋值。,#include int main() char string =“I Love China!”;/*定义数组并初始化*/ printf(“%sn”,string); /*字符串输出*/ return 0; ,程序执行结果:,16,例8.5 输入一行字符,统计其中字母、数字、空格和其它字符的个数,
9、并输出结果。,分析:用函数gets()输入字符串,字符个数小于等于80(因为数组长度为80)。用gets()函数输入字符,可以输入空格,若用scanf()函数输入字符,遇到空格时系统认为字符串结束。 设整型变量letter , digit , space , other分别存放字母、数字、空格和其他字符的个数,其初始值均为0。在循环中判断数组中的每个字符是字母(则letter+)?还是数字(则digit+)?还是空格(则space+)?还是其他字符(则other+)?,17,#include void main() char str80; int letter=0,digit=0,space=
10、0,other=0,i,length=0; gets(str); /*输入若干字符*/ for (i=0; stri!=0; i+) /*判断字符是什么*/ if (stri=a ,18,8.1.3 二维数组,在C语言中,可以把二维数组看作是一种特殊的一维数组。二维数组中元素的排列顺序是:先按行存放,再按列存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。,19,一、二维数组的定义 定义格式:类型 数组名行数列数; (1)如:int a23; (2)在内存中,是按行存放的。 (3)因为数组的存储是顺序的,所以,各个元素的存储顺序为: a00 a01 a02 a10 a11 a12,0
11、行: 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=1 aa10=1 aa11=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
12、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 二维数组输入、输出的例子。,#include int main() int i,j,a43; printf(“请输入12个整型数,以空格隔开n“); for(i=0;i4;i+) for(j=0;j3;j+) scanf(“%d“, ,24,例8.7 二维数组程序举
13、例,对以下矩阵进行转置: 2 3 4 1 5 9 13 5 6 7 8 2 6 7 14 10 11 12 3 7 11 15 13 14 15 16 4 8 12 16 说明:该矩阵是对称矩阵,主对角线上下元素可以直接交换。若是非对称矩阵,可以利用两个二维数组进行存储原矩阵和转置矩阵。,25,#include void main() int i,j,t; int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16; printf(“矩阵转置前:n“); for(i=0;i4;i+) /*输出矩阵*/ for(j=0;j4;j+) printf(“%3d“,a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 数据 表达
链接地址:https://www.31doc.com/p-2257930.html