- 49
- 0
- 约 73页
- 2017-06-26 发布于湖北
- 举报
ch08-数组
变长数组(C99) 在C89中,数组变量的长度必须用常量表达式进行定义。 但是在C99中,有时候也可以使用非常量表达式。 程序reverse2.c是reverse.c的修改版,它阐释了这种使用方法。 * reverse2.c ? /* Reverses a series of numbers using a variable-length array - C99 only */ ? #include stdio.h ? int main(void) { int i, n; ? printf(How many numbers do you want to reverse? ); scanf(%d, n); ? int a[n]; /* C99 only - length of array depends on n */ ? printf(Enter %d numbers: , n); for (i = 0; i n; i++) scanf(%d, a[i]); * printf(In reverse order:); for (i = n - 1; i = 0; i--) printf( %d, a[i]); printf(\n); ? return 0; } * 变长数组(C99) 程序reverse2.c 中的数组a即是变长数组(variable-length array,VLA)。 变长数组的长度是程序在执行时计算的。 变长数组的主要优点是程序在执行时可以准确计算出所需的元素个数。 如果让程序员来指定长度,数组可能过长(浪费内存)或过短(导致程序出错)。 * 变长数组(C99) 数组的长度不一定要用变量来指定,任意表达式都可以: int a[3*i+5]; int b[j+k];? 像其它数组一样,变长数组也可以是多维的: int c[m][n]; 变长数组的限制: 没有静态存储期限(将在第18章中讨论)。 没有初始化式。 * 数组编程实例——冒泡排序 在程序设计中,排序是十分重要和基本的一种操作。排序在算法相关课程中占有很大篇幅,实现排序的算法也非常多。其中,冒泡排序一直由于其简洁的思想方法而倍受青睐。 * 数组编程实例——冒泡排序 排序:给定若干数据,按照某种标准,将其顺序重新排列,称为排序。 注意:排序的标准很多,“从大到小”、“从高到低”、“从新到旧”等等,甚至一些不那么直观的标准,也可以用于排序。 譬如:Windows资源管理器中对某个目录下文件/文件夹的排序 * 冒泡原理 冒泡排序和气泡在水中不断往上冒的情况有些类似。气泡大的(大的数据)在下面,气泡小的(小的数据)在上面。 冒泡排序的基本原理是对存放原始数据的数组,按从前往后的方向进行多次扫描,每次扫描称为一趟。当发现相邻两个数据的次序与排序要求的大小次序不符合时,即将这两个数据进行互换。这样,较小的数据就会逐个向前移动,好象气泡向上浮起一样。 例:用冒泡排序的方法将下面一无序数组 排成从小到大的序列: { 49,38,65,97,76,13,27,49 } 分析:首先为了方便分析,我们把所给的数据 先用一个表格列出来,如下: 对比原数据经过第一趟排序,实现了什么目的? 第一趟排序,一共进行了多少次比较? 49 27 13 76 97 65 38 49 数据 8 7 6 5 4 3 2 1 序号 4938,交换位置 原数据和序号 序号 1 2 3 4 5 6 7 8 数据 49 38 65 97 76 13 27 49 第一趟排序的步骤: 序号 1 2 3 4 5 6 7 8 数据 38 49 65 97 76 13 27 49 序号 1 2 3 4 5 6 7 8 数据 38 49 65 97 76 13 27 49 序号 1 2 3 4 5 6 7 8 数据 38 49 65 97 76 13 27 49 序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 97 13 27 49 序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 13 97 27 49 序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 13 27 97 49 序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 13 27 49 97 经过第一趟排序,把最大的数沉到最底了! 4965, 保持不变 6597, 保持不变 9776, 交换位置 9713, 交换位置 9727, 交换位置 9749, 交换位置 经过第二趟排序,实现了什么目的? 经过第二趟排序,把第二大的数沉到倒数第二个位置了! 97 49 27 13 76 65 49 38 数据 8 7 6
您可能关注的文档
- 3.教师的职(专)业素养.ppt
- 3.6.1 美洲——美国.ppt
- 3.6认识星空.pptx
- 3.档案利用与服务.ppt
- 3.模块三财政金融基础知识.ppt
- 3.灯具安装工程施工方案.doc
- 3.8探索宇宙PPT.ppt
- 3.幻灯片版面制作捷径.ppt
- 3.英语语音、词汇、短语.ppt
- 3.8《制作一个一分钟计时器》.ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2025年寒假作业九年级化学人教版答案.pdf VIP
- 李子奈计量经济学(第五版)-第一章-绪论.pptx VIP
- 第21讲 相似三角形及其应用(练习)(教师版)-2025年中考数学一轮复习讲练测.docx VIP
- 信息安全管理手册.doc VIP
- 2026年高考数学二轮复习突破:立体几何与空间向量之球的切接问题.pdf VIP
- 2026年高考数学二轮复习突破:立体几何与空间向量之空间向量与空间角.pdf VIP
- 2026年养老院营销策划方案.docx VIP
- 博雅教育理念与钢琴教育融合思考.doc VIP
- 部编人教版五年级语文下册全册教案(表格版).pdf VIP
- 《数据采集与预处理》教学教案(全).doc VIP
原创力文档

文档评论(0)