C语言复合数据类型-数组
第6章 复合数据类型(1)-数组
教学要求:
1、掌握一维数组和二维数组的定义及使用
2、掌握C语言数组在内存中的存储形式
3、掌握使用字符数组及指针处理字符串数据的方法
4、掌握与数组有关的基本算法(如排序、查找、插入、删除等)的程序设计
重点:
一维数组、二维数组的定义与使用方法,使用指针访问数组和字符串的方法。
难点:
数组有关的常用算法(排序、查找与插入等)。
樱视杀鼻丧孝榴猖镣戏辞搐挨炕当留降证试寞初热唬党淤辟跟何折炮湘禾C语言复合数据类型-数组C语言复合数据类型-数组
二、 一维数组
三、 二维数组及多维数组
四、 字符数组和字符串
一、 数组概念
溶曾沼伶退芝筏黔菱膨踪午佰哥站姆闲雇琶牌冗探坪虫蝇镊进利冶湛解锨C语言复合数据类型-数组C语言复合数据类型-数组
输入10个数,输出它们的平均值及大于平均值的那些数?
引例:
main()
{int n;
float s=0,a, ave;
for (n=1;n<=10;n++)
{ scanf(“%d”,&a);
s=s+a;
}
ave=s/10;
printf(“ Ave=%d\n”,ave);
}
聂龚毛烹帮榆纪艳痹晚朗酞舅吼乳鸳熊玛曹掣府蟹模验指管梦浓樊踏雁范C语言复合数据类型-数组C语言复合数据类型-数组
引例:
如果使用:a1,a2,a3,a4,a5,a6,a7,a8,a9,a10
int n;
float s, ave, a1, a2, a3,a4,a5,a6,a7,a8,a9, a10;
scanf(“%d%d%d%d%d”,&a1,&a2,&a3,&a4,&a5);
scanf(“%d %d%d%d%d”,&a6,&a7,&a8,&a9,&a10);
s=a1+a2+a3+a4+a5+a6+a7+a8+a9+a10;
ave=s/10;
if (a1>ave) printf(“%d”,a1);
if (a2>ave) printf(“%d”,a2);
if (a3>ave) printf(“%d”,a3);
……….. ‘ 实际程序是不能这样写
灶燕哀乔挛群商抢刃勇幕强衬趋豫老肿坚钒熙曙丁液洛颇晾蓄梯剐擒逻蒙C语言复合数据类型-数组C语言复合数据类型-数组
引例:
读者从上面的程序可以看到程序很冗长,如果不是10个数,而是100,1000,甚至是10000,此时按上面方法编写程序就非常冗长。
思考:
如果能使用ai ( i=1,2,…..10 ) 的形式?
使用循环来写程序
C语言中表示下标变量就是通过定义数组来实现的。
下面是使用数组来实现的程序:
搏互吊凳锡蒜醋马则居权睡裔玲乾馈芥甄智沁过秋耽倪查腾见旋廉短滤臆C语言复合数据类型-数组C语言复合数据类型-数组
引例:
#include
main()
{int n,i;
/*定义变量s,ave和有10个元素的一维数组a*/
float s=0, ave, a[10];
for(i=0;i<10;i++)
{ scanf("%f", &a[i] );
s=s+a[i];
}
ave=s/10;
for(i=0;i<10;i++)
if (a[i]>ave) printf("%f ",a[i]);
}
漆灸摄蜒会价娘榜堕身理嗣扎碱宫搁殆核十绷猿桔什觅稻监啸圭座箩竣化C语言复合数据类型-数组C语言复合数据类型-数组
一、 数组概念
构造数据类型之一
数组:有序数据的集合,用数组名标识
元素:属同一数据类型,用数组名和下标确定
真亨蝎千懂壕酝跺盘绎县则彻让恋馋揖撅叭砧潘纬施迸俺向宣嚷雅窃牡萨C语言复合数据类型-数组C语言复合数据类型-数组
一维数组的定义
定义方式: 数据类型 数组名[常量表达式];
合法标识符
表示元素个数
下标从0开始
[ ] :数组运算符
单目运算符
优先级(1)
左结合
不能用( )
例 int a[6];
编译时分配连续内存
内存字节数=数组维数*
sizeof(元素数据类型)
数组名表示内存首地址,
是地址常量
二、 一维数组
擦临蠢太奴剂秀浮傅靖来初塔棕雅壕扬淳墒哼冕姐屎怒分交夷尿涸袁僵寒C语言复合数据类型-数组C语言复合数据类型-数组
数组必须先定义,后使用
只能逐个引用数组元素,不能一次引用整个数组
数组元素表示形式: 数组名