数据的组织结构--一维数组
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int code, i, winner;
/* 职工投票 */
printf("\nEnter your selection<0 end>:\n");
do {
scanf("%d", &code);
if (code<0 || code>NUM) {
/* 检验输入的编码是否有效 */
printf("\nInvalid vote.");
数组是一种用来组织批量数据的数据类型。
可编辑ppt
3ຫໍສະໝຸດ Baidu
一、一维数组
一维数组:由若干具有相同类型的数据元素组成。每个元 素仅使用一个序号(下标)唯一标识。
一维数组定义
<元素类型说明符> <数组名>[长度];
int a[10];
➢ 元素序号(下标)从0开始,即a[0] a[1] …a[9]
➢ 长度即为元素的数量,必须给定
} else {
if (code!=0)
vote[code-1] = vote[code-1]+1; /* 累加票数 */
}
} while (code!=0);
可编辑ppt
13
/* 输出选票 */
printf("\n The amount of votes is :");
for (i=0; i<NUM; i++) { printf("%4d", vote[i]);
14
根据需求对数据进行统计
• 为了满足特定的需要,对一组数据的某些特征 进行统计是一项经常遇到的基本操作
– 例如
• 统计一段文本中某个字符出现的频率 • 统计学生考试的平均成绩 • ……
可编辑ppt
10
• 数据对象
– 每位候选人的得票数量 int vote[10]
– 投票时输入的编码 int code
– 最高得票数量
int winner
• 约束条件
– 假设投票时以 0 作为输入的结束标志
– 输入无效编码的检验
可编辑ppt
11
• 算法描述 开始
输入选票code
Y
选票合法? N
N code <> 0? Y
➢ 数组名的命名与通常变量命名方式相同
➢ 系统为它分配一片连续的存储空间
数组元素的引用形式
数组名[下标]
◆ 下可标编为辑p整pt 型表达式
4
说明: – 若数组长度为 n,下标的下限从0开始, 上限到 n-1。 – 注意下标不要越界,否则将产生不可 预料的运行结果, C语言并不检验下 标是否越界
问题:
} /* 计算最高得票数量 */
改为 winner = 0;
winner = 0;
for (i=1; i<NUM; i++) {
for (i=1; i<NUM; i++) {
if (vote[i]>=vote[winner])
if (vote[i]>vote[winner]) winner = i;
– 数组的输出
for(i=0; i < 10; i++)
printf(“%6.2f”, score[i]);
可编辑ppt
8
二、一维数组的编程实例
实例 1 根据条件对数据进行筛选
某个公司计划由职工推选一名办公室主任。 假设有10名候选人准备参与竞选。编写一个 程序,输入一组选举人的投票信息,统计每 个候选人的得票数目及选举结果。
可编辑ppt [P81,例4-1]
9
• 问题分析
– 记录每位候选人的得票数量(一维数组)
– 投票可通过循环输入1~10之间的整型数值来模 拟,需对候选人进行编号。例如,输入3代表某 个职工选举编码为3的候选人
– 找出最多的得票数量
– 再从所有的候选人中筛选出得票数量与最高得
票数量相同的人(可能有多人)
6
一维数组初始化
– 在定义数组时对数组元素赋以初值
int a[10]={0,1,2,3,4,5,6,7,8,9};
– 在对全部数组元素赋初值时,数组长度可
以省略
有几个初值,数组默认大小就是多大
int a[ ]={0,1,2,3,4,5,6,7,8,9};
– 只给一部分赋值,未设定初值的自动被设 定为0,数组长度不能省略
第四章
数据的组织结构—数组
一、一维数组 二、一维数组的编程实例 三、字符数组与字符串 四、二维数组
可编辑ppt
1
数组类型的应用背景
– 同时存在若干个用来描述同一性质 且不同个体的数据
– 将这些数据组织在一起形成批量数 据,共同参与处理,很多操作才具 有实际意义
可编辑ppt
2
例如:输入100名学生的成绩,要求输出高于 平均分的所有成绩。
} /* 输出得票最高的所有候选人 */
winner = i; } 后面是否修改,如何修改
printf("\nThe winner :");
for (i=winner; i<NUM; i++) {
if (vote[i]==vote[winner])
printf("%3d", i+1);
}
}
可编辑ppt
– C语言规定,数组名是一个地址常量, 代表所分配的内存区域的起始地址
可编辑ppt
5
数组的存储实现
例如: int a[8]; 为a分配的存储空间如图:
数组a的起始存储位置
a
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
所占字节数:
sizeof(元素类型)×元素个数
可编辑ppt
int a[10]= {0,1,2,3,4};
int digit[10]= {0};
可编辑ppt
7
一维数组的引用
– 利用赋值语句为数组元素赋值
for(i=0; i < 10; i++) a[i]=0;
– 数组的输入
for(i=0; i < 10; i++)
scanf(“%f”, &score[i]);
输出错误信息
code-1计数器加1
职工投票 输出选票 计算最高得票数量 输出得票最高的所有人选
Y
code <> 0?
结束
职工投票
N
可编辑ppt
12
程 #include <stdio.h> 序 #define NUM 10 代 main( ) 码{
int vote[NUM] = {0};
/* 候选人人数 */
单一数据考虑:用100个变量(a1,a2, ,a100) 存放学生成绩,与平均成绩(ave)进行判断,
if (a1>ave) printf(“%f\n”,a1);
if (a2>ave) printf(“%f\n”,a2);
用数组:for(i=1;i<=100; i++)
if(a[i]>ave) printf(“%f\n”,a[i]);