数据的存储结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章、数据的存储结构:
迄今为止,我们使用的都是属于基本类型的数据,但C语言还给我们提供了构造类型数据,有数组类型、结构体类型、共用体类型。构造类型数据是由基本类型数据按一定规则组成的,也有的书称之为“导出类型”
数组的特点:
数组是有序数据的集合
数组中的每一个元素都属于同一个数据类型
用一个统一的数组名和下标来唯一确定数组中的元素。一、学习内容:
一维数组:变量
一维字符数组:字符串
二维数组:多行多列、大量数据
二、学习方法:
定义
输入、输出
应用(处理数据)
三、注意:每种存储结构都从三方面来讲
定义、输入输出、应用(前两个用于笔试,后一个机试)
数组的引入:如:int x=3;x变量只能存放一个数字要对大量类型相同数据处理,比如求5门课程成绩之和,按照之前学的内容最少定义5个变量来分别存放5门课程成
绩,再用一个变量来存放和值……比较繁琐
四、为解决这一问题我们引入数组的学习:
数组:一系列类型相同数据存放在一系列连续的存储单元中(类型相同数据的集合体)
画图分析:
三、数据存储:数据存储方式影响处理方法的选择和执行的效率。
1、一维数组:
1)定义:类型说明符数组名[常量表达式],int a[10]
说明:
(1)数组名定名规则和变量名相同,遵循标识符定名
规则
(2)数组名后是用方括弧括起来的常量表达式,不能
用圆括弧,下面用法不对:int a(10)
(3)常量表达式表示元素的个数,即数组长度。例如,在a[10]中,10表示a数组有10个元素,下标从
0开始,这10个元素是,a[0],a[1],a[2]……a[9]。
注意不能使用数组元素a[10]
(4)常量表达式中可以包括常量和符号常量,不能包含变量。
注意:a、大小:必须明确,必须是常量或常量表达式,不能是变量;
int a[10];
int a[…0‟];
int a[3+7];
int y=100;
int a[y];
b、内存变量名:
int a;
a
c、单元格引用:
单元格的引用:数组名[下标] a[下标]
下标表示:常量、变量、常量表达式、变量表达式
下标范围:0<=下标<大小
int a[10];
a[3]=50; a[1+2]=50; a[2>5]=69;
int i=5, a[i]=90; a[i-2]=89
2) 输入、输出
输入
①定义初始化
int a[10]={1,2,3,4,5,6,7,8,9,0}; 全部初始化
int a[10]={1,2,3,4,5};部分初始化,其余为零
a[6]=0;
int a[]={1,2,3,5,6,7};以赋值元素的个数来决定数组
的大小
int a[10]={0}; 存放10个零
注意:int a[10];
a={1,2,4,5……} 写法错误,只能定义同时初始化
②从键盘读入
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
输出
正序输出数组元素
for(i=0;i<10;i++)
printf(“%d”,a[i]);
倒序输出数组元素
for(i=9;i>=0;i--)
printf(“%d”,a[i]);
3) 应用:
a.遍历一维数组(求和、平均、最大、最小、移动)
b.标志位:(逆置、将结果存入数组)
int a[10];
for(i=0;i<10;i++)
{
处理a[i]
}
例如:给定一维数组int a[10];求其累加和。
int a[10]={……..};
int I,s;
s=0;
for(i=0;i<10;i++)
{
s=s+a[i];
}
printf(“%d”,s);
例如:给定一维数组int a[6]={3,1,8,5,7,6};请编程调整成1 8 5 7 6 3
t=a[0];
for(i=1;i<6;i++)
{
a[i-1]=a[i];
}
a[i-1]=t;
例如:给定一个一维数组int a[10],将其逆置后输出.
画图分析:
int i,j;
i=0;j=9;
while(i { t=a[i]; a[i]=a[j; a[j]=t; i++; j--; } 例如:寻找200~400之间所有能被7或9整除的数,存入数组int a[200]中,然后输出。 c=0; for(i=200;i<=400;i++) { if(i%7==0||i%9==0) a[c++]=i; } for(i=0;i { printf(“%d ”,a[i]); } 例如:给定一个一维数组int a[10] ;求最大值。 0 1 2 3 4 5 6 7 8 9 max=a[0]; for(i=1;i<10;i++)