C++数组处理整型数据

【数据的产生、排序、插入和查询和删除】

1、利用随机函数产生10个20以内的整数

(a)按升序输出排序后的结果(排序可采用冒泡或选择排序方法)

  (b) 从键盘输入一个数,将其插入到排序后的数组中,插入后的数组依然有序,并输出新数组

(c)从键盘输入某数,查找该数是否存在数组中,若在,则输出该数在数组中的位置,否则输出NO FIND!

(d)  从前面排好序的数组中删除某一个数,并输出排序后的数据

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
//数据的产生、排序、插入和查询
void BuSort(int* list, int length) //排序
{
	for (int i = 0; i < length-1; i++)
	{
		for (int j = 0; j < length - 1 - i; j++)
		{
			if (list[j + 1] < list[j])
			{
				int temp = 0;
				temp = list[j + 1];
				list[j+1] = list[j];
				list[j] = temp;
			}
		}
	}
}

void Insert(int* list, int n)//插入 
{
	int flag=0;
	for (int i = 0; i < 10; i++)
	{
		if (list[i] < n)//寻找到比插入数小的最大数的下标
		{
			flag = i+1;//插入的位置在比插入数小的最大数的后一位
		}
	}
	for (int i = 11; i > flag ; i--)//从下标开始往后移动一位
	{
		list[i] = list[i-1];
	}
	list[flag] = n;
}


void Del(int* list, int n)//删除
{
	int flag=0;
	for (int i = 0; i < 11; i++)
	{
		if (list[i] == n)//寻找到插入数的下标
		{
			flag = i;
		}
	}

	for (int i = flag; i < 11; i++)//从下标开始往前移动一位
	{
		list[i] = list[i + 1];
	}
}

void  Search(int* list, int n)
{
	int li[11] = {}, j = 0;
	for (int i = 0; i < 11; i++)
	{
		if (list[i] == n)
		{
			cout << i << " ";
			j = 1;
		}
	}
	if (j == 0)
	{
		cout<<"NO FIND"<<endl;
	}
}

int main()
{
	int list[20] = {};
	int in = 0,sn=0,dn=0;

	srand(time(NULL));
	for (int i = 0; i < 10; i++)//产生
	{
		list[i] = rand() % 20;
	}

	for (int i = 0; i < 10; i++)
	{
		cout << list[i] << " ";
	}

	cout << endl << "排序后:";
	BuSort(list,10);
	for (int i = 0; i < 10; i++)
	{
		cout<<list[i] << " ";
	}


	cout << endl;
	cout << "请输入要插入数组的数:" << endl;
	cin >> in;
	Insert(list, in);
	for (int i = 0; i < 11; i++)
	{
		cout << list[i] << " ";
	}

	cout << endl;
	cout << "请输入要在数组中查询的数:" << endl;
	cin >> sn;
	Search(list, sn);


	cout << endl;
	cout << "请输入要删除的数:";
	cin >> dn;
	Del(list, dn);
	for (int i = 0; i < 10; i++)
	{
		cout << list[i] << " ";
	}

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值