C++练习七

1. 冒泡法排序

【问题描述】使用冒泡法,对n个数从小到大排序 ,并输出需要多少轮比较
【输入形式】
【输出形式】
【样例输入】

5

1 2 5 4 3

【样例输出】

1 2 3 4 5

3

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	const int m = 100;
	int arr[m];
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
	bool finish = false;
	int j = 1;
	while (j < n && !finish)
	{
		finish = true;
		for(int k=0;k<n-j;k++)
			if (arr[k] > arr[k + 1])
			{
				swap(arr[k], arr[k + 1]);
				finish = false;
			}
		j++;
	}
	for (int a = 0; a < n; a++)
		cout << arr[a] << ' ';
	cout << endl;
	cout << j - 1;
	return 0;
}
​​​​​​​2. 选择排序

【问题描述】使用选择法对n个数从小到大排序,n由用户输入(n<100)

【输入形式】
【输出形式】
【样例输入】 

4
5 2 3 1

    
【样例输出】

1 2 3 5
#include<iostream>
using namespace std;
int main()
{
	const int m = 100;
	int n;
	cin >> n;
	int arr[m];
	int a = 0;
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
	for (int j = 0; j < n; j++)
	{
		int tmp = arr[j];
		for (int k=j; k < n; k++)
		{
			if (tmp > arr[k])
			{
				tmp = arr[k];
				a = k;
				swap(arr[j], arr[a]);
			}
		}
	}
	for (int i = 0; i < n; i++)
		cout << arr[i] << ' ';
	return 0;
}
​​​​​​​3. 超过平均身高同学的人数

【问题描述】

给定n个同学的身高(均为100到200之间的正整数),求超过平均身高的同学人数。

【输入形式】

包括两行数据。 

第一行包含一个整数n。 

第二行包含n个用空格隔开的正整数。


【输出形式】

一行,这一行只包含一个整数,表示超过平均身高的同学人数。 

【样例输入】

6
160 155 170 175 172 164

【样例输出】

3
#include<iostream>
using namespace std;
int main()
{
	const int m = 10000;
	int arr[m];
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
	int average = 0;
	for (int i = 0; i < n; i++)
		average = average + arr[i];
	average = average / n;
	int count = 0;
	for (int i = 0; i < n; i++)
	{
		if (arr[i] > average)
			count++;
	}
	cout << count;
	return 0;
}
​​​​​​​4. 数组元素的移动

【问题描述】

数组元素的移动,把数组的第x个位置的元素先保存起来,然后把x+1到n的元素,依次往前移一位,最后原来的第x个位置的元素放在最后。 

【输入形式】

有3行 

第一行有一个整数n 

第二行有n个整数 

第三行有一个整数x 


【输出形式】

移动后的数组

【样例输入】

8
1 2 3 4 5 6 7 8
1

【样例输出】

2 3 4 5 6 7 8 1
#include<iostream>
using namespace std;
int main()
{
	const int max= 1000;
	int n;
	cin >> n;
	int arr[max];
	for (int i = 0; i < n; i++)
		cin >> arr[i];
	int x;
	cin >> x;
	int tmp = arr[x-1];
	for (int i = x-1; i < n; i++)
	{
		if (i == n - 1)
			arr[i] = tmp;
		else
			arr[i] = arr[i + 1];
	}
	for (int i = 0; i < n; i++)
	{
		cout << arr[i] << ' ';
	}
	return 0;
}
​​​​​​​5. 删除指定位置的数字

【问题描述】删除指定位置的数组的值
【输入形式】第一行输入数组的个数  

第二行输入数组元素

第三行输入 要删除的数

如:

5

1 2 3 4 5

Input the position to delete:5

Before  delete: 1 2 3 4 5

After  delete: 1 2 3 4

#include<iostream>
using namespace std;
int main()
{
	const int max = 1000;
	int n;
	cin >> n;
	int arr[max];
	for (int i = 0; i < n; i++)
		cin >> arr[i];
	cout << "Input the position to delete:";
	int x;
	cin >> x;
	cout << endl;
	cout << "Before  delete:";
	for (int i = 0; i < n; i++)
		cout << ' ' << arr[i];
	cout << endl;
	for (int i = 0; i < n; i++)
		if (arr[i] == x)
			for (int j = i; j < n; j++)
				arr[j] = arr[j + 1];
	cout << "After  delete:";
	for (int i = 0; i < n - 1; i++)
		cout << ' ' << arr[i];
	return 0;
}
​​​​​​​6. 在指定位置插入一个数

【问题描述】在一个数组的指定位置插入一个数
【输入形式】第一行 n 数组元素的个数  (1--1000)第二行  数组元素  第三行:要插入元素的位置和要插入的数 (位置的值1---n)
【输出形式】如样例,每个数中间用一个空格隔开
【样例输入和输出】

5

1 2 3 4 5

Input the position and inserted number:3 30


【样例输出】

Before  insert: 1 2 3 4 5

After  insert: 1 2 30 3 4 5

#include<iostream>
using namespace std;
int main()
{
	const int max = 1000;
	int n;
	cin >> n;
	int arr[max];
	for (int i = 0; i < n; i++)
		cin >> arr[i];
	cout << "before  insert:";
	for (int i = 0; i < n; i++)
		cout << ' ' << arr[i];
	cout << endl;
	cout << "Input the position and inserted number:";
	int p, num;
	cin >> p >> num;
	for (int i = 0; i < n; i++)
	{
		if (i == p - 1)
		{
			for (int j = n; j >i; j--)
				arr[j] = arr[j-1];
			arr[i] = num;
		}
	}
	cout << endl;
	cout << "After  insert:";
	for (int i = 0; i < n + 1; i++)
		cout << ' ' << arr[i];
	return 0;
}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值