一、问题及代码
/*
* 文件名称: 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语句等一些重点操作。