📄 searchs.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 + -