C++课件1chap07章节

上传人:E**** 文档编号:90579108 上传时间:2019-06-13 格式:PPT 页数:67 大小:593KB
返回 下载 相关 举报
C++课件1chap07章节_第1页
第1页 / 共67页
C++课件1chap07章节_第2页
第2页 / 共67页
C++课件1chap07章节_第3页
第3页 / 共67页
C++课件1chap07章节_第4页
第4页 / 共67页
C++课件1chap07章节_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《C++课件1chap07章节》由会员分享,可在线阅读,更多相关《C++课件1chap07章节(67页珍藏版)》请在金锄头文库上搜索。

1、Chap 7 数 组,7.1 排序问题 7.2 找出矩阵中最大值所在的位置 7.3 进制转换,本章要点,什么是数组? 为什么要使用数组? 如何定义数组? 如何引用数组元素? 二维数组的元素在内存中按什么方式存放? 什么是字符串? 字符串结束符的作用是什么? 如何实现字符串的存储和操作,包括字符串的输入和输出? 怎样理解C语言将字符串作为一个特殊的一维字符数组?,输入一个正整数n (1n10),再输入n个整数,用选择法将它们从小到大排序后输出。 7.1.1 程序解析 7.1.2 一维数组的定义和引用 7.1.3 一维数组的初始化 7.1.4 使用一维数组编程,7.1 排序问题,7.1.1 程序解

2、析排序,#include int main(void) int i, index, k, n, temp; int a10; /* 定义1个数组a,它有10个整型元素*/ printf(“Enter n: “); scanf(“%d”, ,Enter n: 10 Enter 10 integers: 3 5 2 8 1 22 89 0 -1 7 After sorted: -1 0 1 2 3 5 7 8 22 89,for(i = 0; i n; i+) printf(“%d “, ai);,数组:相同类型数据的有序集合,在内存中连续存放。 由数组名和下标惟一地确定每个数组元素 每个元素都属

3、于同一类型 一批相同类型的变量使用同一个数组变量名,用下标来相互区分。 优点:表述简洁,可读性高;便于使用循环结构,数组,7.1.2 一维数组的定义和引用,1、定义 类型名 数组名数组长度 类型名:数组元素的类型 数组名:数组(变量)的名称,标识符 数组长度:常量表达式,给定数组的大小 int a10; 定义一个含有10个整型元素的数组 a char c200; 定义一个含有200个字符元素的数组 c float f5; 定义一个含有5个浮点型元素的数组 f,2、引用,先定义,后使用 只能引用单个的数组元素,不能一次引用整个数组 数组名下标 下标:整型表达式 取值范围:0,数组长度-1 int

4、 a10; 10个元素:a0、a1、 a9 数组元素的使用方法与同类型的变量相同 scanf(“%d“, ,下标不要越界 不能使用a10,定义数组 类型名 数组名数组长度 引用数组元素 数组名下标 int a10; a0 = a9 = 0; ak = temp;,区分数组的定义和数组元素的引用,下标不要越界,数组长度为常量,7.1.3 一维数组的初始化,定义数组时,对数组元素赋初值 类型名 数组名数组长度 = 初值表; int a10 = 1,2,3,4,5,6,7,8,9,10; a0=1, a1=2,. a9=10 静态数组、动态数组的初始化 static int b5 = 1, 2, 3

5、, 4, 5; 静态存储的数组如果没有初始化,所有元素自动赋0 static int b5; 动态存储的数组如果没有初始化,所有元素为随机值 auto int c5;,static int b5 = 1, 2, 3; b0 = 1, b1 = 2, b2 = 3, b3 = 0, b4 = 0 auto int fib20 = 0, 1; fib0 = 0, fib1 = 1, 其余元素不确定 如果对全部元素都赋初值,可以省略数组长度 int a 10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,针对部分元素的初始化,建议不要省略数组长度,7.1.4 使用一维数组编程,数组和

6、循环 for(i = 0; i n; i+) printf(“%d “, ai); 数组下标作为循环变量,通过循环,逐个处理数组元素,一维数组示例,例 7-2 用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。1, 1, 2, 3, 5, 例7-3 输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。 例 7-4 输入n(n10),再输入n个数 (1) 求最小值 (2) 求最小值和它所对应的下标 (3) 将最小值与第一个数交换,输出交换后的n个数 例 7-1 输入n(n10),再输入n个数,

7、用选择法将它们从小到大排序后输出。,用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。 1, 1, 2, 3, 5, 8, 13, 用数组计算并存放fibonacci数列的前20个数 f0 = f1 = 1 fn = fn-1 + fn-2 2n19,例 7-2 计算fibonacci数列,#include int main(void) int i; int fib20 = 1, 1; /* 数组初始化 */ for(i = 2; i 20; i+) fibi = fibi - 1 + fibi - 2; for(i = 0; i 20; i+) printf(“%6

8、d“, fibi); if(i + 1) % 5 = 0) /* 5个数换行 */ printf(“n“); return 0; ,例 7-2 源程序,1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。 输入:2 9 8 9 6 9 输出:1 输入:2 9 8 9 6 7 输出:Not Found,例7-3 在数组中查找一个给定的数,#include int main(void) i

