C语言-第4章数组

C语言-第4章数组

ID:44250957

大小:9.66 MB

页数:66页

时间:2019-10-20

C语言-第4章数组_第1页
C语言-第4章数组_第2页
C语言-第4章数组_第3页
C语言-第4章数组_第4页
C语言-第4章数组_第5页
资源描述:

《C语言-第4章数组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第6章数组14.1一维数组24.2二维数组34.3字符数组与字符串44.4数组作为函数参数Contents数组是C语言提供的一种最简单的构造类型,是一组具有相同数据类型的数据的有序集合。即数组由若干数组元素组成,其中所有元素都属于同一数据类型,且它们的先后次序是确定的。一、一维数组的定义类型说明符数组名[常量表达式];如:inta[5];表示:定义了一个整型的一维数组a,该数组有5个元素。说明:(1)数组名为用户自定义的合法C语言标识符。(2)数组名后是[],而非(),如:inta(5);错误。一维数组一维数组(3)常量表达式表示数组的长度,即

2、数组元素的个数。(4)C语言规定数组元素下标从0开始。如:定义inta[5],则a中包含下列5个元素:a[0],a[1],a[2],a[3],a[4],无元素a[5]。(5)常量表达式可以是整型常量、字符常量和符号常量,不能是变量。如:判断下列的数组定义是否合法。①intx[10],y[15*2];③intx(10);②#defineN10④intn=10;intx[N];floatx[n];不合法不合法一维数组二、一维数组元素的引用只能逐个引用数组元素而不能一次引用整个数组。数组元素的引用形式:数组名[下标]如:inta[10],b[10];

3、scanf(“%d”,a);b=a;printf(“%d”,b);错误。正确。for(i=0;i<=9;i++)scanf(“%d”,&a[i]);for(i=0;i<=9;i++)b[i]=a[i];for(i=0;i<=9;i++)printf(“%d”,b[i]);一维数组注意:(1)同一数组中的数组元素在内存中占有连续的存储单元。(2)数组名代表数组的起始地址,故a=&a[0]。如:假设定义inta[5],该数组存放在起始地址为200的一组连续的存储单元中,则执行printf(“%d”,a);语句后,输出结果为200。(3)C编译系统不

4、会自动检验数组元素下标是否越界,因此数组越界的检查是程序员的职责,编程时务必保证数组元素下标不越界,否则可能因越界而破坏其它存储单元中的数据。一维数组三、一维数组的初始化初始化:定义数组的同时给各元素赋初值。(1)给所有元素赋初值inta[5]={1,2,3,4,5};(2)给部分元素赋初值inta[5]={1,2,3};表示:给前3个元素赋值,后2个元素系统自动赋以0值。(3)初始化时,若给所有元素赋初值,可以不指定数组长度,此时长度自动定为所赋初值的个数。inta[]={1,2,3,4,5};等价于inta[5]={1,2,3,4,5};一

5、维数组四、一维数组的应用举例附例6.1数列问题(用“数组”实现)已知一数列,前三个数为1,1,2,从第4个数起,依次等于前三个数之和。求:(1)第20个数;(2)求前20个数之和。(类似P129例6-4)法1:f1=1;f2=1;f3=2;s=f1+f2+f3;for(i=4;i<=20;i++){f4=f1+f2+f3;s=s+f4;f1=f2;f2=f3;f3=f4;}printf(“the20this:%f,thesumis:%f”,f4,s);一维数组法2:用“数组”实现floats,a[20];inti;a[0]=1;a[1]=1

6、;a[2]=2;s=a[0]+a[1]+a[2];for(i=3;i<=19;i++){a[i]=a[i-1]+a[i-2]+a[i-3];s=s+a[i];}printf(“the20this:%f,thesumis:%f”,a[19],s);练习:已知:f(0)=f(1)=1f(2)=0f(n)=f(n-1)-2*f(n-2)+f(n-3)(n>2)编程:求f(0)—f(50)中最大值。一维数组[例6-3]排序问题(冒泡法、选择法)从键盘输入10个整数,将这10个整数按从小到大的顺序排列。法1:冒泡法(1)基本思想:依次比较相邻两数,若

7、为逆序,则交换。(2)排序过程:第1趟:从a[0]到a[9]依次比较相邻两数(a[0]与a[1],a[1]与a[2],…,a[8]与a[9]),若为逆序,则交换;排序后使得该趟中最大数被交换到该趟最后一个位置(a[9])。第2趟:从a[0]到a[8]依次比较相邻两数,若为逆序,则交换;排序后使得该趟中最大数被交换到该趟最后一个位置(a[8])一维数组…第i趟:从a[0]到a[10-i]依次比较相邻两数,若为逆序,则交换;排序后使得该趟中最大数被交换到该趟最后一个位置(a[10-i])。…第9趟:比较a[0]与a[1]。在这个过程中,大数不断往下

8、沉,小数不断往上冒,故称冒泡法排序。最多进行9趟。(思考:为什么是“最多”,而不是“一定需进行9趟”?)(3)改进:如果在某一趟排序过程中没有进行任何

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。