C++实验7及参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院
实验报告
课程名称高级程序设计C++(1) 实验项目实验七数组1
姓名学号班级专业
同组人姓名无指导教师姓名实验日期
一、实验目的
1、掌握一维数组的定义、赋值和输入输出的方法;
2、掌握与数组有关的算法(特别是排序算法)。
二、实验内容和步骤
编程序并上机调试运行。
1、按如下要求编程: 在第一个循环中给a数组的前10个数组元素依次赋1、
2、
3、
4、
5、
6、
7、
8、
9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1;在最后一个
循环中输出对称折叠以后的a数组的前10个元素。
●程序源代码(注意添加注释)
#include
using namespace std;
int main()
{
int a[10],i;
for(i=0;i<10;i++) a[i]=i+1;
for(i=5;i<10;i++) a[i]=a[9-i];
for(i=0;i<10;i++) cout< return 0; } ●运行结果(直接截取结果图) 2、已知长度为10的数组a及其各个元素的值,对其按从大到小进行排序. ●程序源代码(注意添加注释) //这里给出了另外一种排序算法.(采用课堂上讲的冒泡排序也可以实现,参见ppt) #include using namespace std; int main() { int i,j,a[10]={3,32,6,2,67,9,21,45,23,8}; for(i=0;i<10;i++) { int p; p=i; for(j=i;j<10;j++)//该for循环找剩下j个元素里最大的那个元素的下标 if(a[p] p=j; if(p!=i) { //把目前的最大值a[p]放到前面来(和a[i]交换) int t; t=a[p]; a[p]=a[i]; a[i]=t; } } for(i=0;i<10;i++) cout< return 0; } ●运行结果(直接截取结果图) 3、有一个已经从小到大排好序的整数数组:a[30]={6,9,12,15,19,23,45,67,89,98},现输入一个整数x ,要求按原 来的升序规律将它插入到数组中。 ●程序源代码(注意添加注释) #include using namespace std; int main() { int i,ps,n,a[30]={6,9,12,15,19,23,45,67,89,98}; cout<<"请输入一个整数:"; cin>>n; ps=10; for(i=0;i<10;i++) //该循环找应插入的位置 { if(n { ps=i; break; } } for(i=10;i>=ps;i--)//把插入位置之后(包括该位置)的元素依次往后挪一位 a[i+1]=a[i]; a[ps]=n; //插入输入的元素 for(i=0;i<11;i++) cout< return 0; } ●运行结果(直接截取结果图) 4.请用户输入n个数(n的值不超过20,并由用户输入),每输入一个数据之后,按照由小到大顺序将其存入,然后显示当前已存储的数据的情况,直到最后一个数据。 程序源代码(注意添加注释) #include using namespace std; int main() { int a[20],n,i,m,tmp,position; //输入在-20之间的数据个数 cout<<"请输入数据的个数(最多不超过个):"; cin>>n; while(n>20||n<1) { cout<<"输入错误,请重新输入:"; cin>>n; } //依次输入每个数据,并进行处理 for(i=0;i<=n-1;i++) { //输入第i+1个数据 cout<<"请输入第"< cin>>tmp; position=i;//初始化插入的位置为i //查找该插入的位置 for(m=i-1;m>=0;m--) { if(a[m]>tmp) { a[m+1]=a[m]; position--; } else break; } //将该数据插入到已排好序的数列中 a[position]=tmp; //以下输出当前数列 cout<<"目前的数据序列为:"; for(m=0;m<=i;m++) cout< cout< } return 0; } //注:该题插入的实现和上一题插入的实现有些不同(但都可以实现同样目的),请自行比较。