- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前面各章所使用的数据都属于基本数据类型(整型实型课件
第7章 数组;前面各章所使用的数据都属于基本数据类型(整型、实型、字符型),C语言除了提供基本数据类型外,还提供了构造类型的数据,它们是数组类型、结构体类型、共同体类型等。构造数据类型是由基本数据类型的数据按照一定的规则组成,所以也称为“导出类型”。;下面简单介绍一下数组概念:
1、数组:一组具有相同数据类型的数据的有序的集合。
2、数组元素:数组中的元素。数组中的每一个数组元素具有相同的名称,不同的下标,可以作为单个变量使用。在定义一个数组后,在内存中使用一片连续的空间依次存放数组的各个元素。
3、数组的下标:是数组元素的位置的一个索引或指示。
4、数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。;7.1一维数组的定义和使用;(2)C语言不允许对数组的大小做动态定义,如:
int n;
scanf(%d,n);
int a[n];
因为在编译时,C编译器根据已知数组大小分配内存空间。
说明:
(1)数组名:按标识符规则。本例a就是数组名。;(2)整型常量表达式:表示数组元素个数(数组的长度)。可以是整型常量或符号常量,不允许用变量。
整型常量表达式在说明数组元素个数的同时也确定了数组元素下标的范围,下标从0开始~整型常量表达式-1(注意不是1~整型常量表达式)。
C语言不检查数组下标越界,但是使用时,一般不能越界使用,否则结果难以预料。本例数组元素个数是10个,下标从0-9。;(3)类型说明:指的是数据元素的类型。类型说明确定了每个数据占用的内存字节数。比如整型2字节,实型4字节,双精度8字节,字符1字节。
本例数组元素是整型,每个元素占2个字节,因为有10个数组元素,所以占用20字节。
(4)C编译程序为数组分配了一片连续的空间。
(5)C语言还规定,数组名是数组的首地址。即a=a[0]; 数组必须先定义后使用。C语言规定只能逐
个引用数组元素而不能一次引用整个数组。
数组元素的表示形式:数组名[下标表达式]
下标可以是整型常量或整型表达式。如:
a[0]=a[5]+a[7]-a[2*3]
1个数组元素,实质上就是1个变量,它具有和相同类型???个变量一样的属性,可以对它进行赋值和参与各种运算。;[例] 使数组元素a[0]~a[9]的值为0~9,然后逆序输出。
main()
{
int i,a[10];
for (i=0;i=9;i++)
a[i] = i;
for(i=9;i=0; i--)
printf(%d ,a[i]);
}
运行输出:?9 8 7 6 5 4 3 2 1 0
;初始化格式:
数据类型 数组名[常量表达式]={初值表}
初始化:在定义时指定初始值,编译器把初值赋给数组变量。
赋值:使用赋值语句,在程序运行时把值赋给数组变量,如a[0] = 2。
1、一般初始化,例:
int a[10]= { 0,1,2,3,4,5,6,7,8,9}
int array[10] = {1,2,3,4,5,6,7,8,9,10}; ;2、部分元素初始化,其余元素均为零。
例 :int a[10] = {0,1,2,3,4};
仅前5个元素赋初值,后5个元素未指定初值。
3、全部元素均初始化为0,不允许简写。
int a[10] = {0,0,0,0,0,0,0,0,0,0};或:int a[10]={0};
不能简写为:
int a[10] = {0*10};
4、如果全部元素均指定初值,定义中可以省略元素的个数,例、
int a[5] = {1,2,3,4,5};
可以写为:
int a[ ] = {1,2,3,4,5}; ;[例] 输入10个数,用“冒泡法”对10个数排序(由小到大)。
冒泡法的基本思想:通过相邻两个数之间的比较和交换,使(数值)较小的数逐渐从底部移向顶部,较大的数逐渐从顶部移向底部。就像水底的气泡一样逐渐向上冒,故而得名。
“冒泡法”算法:以六个数9、8、5、4、2、0为例。
;第1趟比较(下图1) 第2趟比较(下图2);第1趟比较后,剩5个数未排好序;两两比较5次
第2趟比较后,剩4个数未排好序;两两比较4次
第3趟比较后,剩3个数未排好序;两两比较3次
第4趟比较后,剩2个数未排好序;两两比较2次
第5趟比较后,全部排好序;两两比较1次
算法结论:对于n个数的排序,需进行n-1趟比较,第j趟比较需进行n-j次两两比较。
程序流程图:(用两层嵌套循环实现)
;
;程序:设需排序的数有10个,定义数组大小为11,使用 a[1]~a[10]存放10个数,a[0]不用。
main()
{
int a[11]; /* 用a[1]~a[10]
文档评论(0)