版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第4章 数 组,青海大学 计算机系,程序设计基础 I,2020/7/10,2,第4章 数组,本章重点介绍 : 4.1 一维数组 4.2 二维数组 4.3 字符数组与字符串,2020/7/10,3,第4章 数组,一个人N门课的成绩怎样存储和处理? 一个班N门课的成绩怎样存储和处理?.,这些数据的特点:具有相同的数据类型。 为了方便地使用这些数据,C语言提供了一种构造数据类型:数组。 例如:存储学生成绩用实型数组 score5 其中:score是数组名。该数组可以存放5个成绩,分别用下标变量表示:score0,score1,score4。 下标变量也称为数组元素。,2020/7/10,4,4.
2、1 一维数组,例如: int a10; float score5; “数据类型”: 是数组元素的数据类型。 “数组名”: 遵循C语言标识符规则。 “常量表达式”:表示数组中有多少个元素,即数组的长度。它可以是整型常量、整型常量表达式或符号常量。,4.1.1 一维数组的定义,数据类型 数组名常量表达式;,2020/7/10,5,以下数组定义是正确的: #define N 10 float score1N, score2N; int num10+N; char c26;,以下数组定义是不正确的: int array(10); int n; float scoren; double ba. d; c
3、har str ;,4.1.1 一维数组的定义(续),2020/7/10,6,数组在内存的存放,数组下标从0开始。 一维数组的数组元素在内存里按顺序存放。 数组名代表数组的首地址,即score的值与score0 的地址值相同。,score数组,2020/7/10,7,4.1.2 数组元素的引用,格式:,例如:输入学生成绩 for(i=0;i5;i+) scanf(%f,例如:fibn=fibn-1+fibn-2;,下标表达式的值必须是整型表达式。,数组名下标表达式,2020/7/10,8,4.1.2 数组元素的引用(续),说明: 下标从0开始(下界为0),数组的最大下标(上界)是数组长度减1。
4、 例如: int a10; scanf (%d, /* 下标越界 */,C编译系统不做越界检查,如果引用的数组元素 超出数组范围会破坏其他变量的值。,2020/7/10,9,4.1.2 数组元素的引用(续), 是下标运算符,引用数组元素时,根据数组的首地址和下标数,计算出该元素的实际地址,取出该地址的内容进行操作。,如引用 score2: (1)计算 2000+2*4=2008 (2)取出2008的内容,2020/7/10,10,4.1.3 一维数组的初始化,初始化:在定义数组时给数组元素赋初值。,1在定义数组时,对全部数组元素赋初值 例如:int a5=0,1,2,3,4; 此时可以省略数组
5、长度,例如:int a =0,1,2,3,4; 2在定义数组时,对部分数组元素赋初值 例如:int a5=1,2,3;系统为其余元素赋 0 。 3当初值的个数多于数组元素的个数时,编译出错 例如: int a5=0,1,2,3,4,5;,2020/7/10,11,4.1.4 一维数组应用举例,【例4.1】将10个人的成绩输入计算机后按逆序显示。 #define N 10 main( ) int i;float scoreN; for (i=0; i=0; i-) printf(%6.1f,scorei); ,运行情况如下: 67 74 89 92 34 67 83 95 73 78 78.0
6、73.0 95.0 83.0 67.0 34.0 92.0 89.0 74.0 67.0,2020/7/10,12,【例4.2】输入5个整数,找出最大数和最小数所在位置,并把二者对调,然后输出。,思路: 求最大/小值采用打擂台的方法。 定义一维数组a存放被比较的数。 定义变量max:最大值, min:最小值, k:最大值下标 , j:最小值下标 。 各数依次与擂主进行比较, 若aimax 则: max=ai; k=i; 否则判断: 若aimin 则: min=ai; j=i; 当所有的数都比较完之后,将aj=max; ak=min; 输出a数组。,2020/7/10,13,main( ) in
7、t a5,max,min,i,j,k; for(i=0; imax) max=ai; k=i ; aj=max; ak=min; for (i=0; i5; i+) printf(%5d,ai); printf(n); ,程序运行情况如下: 5 7 2 3 1 5 1 2 3 7,2020/7/10,14,【例4.4】冒泡法排序(从小到大)。,以6个数:3、7、5、6、8、0为例。,第一趟排序情况如下: 3 7 5 6 8 0 第一次 3和7比较,不交换 3 7 5 6 8 0 第二次 7和5比较,交换 3 5 7 6 8 0 第三次 7和6比较,交换 3 5 6 7 8 0 第四次 7和8比
8、较,不交换 3 5 6 7 8 0 第五次 8和0比较,交换 3 5 6 7 0 8 在第一趟排序中,6个数比较了5次,把6个数中的最大数8排在最后。,2020/7/10,15,冒泡法排序 (续),第二趟排序情况如下: 3 5 6 7 0 8 第一次 3和5比较,不交换 3 5 6 7 0 8 第二次 5和6比较,不交换 3 5 6 7 0 8 第三次 6和7比较,不交换 3 5 6 7 0 8 第四次 7和0比较,交换 3 5 6 0 7 8 在第二趟排序中,最大数8不用参加比较,其余的5个数比较了4次,把其中的最大数7排在最后,排出7 8。 以此类推: 第三趟比较3次,排出 6 7 8 第
9、四趟比较2次,排出 5 6 7 8 第五趟比较1次,排出 3 5 6 7 8 最后还剩下1个数0,不需再比较,得到排序结果: 0 3 5 6 7 8,2020/7/10,16,冒泡法排序 (续),从上述过程可以看到:n个数要比较n-1趟,而在第j趟比较中,要进行n-j次两两比较。,2020/7/10,17,#define N 6 main( ) int aN; int i,j,t; for (i=0; iai+1) t=ai;ai=ai+1;ai+1=t; printf(The sorted numbers: n); ,程序运行情况如下: 3 7 5 6 8 0 0 3 5 6 7 8,2020/7/10,18,以6个数:3、7、5、6、8、0为例。 思路: 第一趟:将第一个数依次和后面的数比较,如果后面的某数小于第一个数,则两个数交换,比较结束后,第一个数则是最小的数。 第二趟:将第二个数依次和后面的数比较,如果后面的某数小于第二个数,则两个数交换,比较结束后,第二个数则是次小的数; 。,【例4.5】选择法排序(从小到大)。,2020/7/10,19,【例4.5】选择法排序(续),2020/7/10,20,#define N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京市东城区口腔医院医护人员招聘考试试题及答案详解
- 2025年黄南自治州藏医院医护人员招聘考试题库及答案详解
- 2026年黄冈市第一人民医院医护人员招聘笔试参考题库及答案详解
- 2025年温州市精神病院医护人员招聘考试试题及答案详解
- 2026年北京地坛医院医护人员招聘笔试备考试题及答案详解
- 2025年沈阳市于洪区第二人民医院医护人员招聘考试试题及答案详解
- 2026年广东祈福医院医护人员招聘笔试参考题库及答案详解
- 2026年安全生产管理员鉴定仿真题
- 2026年自然资源规划管理工作考核方案
- 2026年人力资源知识技能竞赛
- 《探索宇宙的奥秘:人类对宇宙的认知》课件
- 2024-2025学年小学信息技术(信息科技)第二册电子工业版(2022)教学设计合集
- GB/T 44539-2024萤石技术规范
- GB/T 24304-2024动植物油脂茴香胺值的测定
- 创新创业创造:职场竞争力密钥智慧树知到期末考试答案章节答案2024年上海对外经贸大学
- 三级公立医院绩效考核微创手术目录(2022版)
- 2024年广东省中考语文试卷附真题答案
- 快消品渠道营销策略研究
- 人教版高中化学选择性必修3 第二章测评(含答案)
- 麦凯66表格(完全版)
- 作文格子纸(小学生专用Word版)
评论
0/150
提交评论