资源描述:
《C语言程序设计(第三版)教学课件 丁亚涛 第6章 数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章数组21世纪高等学校精品规划教材掌握一维数组、二维数组的定义、初始化和数组元素的引用掌握字符数组的定义、初始化和数组元素的引用掌握字符串的存储方法和应用掌握有关处理字符串的系统函数的使用方法【问题】从键盘接收10个数,求平均数并输出所有小于平均数的数。【分析】从键盘接收10个数,求平均数很简单,可以采用边接收边求和的方法,最后根据总和求平均数。下面的程序可以做到:inta,i;floats;for(i=0,s=0;i<10;i++){scanf("%d",&a);s=s+a;}6.1数组的基本概念所谓数组,就是一组
2、类型相同的变量。它用一个数组名标识,每个数组元素都是通过数组名和元素的相对位置——下标来引用的。数组可以是一维的,也可以是多维的。inta1,a2,a3,…,a10inta[10];===(a[0],a[1],a[3],…,a[9])其中下标从0开始,和前面不同的是,这些变量统一共享一个数组名a。6.2一维数组一维数组用于存储一行或一列的数据。定义方式如下:<类型><数组名>[<常量表达式>];<类型>:简单类型或结构体、共用体等复杂类型。<数组名>:数组的标识、命名规则同变量名。<常量表达式>:用来定义数组的长度,因为
3、数组也必须先定义再使用。例如:inta[10];chars[100];注意:C语言不允许对数组的大小作动态定义,即定义行中的数组长度可以包括常量和符号常量,但不能包括变量。例如,下面的定义是错误的。intn=10;inta[n];/*因为n为变量*/而下面的定义是正确的:#defineN10main(){inta[N];/*N为符号常量*/…}定义数组的同时可以对数组初始化。以下初始化的方法都是允许的:inta[10]={1,2,3,4,5,6,7,8,9,10};//完全初始化inta[]={1,2,3,4,5,6,7
4、,8,9,10};//完全初始化,可省略长度inta[10]={1,2,,4,5};//部分元素a[0]、a[1]、a[3]、a[4]初始化注意:数组元素的下标从0开始。数组名不能像变量一样进行赋值操作。以下用法是错误的:inta[10],b[10];a=b;/*错误*/正确的定义:inta[10];/*定义整型数组a,它有10个元素*/chars[20];/*定义字符型数组s,它有20个元素*/floatf[5],g[10];/*定义实型数组f和g,f数组有5个元素,g数组有10个元素*/【例6-1】编程求10个数中的
5、最大值、最小值、平均值。输出所有小于平均值的数。voidmain(){inta[10],i;intmax,min;floats=0,aver;printf("Input10numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);s=max=min=a[0];for(i=1;i<10;i++){if(a[i]>max)max=a[i];elseif(a[i]6、minis%d",min);printf("averageis%.2f",aver);for(i=0;i<10;i++)if(a[i]<数组名>[<常量表达式1>][<常量表达式2>];例如:inta[3][4];/*3×4的矩阵,共12个元素*/floatf[5][10];6.3二维数组和多维数组inta[3][4]a[0][0]
7、a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]二维数组的初始化完全初始化inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};省略行的完全初始化inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};分行完全初始化,可读性较好inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};部分初始化inta[3][4]={1,2,3,4};
8、【例6-2】演示二维数组的定义及元素引用#includemain(){inti,j,k=0;inta[3][4];for(i=0;i<3;i++)/*变量i控制数组a的行下标*/{for(j=0;j<4;j++)/*变量j控制数组a列下标*/{a[i][j]=k;printf("a[%d][%d]=