ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:21.84KB ,
资源ID:11981271      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11981271.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验5数组.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验5数组.docx

1、实验5数组中 南 大 学实 验 报 告课程名称 c+程序设计 实验项目名称 实验4 实验5 实验6 指导老师 向瑶 实验学生班级 电子信息工程1503 实验学生姓名 陶韬 学号 0903130309 实验时间 2016.4.1至4.10 实验地点 校本部科技楼4楼实验成绩评定 实验5 数组 实验5.15.1.1.题目:用选择法对10个整数排序。十个整数用cin输入,将选择排序与起泡法比较,分析它们的特点和效率选择法的算法:第一轮把第一个数和剩下的9个数比较 通过比较交换使得第一轮交换后第一个数为这10个数中最小的,然后进行第二轮交换 把第二个数和剩下的8个数比较,通过比较交换使得第二轮交换后第

2、二个数为这9个数中最小的5.1.2 代码#includeusing namespace std;void sawp(int &a,int &b);/ 交换函数的形参为引用void SetArray(int *a);/ 对数组进行初始化的函数void ShowArray(int *a);/对数组进行输出的函数void SortArray(int *a);/对数组进行排序的函数int main() int a10; SetArray(a);/把数组的首地址传递给该函数 cout排序前的数组为endl; ShowArray(a); SortArray(a); cout排序后的数组为endl; Sho

3、wArray(a);void swap(int &a,int &b) int temp; temp=a; a=b; b=temp;void SetArray(int *a) int i; cout请输入10个整数endl; for(i=0;iai;void ShowArray(int *a) int i; for(i=0;i10;i+) coutait;/为了使输出结果更加简洁我加入了水平制表符 if(i+1)%4=0)/每输出4个数组元素就换行 coutendl; void SortArray(int *a) int i,j; for(i=0;i9;i+)/外层循环控制轮数一共进行10-1=

4、9轮 for(j=i+1;jaj) swap(ai,aj); 5.1.3输出结果请输入10个整数123456672349087排序前的数组为1 2 34 5667 234 9 08 7 排序后的数组为0 1 2 78 9 34 5667 234 Press any key to continue5.1.4 用冒泡法进行排序算法 将相邻2个数比较 ,将较小的调到前头 第一轮结束后最大的数应该沉到最下面,然后进行第二轮比较 结束后第二大的数沉到倒数第二位 以此类推一共进行n-1轮比较 第j轮要进行j-1轮比较代码#includeusing namespace std;void sawp(int &

5、a,int &b);/ 交换函数的形参为引用void SetArray(int *a);/ 对数组进行初始化的函数void ShowArray(int *a);/对数组进行输出的函数void SortArray(int *a);/对数组进行排序的函数int main() int a10; SetArray(a);/把数组的首地址传递给该函数 cout排序前的数组为endl; ShowArray(a); SortArray(a); cout排序后的数组为endl; ShowArray(a);void swap(int &a,int &b) int temp; temp=a; a=b; b=tem

6、p;void SetArray(int *a) int i; cout请输入10个整数endl; for(i=0;iai;void ShowArray(int *a) int i; for(i=0;i10;i+) coutait;/为了使输出结果更加简洁我加入了水平制表符 if(i+1)%4=0)/每输出4个数组元素就换行 coutendl; void SortArray(int *a) int i,j; for(i=0;i9;i+) for(j=0;jaj+1) swap(aj,aj+1);5.1.5运行结果请输入10个整数123456672349087排序前的数组为1 2 34 5667

7、234 9 08 7 排序后的数组为0 1 2 78 9 34 5667 234 Press any key to continue5.1.6小结选择法和冒泡法的区别相同点:1.都要通过(n-1)组排出具有n个数的顺序 2.都是通过逐个相比区别:1.冒泡法顾名思义就是把小的泡冒到上面,大的泡沉到下面,最值在中间和其他的值交换;2.而选择法,是假定了一个最值,所以最值和其他的值的交换就发生在假定最值得地方实验5.2有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要

8、找的数用scanf函数输入。5.2.1代码#include/因为题目要求用到scanf语句所以加上这一行代码#includeusing namespace std;void SetArray(int *a);/对数组进行设置的函数void Find(int *a,int x);/寻找函数 形参为数组的地址和整型变量int main() int a15; SetArray(a);/对数组进行初始化 int NumberFind;/定义要寻找的数字 char Switch=Y;/ 定义一个开关变量 用来保存用户输入的提示符 先初始化为Y while(Switch=Y|Switch=y) cout请

9、输入要寻找的数endl; scanf(%d,&NumberFind); if(NumberFinda14) cout要寻找的数据不在数组范围内即 无此数endl; continue; Find(a,NumberFind);/调用寻找函数 cout请问需要输入新的数据继续寻找吗?请输入Y(y)或者N(n)Switch; return 0;void SetArray(int *a) int i; cout请按照由小到大的顺序输入15个整数a0; for(i=1;iai; if(aiai-1) cout输入的数据不满足题目要求 请重新输入endl;/如果用户输入的数据不满足从大到小 那么就提示用户需

10、要重新输入 else i+; void Find(int *a,int NumberFind) int top=0,bot=14,mid=7; bool flag=false; while(!flag&top=bot) if(NumberFind=amid) cout找到了数字amid它在数组中的位置是mid+1endl; flag=true; else if(NumberFindamid) bot=mid-1; else top=mid+1; mid=(top+bot)/2; if(flag=false) cout无此数endl; 5.2.2 运行结果请按照由小到大的顺序输入15个整数123

11、456789102输入的数据不满足题目要求 请重新输入11123输入的数据不满足题目要求 请重新输入131415请输入要寻找的数5找到了数字5它在数组中的位置是5请问需要输入新的数据继续寻找吗?请输入Y(y)或者N(n)实验5.35.3.1题目:编一程序,将2个字符串连接起来,结果取代第一个字符串。用字符数组,不用stract函数(即自己写一个具有strcat函数功能的函数)用c标准库的strcat函数用string方法定义字符串变量对这三种方法进行比较5.3.2 第一种方法的代码#includeusing namespace std;int main() char string1100,st

12、ring2100; cout请输入字符串1string1; cout请输入字符串2string2; int i=0,j=0; while(string1i!=0) i+; while(string2j!=0) string1i+=string2j+; string1i=0; cout结合后的字符串为string1endl;5.3.3 第一种方法的运算结果请输入字符串1C+请输入字符串2Programing结合后的字符串为C+ProgramingPress any key to continue5.3.4第二种方法的代码#includeusing namespace std;int main()

13、 char string1100,string2100; cout请输入字符串1string1; cout请输入字符串2string2; strcat(string1,string2); cout结合后的字符串为string1endl;5.3.5第二种方法的运行结果请输入字符串1C+请输入字符串2Programing结合后的字符串为C+ProgramingPress any key to continue5.3.6第三种方法的代码#include#includeusing namespace std;int main() string s1,s2; cout请输入字符串1s1; cout请输入

14、字符串2s2; s1+=s2; cout结合后的字符串为s1endl;5.3.7第三种方法的运行结果请输入字符串1C+请输入字符串2Programing结合后的字符串为C+ProgramingPress any key to continue实验5.4 5.4.1题目:输入十个学生的姓名,学号和成绩,将其中不及格者的姓名,学号和成绩输出。5.4.2 代码分析 第一部分应该解决数据输入和保存的问题 可以用2个整型数组分别保存 学号和成绩 用一个字符串数组保存 姓名第二部分遍历所有的成绩 找出不及格的然后根据序列i 输出对应的学号和成绩#include#includeusing namespace

15、 std;int main() int student_number10,score10; string name10; int i=0; cout请输入10个学生的姓名 学号和成绩endl; for(i=0;i10;i+) cout请输入第i+1个学生的姓名 学号 和成绩nameistudent_numberiscorei; cout不及格的名单endl; for(i=0;i10;i+) if(scorei60) coutnameistudent_numberiendl; 5.4.3运行结果请输入10个学生的姓名 学号和成绩请输入第1个学生的姓名 学号 和成绩张三 01 88请输入第2个学生

16、的姓名 学号 和成绩李四 02 87请输入第3个学生的姓名 学号 和成绩王老五 03 86请输入第4个学生的姓名 学号 和成绩张四 04 85请输入第5个学生的姓名 学号 和成绩张武 05 99请输入第6个学生的姓名 学号 和成绩张六 06 23请输入第7个学生的姓名 学号 和成绩张琪 07 34请输入第8个学生的姓名 学号 和成绩张巴 09 78请输入第9个学生的姓名 学号 和成绩张就 08 77请输入第10个学生的姓名 学号 和成绩张世 10 56不及格的名单张六6张琪7张世10Press any key to continue实验5.55.5.1题目:找出一个4行5列的二维数组的“鞍点”

17、,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。5.5.2 第一种情况 直接对数组进行初始化#includeusing namespace std;int main() int a45=1,2,3,4,5,2,4,6,8,10,3,6,9,12,15,4,8,12,16,20; int i=0,j=0,max,maxj; bool flag=true;/用来记录是否有鞍点先默认有鞍点 for(i=0;i4;i+) max=ai0,maxj=0;/先假设每行最大的元素为首元素 for(j=0;jmax) max=aij;/找出每行最大的数并保存在max中 maxj=j;/把行最大元

18、素的列坐标保存在maxj中 for(i=0;i4;i+) if(aimaxjmax) flag=false;/如果这一行的最大值max不是“鞍点”那么继续外层for循环进入下一行 if(flag)/ 因为一个二维数组最多有一个鞍点 所以如果这一点是鞍点那么就是唯一的鞍点可以直接跳出循环 cout鞍点是aimaxj=maxendl; break; if(flag=false)/如果没有鞍点输出 cout这个数组没有鞍点endl;5.5.3运行结果鞍点是a44=5Press any key to continue5.5.4 自己输入数组元素代码#includeusing namespace std

19、;void SetArray(int a45);void FindAndian(int a45);int main() int a45; SetArray(a); FindAndian(a); void SetArray(int a45) cout请输入一个4行5列的二维数组endl; int i,j; for(i=0;i4;i+) for(j=0;jaij;void FindAndian(int a45) int i=0,j=0,max,maxj; bool flag=true;/用来记录是否有鞍点先默认有鞍点 for(i=0;i4;i+) max=ai0,maxj=0;/先假设每行最大的元

20、素为首元素 for(j=0;jmax) max=aij;/找出每行最大的数并保存在max中 maxj=j;/把行最大元素的列坐标保存在maxj中 for(i=0;i4;i+) if(aimaxjmax) flag=false;/如果这一行的最大值max不是“鞍点”那么继续外层for循环进入下一行 if(flag)/ 因为一个二维数组最多有一个鞍点 所以如果这一点是鞍点那么就是唯一的鞍点可以直接跳出循环 cout鞍点是aimaxj=maxendl; break; if(flag=false)/如果没有鞍点输出 cout这个数组没有鞍点endl;5.5.5 运行结果请输入一个4行5列的二维数组1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20鞍点是a44=5Press any key to continue请输入一个4行5列的二维数组1 12 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20这个数组没有鞍点Press any key to continue

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1