9、nt i, flag, x; int a5; printf(“Enter 5 integers: “); for(i = 0; i 5; i+) scanf(“%d“, ,例 7-3 源程序,Enter 5 integers: 2 9 8 1 9 Enter x: 9 Index is 1,Enter 5 integers: 2 9 8 1 9 Enter x: 7 Not Found,#include int main(void) int i, flag, x; int a5; printf(“Enter 5 integers: “); for(i = 0; i 5; i+) scanf(“

10、%d“, ,例 7-3 思考(1),Enter 5 integers: 2 9 8 1 9 Enter x: 9 Index is 1 Index is 4,#include int main(void) int i, sub, x; int a5; printf(“Enter 5 integers: “); for(i = 0; i 5; i+) scanf(“%d“, ,例 7-3 思考(2),Enter 5 integers: 2 9 8 1 9 Enter x: 9 Index is 4,#include int main(void) int i, min, n; int a10; p

11、rintf(“Enter n: “); scanf(“%d“, ,例 7-4(1) 求最小值,Enter n: 6 Enter 6 integers: 2 9 -1 8 1 6 min is -1,输入n(n10), 再输入n个数, 输出最小值和它所对应的下标。 用index记录最小值对应的下标 aindex就是最小值,例 7-4(2) 求最小值及其下标,#include int main(void) int i, index, n; int a10; printf(“Enter n: “); scanf(“%d“, ,求最小值及下标,Enter n: 6 Enter 6 integers:

12、2 9 -1 8 1 6 min is -1 sub is 2,输入n(n a0,例 7-4(3) 交换最小值,例 7-1 选择法排序,输入n(n10), 再输入n个数,用选择法将它们从小到大排序后输出。 设 n=5 3 5 2 8 1,(1) 1 5 2 8 3 (2) 2 5 8 3 (3) 3 8 5 (4) 5 8,3 5 2 8 1 (n=5) 5个数(a0a4)中找最小数,与a0交换 (1) 1 5 2 8 3 a4 a0 4个数(a1a4)中找最小数,与a1交换 (2) 1 2 5 8 3 a2 a1 3个数(a2a4)中找最小数,与a2交换 (3) 1 2 3 8 5 a4 a

13、2 2个数(a3a4)中找最小数,与a3交换 (4) 1 2 3 5 8 a4 a3,选择法(1),(1) n个数 (a0an-1) 中找最小数,与 a0 交换 (2) n-1个数 (a1an-1) 中找最小数,与 a1 交换 (n-1) 2个数 (an-2an-1) 中找最小数,与 an-2 交换,(1) 5个数 (a0a4) 中找最小数,与 a0 交换 (2) 4个数 (a1a4) 中找最小数,与 a1 交换 (3) 3个数 (a2a4) 中找最小数,与 a2 交换 (4) 2个数 (a3a4) 中找最小数,与 a3 交换,选择法(2),流程图,选择法排序 (程序段),for(k = 0;

14、 k n-1; k+) index = k; for(i = k + 1; i n; i+) if(ai aindex) index = i; temp = aindex; aindex = ak; ak = temp; ,Enter n: 5 Enter 10 integers: 3 5 2 8 1 After sorted: 1 2 3 5 8,将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及它的行下标和列下标,并输出该矩阵。 7.2.1 程序解析 7.2.2 二维数组的定义和引用 7.2.3 二维数组的初始化 7.2.4 使用二维数组编程,7.2 找出矩阵中最大值所在的位置,

15、7.2.1 程序解析求矩阵的最大值,例 7-5 将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及它的行下标和列下标,并输出该矩阵。 row 记录最大值的行下标 Col 最大值的列下标 arowcol 就是最大值,例7-5 源程序,int main(void) int col, i, j, row; int a32; printf(“Enter 6 integers:n“) ; for(i = 0; i arowcol) row = i; col = j; printf(“max = a%d%d = %dn“, row, col, arowcol); return 0; ,Enter 6 integers: 3 2 10 -9 6 -1 3 2 10 -9

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号