版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章数组,在前一章使用属于基本型(整数型、字符型、实型)的数据,在c语言中还提供数组型、结构体型、公共型的数据。 建构类型资料也称为汇出类型,因为基本类型资料是由一定规则所组成。 数组是有序数据的集合。 数组中的每个元素属于同一数据类型。 数组中的元素由统一的数组名称和下标唯一确定。7.1一维数组的定义和引用7.1.1一维数组的定义,一维数组的定义方式为类型指定符数组名常数式例: int a10; 说明: (1)数组名的命名规则与变量名相同,遵循识别符命名规则。 (2)在定义阵列时,必须指定阵列中元素的数量,方括号中的常量表达式用于表示元素的数量,即阵列长度。 (3)常数式可以包含常数和符号
2、常数,不能包含变量。 c语言不能动态定义数组的大小。 也就是说,数组的大小与程序执行中变量的值无关。 一维数组的定义方法:数据类型数组名称常量表达式,表示元素数的下标从0开始的有效标识符,数组运算符单目标运算符优先级(1)不能使用左联接(),例如int a6;编译时分配连续存储器字节数=数组维数* sizeof (元素数据类型)、数组名表示存储器起始地址,地址常数、1、1维数组、1维数组的参照、数组必须先定义int datai; (不能用变量定义数组维),例如int a10; 打印(“% d”,a ); 一定要for(j=0; j10; j )打印(“% dt”、aj ); ()、例如int
3、data5; 数据5=10; /C语言对数组不进行越境检查,使用时请注意。 示例7.1组件引用,#include void main() int i,a10; for(i=0; i=0; I- )打印机(“% d”,ai ); printf(“n”); 7.1.3一维数组的初始化、数组要素的初始化可以如下实现(1)在数组定义时对数组要素赋予初始值。 (2)只能对某些要素分配值。 (3)如果希望一个数组中的所有元素值都为0,可以写为: int a2=0,0,0或int a2=0。 的双曲馀弦值。 (4)当对所有阵列元素给予初始值时,由于数据的个数已经决定,所以不需要指定阵列长度。在定义数组时,向
4、数组元素分配初始值(在编译阶段得到初始值),inta5=1、2、3、4、5等效: a0=1; a1=2; a2=3; a3=4; a4=5; 说明:如果数组未初始化,并且其元素值是随机数,而且没有为static数组元素分配初始值,则系统会自动分配零值,如果为所有数组元素分配初始值,则可以不指定数组的长度。 例如,inta5=6、2、3等价: a0=6; a1=2; a2=3; a3=0; a4=0; 例如,inta3=6、2、3、5、1,静态int a 5; 等价: a0=0; a1=0; a2=0; a3=0; a4=0; 然后将初始值仅分配给某些数组元素。 inta=1、2、3、4、5、6
5、编译系统根据初始值个数决定数组维数,进行一维数组的初始化,在7.1.4一维数组程序的例子,例如7.2数组中求Fibonacci数列的问题#include void main() int i; int f20=1,1、1、1; for(i=2; i20; 接口=接口- 2接口- 1。 for(i=0; i20; if (I %5=0)打印机(“n”)。 打印机(d,fi ); 例7.3用起泡法对6个进行排序(从小到大),起泡法的想法:比较邻接的2个,以小的为开头,问题分析:该问题可以分为以下的步骤: 1、8、6、1、2、3 2 .佚下的8、6、1、2、3、4这6个3 .从佟下6、1、2、3、4这
6、5个个数中找到最大数(6),从倒数第3个放置的4 .从佟下1、2、3、4这4个个数中找到最大数(4),从倒数第4个放置的5 .佟下1、2、3这3个个数中说明:该过程可以用循环结构实现,需要循环6次: for(i=0; i6; I )或for(i=1; i7; I )、问题分析(续):下一个问题是如何从包含n个个数的数列中找出最大数。 方法:将数列中相邻的两个要素按顺序进行比较,更换符合条件(前者大于后者)的要素,在整个数列要素比较完毕后,可以找到当前数列中的最大值。 (并且最大数在数列的最后)这个过程也可以循环实现。 用这种方法完成的排序叫做鼓泡排序。 # include # includev
7、oidmain () inticardarray=13、8、6、1、2、3、4。 英特里、j; 英特曼; for(i=0; iicardarrayj1)时间=icardarrayj; iCardArrayj=iCardArrayj 1; icardarrayj1=暂停; for(i=0; i=6; I )打印(、iCardArrayi ); printf(n ); 鼓泡排序,还是这个排序问题,我们也可以反过来考虑。 问题分析:这个问题可以分为下一个步骤: 1、从这个13、8、6、1、2、3、4这7个个数中找出最小数(1),放在第一位。 2 .从佚下的13、8、6、2、3、4这6个个数中找出最小
8、数(2),放在第2位。 3 .根据权利要求1所述的信息处理装置,其中,所述位置下的13、8、6、3、4这五个个数中找到最小数(3),所述位置下的4 .根据权利要求1所述的信息处理装置,其中,所述位置下的13、8、6、4这四个个数中找到最小数(4),所述位置下的5 .根据权利要求1所述的信息处理装置,其中下一个问题是如何从包含n个个数的数列中找出最小数。 方法:比较数列的第一个元素和第二个元素,存储符合条件(前一个元素大于后一个元素)和较小元素的位置,比较该位置的元素和第三个元素,存储符合条件(前一个元素大于后一个元素)和较小元素的位置,比较该位置的元素和第四个元素,整个数列该专业的双曲馀弦值。
9、 用这种方法完成的排序称为“选择排序”。 包括号(void )插入号=13、8、6、1、2、3和4。 英国、日本、韩国、临时; for(i=0; i nCardArrayj) k=j; if号驱逐舰=I )临时=卡拉达雷克; nCardArrayk=nCardArrayi; ncardarrayi=暂停; for(i=0; i=6; I )打印(、卡拉达雷亚里;选择排序,参照7.2维数组的定义和7.2.1维数组的定义,2维数组定义的形式是类型指定符数组名称常数式常数式的例子: float a34,b510; 二维数组可以看作是一种特殊的一维数组。 它的元素是一维数组。 二维数组内的元素排列顺序
10、按行存储。 也就是说,先将第一行的元素按顺序存储在内存中,然后再存储第二行的元素。 c语言可以使用多维数组。 7.2.2维阵列的引用、2维阵列要素的表现形式是阵列名称下标例如a23。 下标可以是整数表达式,如a2-12*2-1。 数组元素可以显示在表达式中,也可以为其指派值。 例如,b12=a23/2的下标值必须在定义的数组大小范围内。 经常发生的错误是int a34; a34=3; 7.2.3维阵列的初始化可以通过以下方法向2维阵列初始化(1)分行向2维阵列分配初始值。 (2)将所有的数据写入1个大括号内,可以按排列顺序给予各要素初始值。 (3)可以对部分要素给予初始值。 (4)将初始值分配
11、给所有元素(即,提供所有初始数据),在定义阵列时可能不指定一维的长度,但是不省略二维的长度。7.2.4维排列程序的例子、例如7.4个二维排列的行和列的要素进行交换,存储到其他二维排列。 例如,7.5具有34个矩阵,通过对其中具有最大值的元素的值以及该元素所在的行号和列号,7.3个字符数组进行编程来确定,并且存储字符数据的数组是字符数组。 字符数组中的元素存储字符。、7.3.1字符数组的定义、字符数组定义的一般形式是char数组名称常数表达式字符类型和整数类型,因此也可以定义存储字符数据的整数数组。 int c10; c0=a;7.3.2字符数组初始化、字符数组初始化和最容易理解的方法是为数组中
12、的每个元素分配一个字符。 定义字符数组时必须进行初始化,才能预测数组中每个元素的值。 如果大括号中指定的初始值数大于数组的长度,则处理语法错误。 如果初始值的数量小于数组的长度,则仅将这些字符指定给数组中的前一个元素,并且它们的拟合元素将自动设置为空字符(即,0 )。 如果指定的初始值的个数与规定的数组长度相同,则可以在定义时省略数组长度,根据初始值的个数自动决定数组长度。 对7.3.3字符数组的引用。 可以通过引用字符数组中的元素获得字符。 示例7.6字符串包括音频主() char c 10=I、a、m、a、b、o、y; 英特尔; for(i=0; i10; 打印机(“% c”,ci );
13、printf(“n”); 例7.7输出菱形图形,# includevoidmain () char diamond5=*、*、*、*、*、*、*、*、*、*、*、*。 英特里、j; for(i=0; i5; (j=0; j5; j )打印机(“% c”、暗号ij ); printf(“n”); 7.3.4字符串和字符串结束标志在c语言中将字符串作为字符数组处理。 字符串中的字符存储在数组元素中。 在实际工作中,不是关注字符数组的长度,而是关注字符串的有效长度。 为了测量字符串的实际长度,c语言确定“字符串结束标志”,将字符0作为标志。 字符串常数中也会自动添加0作为结尾符号。 字符串作为一维数
14、组存储在内存中。 如果您知道如何使用c语言处理字符串,则可以向初始化字符数组的方法添加使用字符串常量初始化字符数组的方法。 7.3.5字符数组的输入输出、字符数组的输入输出有(1)按字符输入输出的2种方法。 用格式符号“%c”输入或输出字符。 (2)一次输入输出整个字符串。 以“%s”格式表示对字符串的输入输出。 注意:(1)输出字符中不包含结尾符0。 (2)以“% s”格式输出字符串时,printf函数的输出项目不是数组元素名,而是字符数组名。 (3)如果数组的长度大于字符串的实际长度,则只输出直到遇到0结束。 (4)如果一个字符串数组中包含一个以上的0,则遇到最初的0时输出结束。 (您可以
15、使用scanf函数输入字符串。 (6)在每个字符数组名中找到该数组的开头地址,将其中的字符一个一个输出,直到变为0。 7.3.6字符串处理函数。 提供了几个用于在c函数库中处理字符串的函数,以便于使用。 几乎所有版本的c语言编辑系统都提供了这些函数。1、puts函数、函数原型: int puts(char * str ); 功能:将str指向的字符串输出到标准输出设备,将0转换为换行n并返回值:如果执行成功,则返回非负值,否则返回EOF、2、gets函数,函数原型: char * gets(char * str ); 功能:从终端将字符串输入字符串数组str并返回值:如果执行成功则返回字符串数
16、组的开头地址,否则返回NULL,3,strcat函数,函数原型: char * strcat(char * str1, char功能:在str1的后面接受字符串str2,str1的最后0取消门限值: str 1,4、strcpy、函数原型: char * strcpy(char * str1,char * str2)功能: str2指示的字符功能:两个字符串str1、str2的门限值: str1str2、正数、6、strlen函数、函数原型: unsigned int strlen(char * str ); 功能:统一修正字符串str中的字符数(结束符0除外)门值:门字符数、7、strlwr函数、函数原型: char * strlwr(char * str ); 功能:将字符串str的大小写转换为小写并返回值: str,8、strupr函数、函数原型: char * strupr(char * str ); 功能:将字符串str的小写字符转换为大写字符的门限值: str,7.3.7字符数组应用例,输入例7.8行字符,修正其中有多少个单词,单词之间用空格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- c 棋牌室系统课程设计
- 酒店人偶活动方案策划(3篇)
- 集体游玩策划活动方案(3篇)
- 顺德论坛活动策划方案(3篇)
- 船舶浮台专用电缆防水处理技术应用可行性研究报告
- 燃料储配站建设项目可行性研究报告
- 智慧产业可行性研究报告
- 2025 日本根雕艺术的选材与创作技巧课件
- 2026年基层政权建设服务中心招聘考试笔试试题(含答案)
- 2026年中国高帧率电竞显示器行业市场规模及投资前景预测分析报告
- DBJ51T 062-2016 四川省旋挖钻孔灌注桩基技术规程
- 煤制气LNG合成工艺
- 公告与通告写作
- 教科版四年级下册科学全册教案含教学反思
- 《多模态人机交互技术要求》
- 2023年1月7日国家公务员考试《公安专业科目》试题(含解析)
- 眼科日间手术精细化管理
- 血透内瘘护理宣教
- 初中信息技术中考excel操作题(二)
- DB41T 2085-2020 炭素工业废气污染防治技术规范
- 新版人音版小学音乐一年级下册全册教案
评论
0/150
提交评论