有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。——C与C++实现

题目:一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。(本例中输入的是一个升序的数组)

程序分析:
(1)判断输入的数是否大于数组中最后一个元素,如果成立,将输入的数插入数组的末尾,反之执行(2)。
(2)通过循环,将输入的数插入第一个比之大的元素前边,之后的元素一次向后移动。

C实现:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
	int a[5] = { 1,4,8,13 };
	int end, temp1, temp2;

	printf("已经拍好序的数组为:");
	for (int i = 0; i < 4; i++) {
		printf("%d ", a[i]);
	}
	printf("\n");

	int number;
	printf("请输入一个数:");
	scanf("%d", &number);

	end = a[3];
	if (number > end) {
		a[4] = number;
	}
	else {
		for (int i = 0; i < 4; i++) {
			if (a[i] > number) {
				temp1 = a[i];
				a[i] = number;

				for (int j = i + 1; j < 5; j++) {
					temp2 = a[j];
					a[j] = temp1;
					temp1 = temp2;
				}
				break;
			}
		}
	}

	printf("插入%d之后的数组为:", number);
	for (int i = 0; i <5; i++) {
		printf("%d ", a[i]);
	}
	printf("\n");

	return 0;
}

C运行结果:在这里插入图片描述C++实现:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

int main() {
	int a[5] = { 1,4,8,13 };
	int end, temp1, temp2;

	cout << "已经拍好序的数组为:";
	for (int i = 0; i < 4; i++) {
		cout << a[i] << " ";
	}
	cout << endl;

	int number;
	cout << "请输入一个数:";
	cin >> number;

	end = a[3];
	if (number > end) {
		a[4] = number;
	}
	else {
		for (int i = 0; i < 4; i++) {
			if (a[i] > number) {
				temp1 = a[i];
				a[i] = number;

				for (int j = i + 1; j < 5; j++) {
					temp2 = a[j];
					a[j] = temp1;
					temp1 = temp2;
				}
				break;
			}
		}
	}

	cout << "插入" << number << "之后的数组为:";
	for (int i = 0; i <5; i++) {
		cout << a[i] << " ";
	}
	cout << endl;

	return 0;
}

C++运行结果:在这里插入图片描述