版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
知识点:
一维数组的定义和引用二维数组的定义和引用字符数组重点:
数组的组成和特点一维数组和二维的定义、赋值字符串与字符数组的关系数组在程序中的使用难点:数组元素存储格式对程序设计的使用字符串在数组中的组成以及字符串操作语句的使用第7章数组char,int,float,double等在C语言中称为基本数据类型。由基本数据类型导出的各种数据类型,如数组、结构、联合等称为构造数据类型。什么是数组?
数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。通过访问同一数组名的不同下标来操作不同的变量。数组在内存中一定是连续存储的。第7章数组7.1一维数组的定义和引用一维数组的定义定义方式:类型说明符
数组名[常量表达式];例如:inta[10];它表示数组名为a,此数组有10个元素。
说明数组名定名规则和变量名相同,遵循标识符定名规则。数组名后是用方括弧括起来的常量表达式,不能用圆括弧,下面用法不对:inta(10);常量表达式表示元素的个数,即数组长度。例如,在a[10]中,表示a[0]~a[9]。注意不能使用数组元素a[10],C对数组不做越界检查。常量表达式中可以包括常量和符号常量,不能包含变量。例如:scanf("%d",&n);inta[n];一维数组的存储方式数组在内存中是连续存储的,每个数组元素占有相同大小的空间。数组占据的总的内存空间=每个数组元素所占空间*数组元素个数数组第一个元素的起始地址就是整个数组的首地址。数组名表示数组的首地址,数组名是一个地址常量。7.1一维数组的定义和引用例inta[4];a[0]=10;a[1]=20;a[2]=30;a[3]=40;7.1一维数组的定义和引用10203040a[0]起始地址为1000a[1]起始地址为1002a[2]起始地址为1004a[3]起始地址为1006
整个数组a占用的空间为2Bytes*4个=8Bytes,地址1000~1007。数组名a为数组的首地址,即1000一维数组元素的引用数组必须先定义,然后使用。C语言只能逐个引用数组元素,不能一次引用整个数组。数组元素的表示形式为:数组名[下标]下标可以是整型常量或整型表达式。例如:a[0]=a[5]+a[7]-a[2*3]
7.1一维数组的定义和引用main(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i--)printf("%d",a[i]);}7.1一维数组的定义和引用9876543210例数组元素的引用。一维数组的初始化数组可以在定义时赋初值,称为初始化
数组不初始化,其元素值为随机数对static数组元素不初始化,系统会自动赋以0值在定义数组时对数组元素赋以初值。inta[10]={0,1,2,3,4,5,6,7,8,9};可以只给一部分元素赋值。inta[10]={0,1,2,3,4};其他元素为0。在对全部数组元素赋初值时,可以不指定数组长度inta[]={1,2,3,4,5};元素个数为5,即a[5]。若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。inta[10]={1,2,3,4,5};7.1一维数组的定义和引用一维数组程序举例例用数组来处理求fibonacci数列问题。
7.1一维数组的定义和引用11235813213455891442333776109871597258441816765main(){inti,f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){printf("%12d",f[i]);if(i%5==0)printf("\n");}}
7.1一维数组的定义和引用例用起泡法对10个数排序(由小到大)。排序过程:比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止。第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上。对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置。重复上述过程,共经过n-1趟冒泡排序后,排序结束。7.1一维数组的定义和引用思考?如果在某趟排序后,这10个数已经有序,如何结束排序,进行输出序列?input10numbers:10981234567↙j=4thesortednumbers:12345678910输入n个数给a[1]到a[n]forj=1ton-1flag=1fori=1ton-ja[i]a[i+1]flag=0a[i]>a[i+1]假真flag假真结束for循环输出a[1]到a[n]例用简单选择法对10个数排序排序过程:首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上再通过n-2次比较,从剩余的n-1个数中找出次小的数,将它与第二个数交换—第二趟选择排序重复上述过程,共经过n-1趟排序后,排序结束7.1一维数组的定义和引用例初始:[
49
38
65
97
76
1327]kji=11349一趟后:
13
[386597764927]i=22738二趟后:
13
27
[6597764938]三趟后:
13
27
38
[97764965]四趟后:
13
27
38
49
[769765]五趟后:
13
27
38
49
65
[9776]六趟后:
13
27
38
49
65
76
[97]kkkkjjjjjjjjjj7.1一维数组的定义和引用7.1一维数组的定义和引用输入n个数给a[1]到a[n]fori=1ton-1forj=i+1tona[j]<a[k]假真k=j输出a[1]到a[n]k=ia[i]a[k]i!=k真假二维数组的定义二维数组定义的一般形式:
类型说明符数组名[常量表达式][常量表达式]例如: inta[2][3],b[5][10];a为2×3(2行3列)的数组,b为5×10(5行10列)的数组。注意不能写成inta[2,3],b[5,10];7.2二维数组的定义和引用a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]第0行第1行第0列第1列第2列二维数组的存储方式数组在内存中是连续存储的。每个数组元素占有相同大小的空间。数组占据的总的内存空间=每个元素所占空间*下标1*下标2数组第一个元素的起始地址就是整个数组的首地址。数组名表示数组的首地址,数组名是一个地址常量。数组元素按行优先顺序存储的,可以认为是由多个一维数组组成,每个行是一个一维数组。7.2二维数组的定义和引用例inta[2][3];7.2二维数组的定义和引用起始地址1000a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]第0行第1行起始地址1002起始地址1004起始地址1006起始地址1008起始地址1010整个数组a占用的空间为2*6=12Bytes,地址1000~1011。01234567………...20212223c[0][0][0]c[0][0][1]c[0][0][2]c[0][0][3]c[0][1][0]c[0][1][1]c[0][1][2]c[0][1][3]c[0][2][0]c[0][2][1]c[0][2][2]c[0][2][3]c[1][0][0]c[1][0][1]c[1][0][2]c[1][0][3]c[1][1][0]c[1][1][1]c[1][1][2]c[1][1][3]c[1][2][0]c[1][2][1]c[1][2][2]c[1][2][3]多维数组:intc[2][3][4]最右下标变化最快二维数组的引用二维数组的元素的表示形式为数组名[下标][下标]如:a[2][3]。下标可以是整型表达式,如a[2-1][2*2-1]。不要写成a[2,3],a[2-1,2*2-1]形式。数组元素可出现在表达式中,如:b[1][2]=a[2][3]/2注意定义数组的下标和引用数组元素的下标。如:数组a[2][3]和元素a[2][3]7.2二维数组的定义和引用二维数组的初始化二维数组初始化中要注意行、列的区分。赋初值的顺序是按照数组元素的存储顺序来进行的。按元素排列顺序初始化,以行优先。数组不初始化,其元素值为随机数。在初始化时,未赋值的元素自动为0。7.2二维数组的定义和引用
7.2二维数组的定义和引用例inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};inta[3][3]={1,2,3,4,5,6,7,8,9};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456789a[2][0]a[2][1]a[2][2]
7.2二维数组的定义和引用a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123400780a[2][0]a[2][1]a[2][2]例inta[3][3]={{1,2,3},{4},{7,8}};
7.2二维数组的定义和引用例inta[][3]={1,2,3,4,5,6,7,8,9};a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456789a[2][0]a[2][1]a[2][2]
7.2二维数组的定义和引用a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]100456780a[2][0]a[2][1]a[2][2]例inta[][3]={{1},{4,5,6},{7,8}};
7.2二维数组的定义和引用a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123456000a[2][0]a[2][1]a[2][2]例inta[3][3]={1,2,3,4,5,6};二维数组程序举例例将一个二维数组行和列元素互换,存到另一个二维数组中。7.2二维数组的定义和引用a=1234
5
6b=14253
6例有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。7.2二维数组的定义和引用max=10,row=2,colum=1字符数组的定义
用来存放字符数据的数组字符数组中的一个元素存放一个字符定义方法与数组的定义类似例如:charc[10];c[0]='I';c[1]='';c[2]='a';c[3]='m';c[4]='';c[5]='h';c[6]='a';c[7]=’p';c[8]=’p';c[9]='y';7.3字符数组7.3字符数组字符数组的初始化逐个字符赋给数组中各元素。charc[5]={'H','e','l','l','o'};'H''e''l''l''o'如果花括弧中提供的初值个数大于数组长度,则按语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为“空字符”(即'\0')。charc[5]={'G','o','o','d'};'G''o''o''d''\0'5Byte如初值个数与预定长度相同,可省略数组长度,系统会自动根据初值个数确定数组长度。charc[]={'G','o','o','d','\0'};字符串与字符串结束标志用双引号括起来的字符序列称为字符串字符串与字符的区别在于字符串在内存中存储时,结尾一定要加上一个‘\0’(ASCII码为0的字符)作为字符串的结束符。字符串实质上是一个以‘\0’为结束符的一维字符数组。字符串与字符的存储7.3字符数组
“a”‘a’‘a’‘\0’2Bytes‘a’1Byte使用字符串常量对字符数组初始化7.3字符数组例c[]={"Hello"}c[]="Hello"例c[10]={"Hello"}c[10]="Hello"'H''e''l''l''o''\0''H''e''l''l''o''\0''\0''\0''\0''\0'字符数组的输入输出逐个字符输入输出charc[6];for(i=0;i<6;i++)scanf("%c",&c[i]);for(i=0;i<6;i++)printf("%c",c[i]);将整个字符串一次输入输出scanf("%s",c);printf("%s",c);用scanf输入多个字符串时,中间以空格分格charc1[5],c2[5],c3[5];scanf(“%s%s%s”,c1,c2,c3);输入howareyou?7.3字符数组二维字符数组每一行可作为一个一维字符数组,即可保存一个字符串。charfruit[][7]={"Apple","Orange","Grape","Pear","Peach"};7.3字符数组'A''p''p''l''e''\0''\0''O''r''a''n''g''e''\0''G''r''a''p''e''\0''\0''P''e''a''r''\0''\0''\0''P''e''a''c''h''\0''\0'fruit[0]fruit[1]fruit[2]fruit[3]fruit[4]字符串处理函数在c的函数库中提供了一些用来处理字符串的函数,使用方便。#include<stdio.h>(可以省略)puts(字符数组)将一个字符串(以‘\0’结束的字符序列)输出到终端,将‘\0’转换为‘\n’。gets(字符数组)从终端输入一个字符串到字符数组。7.3字符数组#include<string.h>(可以省略)strcat(字符数组1,字符数组2)连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中。s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024中国电信河北邢台分公司校园招聘8人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国烟草总公司郑州烟草研究院招收博士后研究人员易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国化学工程集团限公司校园招聘500人易考易错模拟试题(共500题)试卷后附参考答案
- 字课件教学课件
- 2024上海城投水务校园招聘103人易考易错模拟试题(共500题)试卷后附参考答案
- 2024“才聚齐鲁成就未来”山东人才发展集团限公司权属企业投资经理招聘1人易考易错模拟试题(共500题)试卷后附参考答案
- 网上课件制作
- 地贫筛查的检测技术课件
- 2024年度技术开发合同:科技公司与研发团队之间的技术研发、成果分配和保密义务等规定
- 第一章管理与管理学(一)
- 2020年四年级上册语文素材-全册课文梳理(1-27课)-人教(部编版)全册可修改打印
- 汽轮机本体检修规程
- CSY-9XX型传感器系统实验仪实验指南
- 小学英语教师个人专业发展总结4篇范文
- 档案数字化实施说明及报价表
- 红楼梦1——40回考点梳理
- 接触网刚性悬挂
- 申请执行人选择网络司法拍卖平台确认表
- 美标开敞及封闭式遮阳棚风荷载计算
- 培智三年级语文试卷
- 三偏心蝶阀扭矩计算
评论
0/150
提交评论