实验6指针

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

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

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

资源描述

中南大学实验报告课程名称c++程序设计实验项目名称实验4实验5实验6指导老师向瑶实验学生班级电子信息工程1503实验学生姓名陶韬学号0903130309实验时间2016.4.1至4.10实验地点校本部科技楼4楼实验成绩评定实验6指针实验6.16.1.1题目:输入3个整数,按由小到大的顺序输出。编译一个函数,用指针作为参数。6.1.2代码#includeiostreamusingnamespacestd;voidsort(int*a);intmain(){inta[3];cout请输入3个整数:endl;cina[0]a[1]a[2];sort(a);cout排序后的3个整数为:endl;couta[0]'\t'a[1]'\t'a[2]endl;}voidsort(int*a){inttemp;if(a[0]a[1]){temp=a[0];a[0]=a[1];a[1]=temp;}if(a[0]a[2]){temp=a[0];a[0]=a[2];a[2]=temp;}if(a[1]a[2]){temp=a[1];a[1]=a[2];a[2]=temp;}}6.1.3运行结果请输入3个整数:13-4排序后的3个整数为:-413Pressanykeytocontinue实验6.26.2.1题目:在上题基础上将程序改为:输入3个字符串,按由小到大顺序输出分析:因为c++自带string类型所以我们要做的就是把原来的整型数组改为字符串数组即可6.2.2代码#includeiostream#includestringusingnamespacestd;voidsort(string*a);intmain(){stringa[3];cout请输入3个字符串:endl;cina[0]a[1]a[2];sort(a);cout排序后的3个字符串为:endl;couta[0]endla[1]endla[2]endl;return0;}voidsort(string*a){stringtemp;if(a[0]a[1]){temp=a[0];a[0]=a[1];a[1]=temp;}if(a[0]a[2]){temp=a[0];a[0]=a[2];a[2]=temp;}if(a[1]a[2]){temp=a[1];a[1]=a[2];a[2]=temp;}}6.2.3运行结果请输入3个字符串:USAJapaneseChina排序后的3个字符串为:ChinaJapaneseUSAPressanykeytocontinue实验6.36.3.1题目:用引用变量作为形参,实现3个整数由小到大输出6.3.2代码#includeiostreamusingnamespacestd;voidswap(int&a,int&b);intmain(){inta,b,c;cout请输入3个整数endl;cinabc;if(ab)swap(a,b);if(ac)swap(a,c);if(bc)swap(b,c);cout三个数按照从小到大输出endl;couta'\t'b'\t'cendl;}voidswap(int&a,int&b){inttemp;temp=a;a=b;b=temp;}6.3.3运行结果请输入3个整数12467三个数按照从小到大输出41267Pressanykeytocontinu实验6.46.4.1题目有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。算法分析:建立一个数组用来存放编号然后定义一个整型指针指向这个数组然后定义变量i表示每次循环时的计数变量,且每当重新计数时i要重新赋为0,k表示按照123的计数变量当k==3时把这个编号剔除循环(可以把这个编号的数赋为0这样可以在循环语句中,加上一个条件语句判断这个编号是否是0如果是0说明该编号的数已经被剔除了,)举例如果n=8那么应该是120456781204507802045078020400780004007800040070000000706.4.2代码:#includeiostreamusingnamespacestd;intmain(){intcircle[50],n,i=0,m=0,k=0,j=0;//cirle用来存放编号n用来接收用户输入的有多少个人的数据cout请输入一共有多少个人围成一圈?endl;cinn;int*p=circle;for(i=0;in;i++)p[i]=i+1;//用for循环来给数组赋初值注意数组的下标与存放的数值的关系i=0;//重新让i表示数组开始的下标while(n-m1)//m表示剔除的人数所以n-m表示剩下的人数{if(p[i]!=0)//这段语句的意思是如果这个编号的值不是0就是没有被剔除那么执行下面语句k++;//因为这个判断第一次一定会成立所以这里的k一定会自加到1if(k==3)//如果报到每次循环的第三个数{p[i]=0;k=0;//报数计数器重新赋为0m++;//被剔除的人数加1cout第m次剔除后:;for(j=0;jn;j++)coutp[j];coutendl;}i++;if(i==n)//如果循环到最后一位那么就跳转到第一位i=0;}while(*p==0)p++;//让指针p指向最后剩下的那个编号cout最后剩下的人的编号是*pendl;return0;}6.4.3运行结果请输入一共有多少个人围成一圈?8第1次剔除后:12045678第2次剔除后:12045078第3次剔除后:02045078第4次剔除后:02040078第5次剔除后:00040078第6次剔除后:00040070第7次剔除后:00000070最后剩下的人的编号是7Pressanykeytocontinue实验6.56.5.1题目在主函数中输入10个等长的字符串。用另一函数对他们排序。然后在主函数输出这10个已排好序的字符串。要求用以下方法编程:①用指向一维数组的指针作函数参数;②用string数组方法。6.5.2思路分析:首先定义一个string数组存放要输入的10个字符串数据然后可以声明一个对字符串进行排序的函数Sort_String函数,排序可以用选择法或者冒泡法。为了使主函数尽可能简洁可以定义一个字符串输入函数和字符串数组显示函数,形参用一个指向string数组的指针即可6.5.3代码#includeiostream#includestringusingnamespacestd;voidSet_String(string*p);voidShow_String(string*p);voidSort_String(string*p);intmain(){stringalphabetic_string[10];string*p=alphabetic_string;Set_String(p);Sort_String(p);cout排序后的字符串为endl;Show_String(p);return0;}voidSet_String(string*p){cout请输入10个等长的字符串endl;cinp[0];constintlength=p[0].size();//保存字符串的长度inti=1;for(i=1;i10;i++){cinp[i];while(p[i].size()!=length){cout输入的字符串的长度与第1次输入的不一样,请重新输入endl;cinp[i];}}}voidSort_String(string*p){inti=0,j=0;stringtemp=\0;//i控制外层循环,j控制内层循环temp是交换中间值for(i=0;i9;i++)for(j=i+1;j10;j++)if(p[i]p[j]){temp=p[i];p[i]=p[j];p[j]=temp;}}voidShow_String(string*p){inti=0;for(i=0;i10;i++)coutp[i]endl;}6.5.4运行结果:请输入10个等长的字符串123412输入的字符串的长度与第1次输入的不一样,请重新输入12345输入的字符串的长度与第1次输入的不一样,请重新输入1234456t99jj东方4输入的字符串的长度与第1次输入的不一样,请重新输入dsaw34er谁是3dfg2【】p输入的字符串的长度与第1次输入的不一样,请重新输入2【】p输入的字符串的长度与第1次输入的不一样,请重新输入【】、。排序后的字符串为1234123434er3dfg456t99jjdsaw、。【】谁是Pressanykeytocontinue

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

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

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

×
保存成功