⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchs.cpp

📁 c语言教程源码
💻 CPP
字号:
//这个程序在本书所带软盘中,文件名为SEARCHS.CPP
//这个程序演示数组单元的检索、取消以及插入操作。

#include <iostream.h>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>

const int size = 20;

void main(void)
{
	char menu(void);				//定义返回菜单选择项的子程序
	int search(int[], int, int);	//定义检索子程序
	void deletion(int[], int, int);	//定义取消子程序
	void insertion(int[], int, int);//定义插入子程序
	void array_output(int[], int);	//定义显示子程序

	int int_array[size] = 
		{10, 20, 30, 40, 50, 60, 70, 80, 90, 100};	//定义和初始化
	int value, position;
	int real_size = 10;				//开始时,real_size等于10


	//调用菜单子程序

	do {
		switch (menu()) {
			case 'A' : {			//对数组单元值检索
				if (real_size == 0)	//数组是空的
					cout << endl << "数组现在是空数组!" << endl << endl;
				else {
					cout << endl << "请输入你要在数组中查询的数值: ";
					cin >> value;
					position = search(int_array, real_size, value);
					if (position == -1)
						cout << endl << "这个数值不在数组中。请再查询..." << endl << endl;
					else {
						cout << endl << "数值" << value << "已在数组中找到。" << endl;
						cout << endl << "它是array[" << position << "] = " << int_array[position] << endl << endl;
					}
				}
				break;
			}
			case 'B' : {				//取消数组单元中的值
				if (real_size == 0)
					cout << endl << "数组已空,不能进行取消操作..." << endl << endl;
				else {
					cout << endl << "请输入要在数组中取消的数值: ";
					cin >> value;
					if ((position = search(int_array, real_size, value)) == -1)	//这个数不在数组中
						cout << endl << "这个数值不在数组中!请输入其它取消数值..." << endl << endl;
					else {
						deletion(int_array, real_size, position);
						real_size--;
						cout << endl << "数值" << value << "已经从数组中取消!" << endl << endl;
					}
				}
				break;
			}
			case 'C' : {				//在数组单元中插入一个值
				if (real_size == size)
					cout << endl << "这个数组已经满,不能进行插入操作..." << endl << endl;
				else {
					cout << endl << "请输入要插入的数值: ";
					cin >> value;
					insertion(int_array, real_size, value);
					real_size++;
					cout << endl << "数值" << value << "已经插入的这个数组中!" << endl << endl;
				}
				break;
			}
			case 'D' : {				//显示数组各单元
				if (real_size == 0)		//数组是空的
					cout << endl << "这个数组已空!" << endl << endl;
				else {
					cout << endl << endl << "以下是这个数组中的所有单元:" << endl;
					array_output(int_array, real_size);
				}
				break;
			}
			case 'Q' : {				//停止程序运行
				cout << endl << "谢谢你使用这个程序!" << endl;
				exit(1);
			}
			default : {					//选择项超出范围
				cout << endl << endl << "错误操作项目!请再试一次..." << endl << endl;
			}
		}								//开关语句结束
	} while (1);
}//主程序结束

/************子程序menu()**********************/
char menu(void)
{
	char ch;

	cout << endl;
	cout << "A.  数组查询" << endl;
	cout << "B.  取消数值" << endl;
	cout << "C.  插入数值" << endl;
	cout << "D.  显示数组" << endl;
	cout << "Q.  停止程序执行" << endl << endl;
	cout << "请输入你的选择: ";

	ch = toupper(getche());
	return(ch);
}

/********子程序search()***********************/
int search(int array[], int max, int num)
{
	int count, locat;
	
	for (count = 0; count < max; count++)
		if (num == array[count]) {		//找到了这个值
			locat = count;
			break;
		}
	if (count == max)					//说明没有找到这个值
		locat = -1;

	return(locat);
}

/************子程序deletion()********************/
void deletion(int array[], int max, int locat)
{
	for (int j = locat; j < max-1; j++)
		array[j] = array[j+1];
}

/************子程序insertion()*********************/
void insertion(int array[], int max, int num)
{
	int locat;

	if (max == 0)						//是一个空的数组
		array[max] = num;
	else if (num >= array[max-1])		//这个数大于数组中的所有数
		array[max] = num;
	else {								//找出这个数的位置
		for (int j = 0; j < max; j++)
			if (num > array[j])
				;						//继续到下一个循环
			else {						//找到了位置
				locat = j;
				break;
			}

		for (j = max; j > locat; j--)	//将数组中从locat到max-1的各单元下移
			array[j] = array[j-1];
		array[locat] = num;
	}
}

/************子程序array_output()******************/
void array_output(int array[], int max)
{
	for (int i = 0; i < max; i++)
		cout << "array[" << i << "] = " << array[i] << endl;
}

/*下面是这个程序运行后的一个典型输出结果:

A.  数组查询
B.  取消数值
C.  插入数值
D.  显示数组
Q.  停止程序执行

请输入你的选择: d

以下是这个数组中的所有单元:
array[0] = 10
array[1] = 20
array[2] = 30
array[3] = 40
array[4] = 50
array[5] = 60
array[6] = 70
array[7] = 80
array[8] = 90
array[9] = 100

A.  数组查询
B.  取消数值
C.  插入数值
D.  显示数组
Q.  停止程序执行

请输入你的选择: b
请输入要在数组中取消的数值: 70

数值70已经从数组中取消!

A.  数组查询
B.  取消数值
C.  插入数值
D.  显示数组
Q. 停止程序执行

请输入你的选择: a
请输入你要在数组中查询的数值: 70

这个数值不在数组中。请再查询...

A.  数组查询
B.  取消数值
C.  插入数值
D.  显示数组
Q.  停止程序执行

请输入你的选择: a
请输入你要在数组中查询的数值: 90

数值90已在数组中找到。

它是array[7] = 90

A.  数组查询
B.  取消数值
C.  插入数值
D.  显示数组
Q.  停止程序执行

请输入你的选择: c
请输入要插入的数值: 15

数值15已经插入的这个数组中!

A.  数组查询
B.  取消数值
C.  插入数值
D.  显示数组
Q.  停止程序执行

请输入你的选择: d

以下是这个数组中的所有单元:
array[0] = 10
array[1] = 15
array[2] = 20
array[3] = 30
array[4] = 40
array[5] = 50
array[6] = 60
array[7] = 80
array[8] = 90
array[9] = 100

A.  数组查询
B.  取消数值
C.  插入数值
D.  显示数组
Q.  停止程序执行

请输入你的选择:q
谢谢你使用这个程序!
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -