实验5数组

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

中南大学实验报告课程名称c++程序设计实验项目名称实验4实验5实验6指导老师向瑶实验学生班级电子信息工程1503实验学生姓名陶韬学号0903130309实验时间2016.4.1至4.10实验地点校本部科技楼4楼实验成绩评定实验5数组实验5.15.1.1.题目:用选择法对10个整数排序。十个整数用cin输入,将选择排序与起泡法比较,分析它们的特点和效率选择法的算法:第一轮把第一个数和剩下的9个数比较通过比较交换使得第一轮交换后第一个数为这10个数中最小的,然后进行第二轮交换把第二个数和剩下的8个数比较,通过比较交换使得第二轮交换后第二个数为这9个数中最小的5.1.2代码#includeiostreamusingnamespacestd;voidsawp(int&a,int&b);//交换函数的形参为引用voidSetArray(int*a);//对数组进行初始化的函数voidShowArray(int*a);//对数组进行输出的函数voidSortArray(int*a);//对数组进行排序的函数intmain(){inta[10];SetArray(a);//把数组的首地址传递给该函数cout排序前的数组为endl;ShowArray(a);SortArray(a);cout排序后的数组为endl;ShowArray(a);}voidswap(int&a,int&b){inttemp;temp=a;a=b;b=temp;}voidSetArray(int*a){inti;cout请输入10个整数endl;for(i=0;i10;i++)cina[i];}voidShowArray(int*a){inti;for(i=0;i10;i++){couta[i]'\t';//为了使输出结果更加简洁我加入了水平制表符if((i+1)%4==0)//每输出4个数组元素就换行coutendl;}}voidSortArray(int*a){inti,j;for(i=0;i9;i++)//外层循环控制轮数一共进行10-1=9轮for(j=i+1;j=9;j++){if(a[i]a[j])swap(a[i],a[j]);}}5.1.3输出结果请输入10个整数123456672349087排序前的数组为123456672349087排序后的数组为012789345667234Pressanykeytocontinue5.1.4用冒泡法进行排序算法将相邻2个数比较,将较小的调到前头第一轮结束后最大的数应该沉到最下面,然后进行第二轮比较结束后第二大的数沉到倒数第二位以此类推一共进行n-1轮比较第j轮要进行j-1轮比较代码#includeiostreamusingnamespacestd;voidsawp(int&a,int&b);//交换函数的形参为引用voidSetArray(int*a);//对数组进行初始化的函数voidShowArray(int*a);//对数组进行输出的函数voidSortArray(int*a);//对数组进行排序的函数intmain(){inta[10];SetArray(a);//把数组的首地址传递给该函数cout排序前的数组为endl;ShowArray(a);SortArray(a);cout排序后的数组为endl;ShowArray(a);}voidswap(int&a,int&b){inttemp;temp=a;a=b;b=temp;}voidSetArray(int*a){inti;cout请输入10个整数endl;for(i=0;i10;i++)cina[i];}voidShowArray(int*a){inti;for(i=0;i10;i++){couta[i]'\t';//为了使输出结果更加简洁我加入了水平制表符if((i+1)%4==0)//每输出4个数组元素就换行coutendl;}}voidSortArray(int*a){inti,j;for(i=0;i9;i++)for(j=0;j9-i;j++)if(a[j]a[j+1])swap(a[j],a[j+1]);}5.1.5运行结果请输入10个整数123456672349087排序前的数组为123456672349087排序后的数组为012789345667234Pressanykeytocontinue5.1.6小结选择法和冒泡法的区别相同点:1.都要通过(n-1)组排出具有n个数的顺序2.都是通过逐个相比区别:1.冒泡法顾名思义就是把小的泡冒到上面,大的泡沉到下面,最值在中间和其他的值交换;2.而选择法,是假定了一个最值,所以最值和其他的值的交换就发生在假定最值得地方实验5.2有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。5.2.1代码#includestdio.h//因为题目要求用到scanf语句所以加上这一行代码#includeiostreamusingnamespacestd;voidSetArray(int*a);//对数组进行设置的函数voidFind(int*a,intx);//寻找函数形参为数组的地址和整型变量intmain(){inta[15];SetArray(a);//对数组进行初始化intNumberFind;//定义要寻找的数字charSwitch='Y';//定义一个开关变量用来保存用户输入的提示符先初始化为'Y'while(Switch=='Y'||Switch=='y'){cout请输入要寻找的数endl;scanf(%d,&NumberFind);if(NumberFinda[0]||NumberFinda[14]){cout要寻找的数据不在数组范围内即无此数endl;continue;}Find(a,NumberFind);//调用寻找函数cout请问需要输入新的数据继续寻找吗?请输入Y(y)或者N(n)endl;//提示用户是否继续寻找cinSwitch;}return0;}voidSetArray(int*a){inti;cout请按照由小到大的顺序输入15个整数endl;cina[0];for(i=1;i15;){cina[i];if(a[i]a[i-1])cout输入的数据不满足题目要求请重新输入endl;//如果用户输入的数据不满足从大到小那么就提示用户需要重新输入elsei++;}}voidFind(int*a,intNumberFind){inttop=0,bot=14,mid=7;boolflag=false;while(!flag&&top=bot){if(NumberFind==a[mid]){cout找到了数字a[mid]它在数组中的位置是mid+1endl;flag=true;}elseif(NumberFinda[mid])bot=mid-1;elsetop=mid+1;mid=(top+bot)/2;}if(flag==false){cout无此数endl;}}5.2.2运行结果请按照由小到大的顺序输入15个整数123456789102输入的数据不满足题目要求请重新输入11123输入的数据不满足题目要求请重新输入131415请输入要寻找的数5找到了数字5它在数组中的位置是5请问需要输入新的数据继续寻找吗?请输入Y(y)或者N(n)实验5.35.3.1题目:编一程序,将2个字符串连接起来,结果取代第一个字符串。①用字符数组,不用stract函数(即自己写一个具有strcat函数功能的函数)②用c标准库的strcat函数③用string方法定义字符串变量对这三种方法进行比较5.3.2第一种方法的代码#includeiostreamusingnamespacestd;intmain(){charstring1[100],string2[100];cout请输入字符串1endl;cinstring1;cout请输入字符串2endl;cinstring2;inti=0,j=0;while(string1[i]!='\0')i++;while(string2[j]!='\0')string1[i++]=string2[j++];string1[i]='\0';cout结合后的字符串为string1endl;}5.3.3第一种方法的运算结果请输入字符串1C++请输入字符串2Programing结合后的字符串为C++ProgramingPressanykeytocontinue5.3.4第二种方法的代码#includeiostreamusingnamespacestd;intmain(){charstring1[100],string2[100];cout请输入字符串1endl;cinstring1;cout请输入字符串2endl;cinstring2;strcat(string1,string2);cout结合后的字符串为string1endl;}5.3.5第二种方法的运行结果请输入字符串1C++请输入字符串2Programing结合后的字符串为C++ProgramingPressanykeytocontinue5.3.6第三种方法的代码#includeiostream#includestringusingnamespacestd;intmain(){strings1,s2;cout请输入字符串1endl;cins1;cout请输入字符串2endl;cins2;s1+=s2;cout结合后的字符串为s1endl;}5.3.7第三种方法的运行结果请输入字符串1C++请输入字符串2Programing结合后的字符串为C++ProgramingPressanykeytocontinue实验5.45.4.1题目:输入十个学生的姓名,学号和成绩,将其中不及格者的姓名,学号和成绩输出。5.4.2代码分析第一部分应该解决数据输入和保存的问题可以用2个整型数组分别保存学号和成绩用一个字符串数组保存姓名第二部分遍历所有的成绩找出不及格的然后根据序列i输出对应的学号和成绩#includeiostream#includestringusingnamespacestd;intmain(){intstudent_number[10],score[10];stringname[10];inti=0;cout请输入10个学生的姓名学号和成绩endl;for(i=0;i10;i++){cout请输入第i+1个学生的姓名学号和成绩endl;cinname[i]student_number[i]score[i];}cout不及格的名单endl;for(i=0;i10;i++){if(score[i]60)coutname[i]student_number[i]endl;}}5.4.3运行结果请输入10个学生的姓名学号和成绩请输入第1个学生的姓名学号和成绩张三0188请输入第2个学生的姓名学号和成绩李四0287请输入第3个学生的姓名学号和成绩王老五0386请输入第4个学生的姓名学号和成绩张四0485请输入第5个学生的姓名学号和成绩张武0599请输入第6个学生的姓名学号和成绩张六0623请输入第7个学生的姓名学号和成绩张琪0734请输入第8个学生的姓名学号和成绩张巴0978请输入第9个学生的姓名学号和成绩张就0877请输入第10个学生的姓名学号和成绩张世1056

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功