数据的存储结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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++)

相关文档
最新文档