一、问题及代码
/* * 文件名称: shchu.cpp * 作 者: 习佳星 * 完成日期: 2017年5月5日 * 版 本 号: v1.0 * 对任务及求解方法的描述部分: 利用数组定义一个不重复的有初值的10个元素的整数数组a,利用冒泡法对数组a排序后完成删除和插入操作 * 输入描述: 略 * 问题描述: 较复杂,需要熟悉掌握数组的运用和细节处理 * 程序输出: “ 1 2 3 4 5 8 9 14 16 76 输入要删除的数x1:3 删除x1后的有序数组为:1 2 4 5 8 9 14 16 76 输入要插入的数x2:15 删除操作后插入x2后的有序数组为:1 2 4 5 8 9 14 15 16 76” * 问题分析: 略 * 算法设计: 略 */ #include <iostream> using namespace std; int main() { int a[10]={2,3,1,5,76,9,16,8,14,4},i,j,t; int x1,x2,k,m; for(i=0;i<9;i++) { for(j=0;j<9-i;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; cout<<"输入要删除的数x1:"; cin>>x1; for(i=0;i<10;i++) { if(a[i]==x1) k=i; } for(i=k;i<9;i++) a[i]=a[i+1]; cout<<"删除x1后的有序数组为:"; for(i=0;i<9;i++) cout<<a[i]<<" "; cout<<endl; cout<<"输入要插入的数x2:"; cin>>x2; for(i=0;i<9;i++) { if(a[i]>=x2) { m=i; break; } } for(i=9;i>m;i--) a[i]=a[i-1]; a[i]=x2; cout<<"删除操作后插入x2后的有序数组为:"; for(i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; return 0; }二、运行结果
三、心得体会:
数组的排序,删除,插入是学习数组的基本操作,因此,掌握了这三个操作对于数组的学习就可以说是一大进步,值得高兴。
在操作过程遇到了不少难题,花了大概一两小时,这说起来可能比较惭愧,但事实就是这样,很多都没有弄得很清楚,所以编译过程有点磕磕碰碰,在翻阅老师是上课讲的笔记后,仔细揣摩才完成了。其实很多操作老师都已经讲过了 ,只要上课认真听,做好相应的笔记,这些编译都不是什么大问题。
四、知识点总结:
编译进行排序时用的是冒泡法,主要用了循环的嵌套以及一些逻辑思维,正确选择好循环的次数才不会错。排完序后就是删除操作,先要用If语句判断x1的位置在哪,然后进行删除操作,且不能乱序,这就是老师上课讲了的技巧,并且此时循环次数减1;接着是插入,插入同样的要判断x2的位置,这个步骤用到了break。
在数组中break的使用很关键,便于编程,下一步就是老师将过了很多次的如何再插入一个数后不乱序,最后整个编译完成。总结一点就是熟悉循环,break,if语句等一些重点操作。