一.代码实践
#include <iostream>
using namespace std;
// 定义结构体
struct MyArray {
int arr[100]; // 数组,假设最大长度为100
int size; // 数组当前元素数量
};
// 输入函数,修改数组内容
void scanf(MyArray& myArray) {
for (int i = 0; i < myArray.size; i++) {
cin >> myArray.arr[i];
}
}
// 插入函数,作为结构体外部的成员函数
void insert(MyArray& myArray, int position, int value) {
if (position < 0 || position > myArray.size || myArray.size >= 100) {
// 处理错误情况,例如位置无效或数组已满
cout << "无效位置或者数组已满" << endl;
return;
}
// 将从插入位置开始的元素向后移动一位
for (int i = myArray.size; i > position; i--) {
myArray.arr[i] = myArray.arr[i - 1];
}
// 在指定位置插入新值
myArray.arr[position] = value;
// 更新数组大小
myArray.size++;
}
// 打印函数,作为结构体外部的成员函数
void print(const MyArray& myArray) {
for (int i = 0; i < myArray.size; i++) {
cout << myArray.arr[i] << " ";
}
cout << endl;
}
int main() {
MyArray myArray; // 创建MyArray实例
// 初始化数组和size
myArray.size = 5; // 设置数组当前大小
scanf(myArray);
// 在指定位置插入新值
int insertPos = 2;
int newValue = 10;
insert(myArray, insertPos, newValue);
// 打印数组
print(myArray);
return 0;
}
二.功能化代码
1.任务:
所给代码,增加输入功能(用子函数实现),删除,修改、查找、排序。
在键盘输入1 插入,2删除,3修改,4查找,5排序。
注意:
1、命名格式要标准,无论是变量还是函数。
2、代码要有注释,要有良好的人机交互。
2.代码实践:
#include <iostream>
using namespace std;
// 定义结构体
struct MyArray {
int arr[100]; // 数组,假设最大长度为100
int size; // 数组当前元素数量
};
// 输入函数,修改数组内容
void Scanf(MyArray& myArray) {
for (int i = 0; i < myArray.size; i++) {
cin >> myArray.arr[i];
}
}
//打印函数
void Print(const MyArray& myArray) {
for (int i = 0; i < myArray.size; i++) {
cout << myArray.arr[i] << " ";
}
cout << endl;
}
// 插入函数,作为结构体外部的成员函数
void Insert(MyArray& myArray) {
// 在指定位置插入新值
int position;
cout<<"请输入插入的新值位置:"<<endl;
cin>>position;
int value;
cout<<"请输入插入的新值:"<<endl;
cin>>value;
if (position < 0 || position > myArray.size || myArray.size >= 100) {
// 处理错误情况,例如位置无效或数组已满
cout << "无效位置或者数组已满" << endl;
return;
}
// 将从插入位置开始的元素向后移动一位
for (int i = myArray.size; i > position; i--) {
myArray.arr[i] = myArray.arr[i - 1];
}
// 在指定位置插入新值
myArray.arr[position] = value;
// 更新数组大小
myArray.size++;
Print(myArray);
}
//删除函数,作为结构体外部的成员函数
void Delete(MyArray& myArray)
{
int position;
cout<<"请输入删除值的位置:"<<endl;
cin>>position;
//此时需要一个变量用来存储变化值
if (position < 0 || position > myArray.size )
{
// 处理错误情况,例如位置无效或数组已满
cout << "无效位置" << endl;
return;
}
//将从删除位置开始的元素向前移动一位,需要将后值赋予给前值
for(int i=position;i<myArray.size;i++)
{
myArray.arr[i]=myArray.arr[i+1];
}
//更新数组大小
myArray.size--;
Print(myArray);
}
//修改函数
void Revise(MyArray& myArray)
{
int position;
cout<<"请输入修改值的位置:"<<endl;
cin>>position;
int value;
cout<<"请输入需要修改的值:"<<endl;
cin>>value;
//此处需要注意改变位置与数组存储之间的差别
myArray.arr[position-1]=value;
Print(myArray);
}
//查找函数
void Find(MyArray& myArray)
{
int value;
cout<<"请输入需要查找的值:"<<endl;
cin>>value;
for(int i=0;i<myArray.size;i++)
{
if(myArray.arr[i]==value)
{cout<<"该值查找成功,位置是:"<<i+1<<endl;
return;}
}
cout<<"该值未成功查找"<<endl;
}
//排序函数,使用冒泡排序法
void Sort(MyArray& myArray)
{
int i,j;
//设置变量用于大小比较
int value=0;
for(i=0;i<myArray.size-1;i++)
{
for(j=0;j<myArray.size-i-1;j++)
{
if(myArray.arr[j]>myArray.arr[j+1])
{
value=myArray.arr[j];
myArray.arr[j]=myArray.arr[j+1];
myArray.arr[j+1]=value;
}
}
}
Print(myArray);
}
// 打印函数,作为结构体外部的成员函数
int main() {
MyArray myArray; // 创建MyArray实例
// 初始化数组和size
cout<<"请输入数组的大小(不超过100):"<<endl;
cin>>myArray.size; // 设置数组当前大小
Scanf(myArray);
//若需要通过数字来调用功能,可以使用switch语句
//确定目标值
int flag;
cout<<"请输入功能代表的目标值"<<endl;
cout<<"1-插入 2-删除 3-修改 4-查找 5-排序"<<endl;
cin>>flag;
//使用switch语句的过程中,不能忘记break跳出
switch(flag)
{
case(1):
//插入函数
Insert(myArray);break;
case(2):
//删除函数
Delete(myArray);break;
case(3):
//修改函数
Revise(myArray);break;
case(4):
//查找函数
Find(myArray);break;
case(5):
//排序函数
Sort(myArray);break;
default:
cout<<"输入的数字错误"<<endl;
}
return 0;
}