一维数组的基础知识及应用

上传人:mg****85 文档编号:56628250 上传时间:2018-10-14 格式:PPT 页数:40 大小:508.50KB
返回 下载 相关 举报
一维数组的基础知识及应用_第1页
第1页 / 共40页
一维数组的基础知识及应用_第2页
第2页 / 共40页
一维数组的基础知识及应用_第3页
第3页 / 共40页
一维数组的基础知识及应用_第4页
第4页 / 共40页
一维数组的基础知识及应用_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《一维数组的基础知识及应用》由会员分享,可在线阅读,更多相关《一维数组的基础知识及应用(40页珍藏版)》请在金锄头文库上搜索。

1、文件输入输出框架,#include using namespace std; ifstream fin(“apple.in”); ofstream fout(“apple.out”); int main() ,C+数组,东北师大附中 谷方明,问题提出,如何在程序中保存多个数据?10个,100个,1000个,更具体的,如何保存一个数列?,数组,数组是相同类型的数据组成的有序集合。数组中每一个数据称为数组元素可以用一个数组名和下标来唯一确定数组中的元素。,一维数组定义,一维数组定义的一般形式:数据类型 数组名常量表达式;如: int a5;数组名是一个标识符 常量表达式的值表示数组元素的个数 一维

2、数组中的元素在内存中按下标序号顺序存放,引用一维数组的元素,C+语言规定,只能引用数组中的元素,而不能一次引用整个数组引用数组元素的一般形式:数组名下标如 a2C+数组的下标从0开始,一维数组初始化,在定义时给出数组元素的值称作初始化。在定义时可以给出全部数据元素的值;也可以给出部分数据元素的值int a5=1,2,3,4,5;int a5=1,2,3 若给出全部数据元素的值,可不指定数组长度int a =1,2,3,4,5,一维数组的赋值,除了在定义时给出数组元素的值,数组可以通过赋值语句和输入语句赋初值。不能整个数组赋值,只能逐个元素赋值for (int i=0;iai; 一维数组元素的输

3、出不能整个数组输出,只能逐个元素输出。一般用for循环做。如:for (int i=1;i5;i+)coutai;,例1,将一个数列中的所有元素倒序排放 。程序名:rever.cpp 键盘输入输出 输入格式: 第一行:一个整数n(nai;for(int i=n-1;i=0;i-)/逆序输出coutai“ “;coutendl;return 0; ,例3,将数组a中第一个元素移到数组末尾,其余数据依次往前平移一个位置。程序名:cycle.cpp 键盘输入输出 输入格式: 第一行:一个整数n(n=100),表示数列中数的个数 第二行:用空格隔开的n个整数 输出格式:n个已倒序排放的数,以空格分隔,

4、分析:1)把第一个元素的值取出来放在一个临时变量temp中;2)通过a2a1、a3a2,anan-1,实现移动;3)将temp值送入an。,例3 计算灯的开关,有N个灯放在一排,从1到N依次顺序编号。有N个人也从1到N依次编号。1号将灯全部关闭,2号将凡是2的倍数的灯打开;3号将凡是3的倍数的灯作相反处理,以后的人都和3号一样,将凡是自己编号倍数的灯作相反处理。试计算第N个操作后,哪几盏灯是点亮的。(表示灯打开,表示灯关闭) 程序名: light.cpp 键盘输入输出,分析每盏灯使用数组中的一个元素表示,1代表开,0代表关。然后模拟每个人的操作标志数组方法,用数组解题的一般步骤,定义数组 给数

5、组赋初值 运算和操作 输出,例4,输出斐波列契数列的前N项(5个1行)0 1 1 2 3 5 8 13 21 程序文件名:fibo.cpp,分析:1、 写出递推公式; 2、复习前面学过的方法:用几个变量3、如何实现5个1行:设一个变量i ,初值为0,输出一次,i加1,并且判断i % 5 = 0 时换行便行,重新置i为0 。,例5 查找,查找在数组中是否有等于key的数,如果有,则返回这个数在数组中第一次出现的位置;如果没有,则返回0程序名:find.cpp 文件输入输出 输入格式: 第一行:一个整数n(n=100),表示数列中数的个数 第二行:用空格隔开的n个整数 第三行:一个整数key,表示

6、待查找的数 输出格式:一个整数,表示key出现的位置,例6,输入n个整数,找出最小数所在位置,并将它与第一个数对调位置。程序名:findmin.cpp 文件输入输出 输入格式: 第一行:一个整数n(n=100),表示数列中数的个数 第二行:用空格隔开的n个整数 输出格式:n个调整后的整数,用空格分隔,例7 排序,有n个数存放于数组a中,将其按照从小到大的顺序重新排列。程序名:sort.cpp 文件输入输出 输入格式: 第一行:一个整数n(naij;aij*=ai j;coutaijendl;,二维数组的初始化,1. 分行给二维数组赋初值int a34=1,2,3,4,5,6,7,8,9,10,

7、11,12;这种赋值方法比较直观,把第一对括号内的数值赋给第一行的元素,第二括号内的数值赋给第二行的元素,依此类推。这种方式,每维可部分赋值;如果提供全部数值,第一维可省略 2. 可以将所有数据写在一个花括号内,这时,计算机自动按数组元素在内存中的排列顺序对各元素赋初值。例:int a34=1,2,3,4,5,6,7,8,9,10,11,12;,例1 矩阵的行列互换,将一个二维数组的行列互换,存到另外一个二维数组中。例如:a= 1 2 3 行列互换后放在数组b中,b= 1 4 4 5 6 2 53 6,例3 蛇形排列(课后思考),将整数1n2蛇形排列放到n*n的矩阵中,放好后输出矩阵(从上到下

8、,从左到右,从下到上,从右到左)。,分析方法一:用计算机模拟人添数的过程方法二:数学方法。给定每个数,确定它在数组中的位置。,多维数组,多维数组类似于二维数组例如,三维数组定义形式为:数据类型 数组名常量表达式1常量表达式2常量表达式3;double a234定义了三位数组,共2*3*4=24个元素。多维数组在内存中的排列顺序类似于二维数组,第一维的下标变化最慢,最右边的下标变化最快。a000,a001,a002,a003,a010,【问题1】陶陶摘苹果(apple.pas/c/cpp)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。

9、陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。,【输入文件】输入文件apple.in包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。 【输出文件】输出文件apple.out包括一个整数,表示

10、陶陶能够摘到的苹果的数目。,问题2、现在面值分别为分、分、分、分和分的邮票,每种邮票的张数分别为张,张,张,张和张,编程输出用些邮票可贴出多少种不同的邮票面值,问题3、将一幅扑克去掉大小王,用A113来代表红桃的13张牌,B113来代表黑桃,同样用C113,D113表示梅花和方块。现要求编程实现模拟摸牌,让4人各取13张牌,分四行输出。,问题4、猴子选大王(约瑟夫问题)n只猴子要选大王,选举办如下:所有猴子按1,2,3,n编号围坐一圈,从第1号开始按1、2、3、m报数,凡报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。n和m由键盘输入,输出最后剩下的猴子的号。编写程序实现上述过程。,

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

当前位置:首页 > 生活休闲 > 科普知识

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