- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言第四-五章
第四章 数 组
4.1数组的概念
C 语言可以根据用户需要,用基本数据类型定义特殊性质的数据类型,称为构造类型。构造类型有:数组、结构、联合。
数组:相同数据类型变量的有序集合。有序表现在数组元素在内存中连续存放。
数组用一个名字作为标识。为区分各元素,每个元素有一个用整型表示的序号,称之为下标。下标可以有多个,下标的个数称为数组的维数。
如:十个整型变量 k[0],k[1], … k[9]
数组名 一个下标。
三个学生三门课程的成绩
学号 0 1 2 课程
下标一:行 0 97.5 80.5 94.5 下标二:列
1 76.5 81.4 90.0
2 60.0 64.5 75.0
数组元素:a[1][1]
数组必须先说明后使用。说明的目的如下:
⒈说明数组的名字(标识)。
⒉说明数组的类型。
⒊说明数组的维数。
⒋确定各维下标的变化范围。
编译系统将根据说明,开辟内存单元按特有的顺序和相应的类型为各元素分配内存单元。
优 点:
便于处理成批数据
便于构造算法
便于指针访问
4.2 一维数组
int id[5], iyear[10];
float fScore[36];
⒈一维数组的说明
说明方式:
type array1[常量表达式], …, arrayn[常量表达式];
用[ ]包含的常量表达式。数组的下标从0变化到常量达式的值减一。
数组名,用标识符命名。
类型说明符,根据需要可加修饰说明。说明数组的类型
当说明数组后,编译时系统会根据定义的类型分配连续的一段内存单元给数组的各元素。
系统为数组分配的连续内存单元,每个单元占两个BYTE。首地址用数组名id表示。
id[0]
id[1]
id[2]
id[3]
id[4]
2. 一维数组的初始化
(1) 数组的元素可以在说明数组时初始化
int a[10]={1,2,3,4,5,6,7,8,9,10};
/*说明数组,同时初始化全部元素。*/
float fValue[10]={1.0,2.0,3.0};
/*说明数组,给部分元素初值,其余元素为0。*/
unsigned a[ ]={0x0000,0x0001,0x0002};
/*当数组元素全部赋初值时,可以不指定长度*/
(2) 程序运行时初始化
for ( i=0;i10 i++ )
scanf ( “%d”,a[i] );
?
在程序执行过程中进行赋值
⒊数组的引用
原 则:只能引用数组元素,而不能引用整个数组。
引用方式:数组名[整型表达式] /*下标变量*/
每个数组元素,可以出现在简单变量能够出现的任何地方。
a[1]=12;
s=a[2.5]+a[1]*20;
若定义: int a[10];
不能写成:printf(“%d”,a[10]);或printf(%d,a);
⒋举例
求10个学生一门课程的平均分,并输出低于平均成绩的分数。
#include stdio.h
void main(void)
{
float fScore[10],aver=0; 说明数组。
int i;
for(i=0;i10;i++)
{
scanf(“%f”,fScore[i]); 循环输入各元素的值并累加
aver+=fScore[i];
}
aver/=10;
for( i = 0; i 10; i++)
{ 循环判断条件,满足条件输出。
if(fScore[ i ]aver)
printf(“num=%d,score=%f ” ,i+1,fScore[ i ]);
}
}
数组的常用算法
数组是同类型数据的集合。便于整体处理数据,数组操作的主
要算法有:⒈求极值;⒉排序;⒊查找;
⒈求极值及其位置
一维数组的极值
#include stdio.h
void main(void)
{
in
文档评论(0)