在这里插入图片描述

array.h


#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;


#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;

void set(int *arr,int size,int val=0);//设置初始值 
void find(const int *arr,int size,int &maxm,int&minm);//寻找最大值最小值 
void emer(int* &arr1,const int*arr2,int &size1,int size2,int *arr3=NULL);//合并两个数组 
void dele(const int target, int *arr,int &size);//删除某个值 

array.cpp

#include "array.h" 

void set(int *arr,int size,int val){
	for(int i=0;i<size;i++){
		arr[i]=val;
	}
	arr=NULL; 
}
void find(const int *arr,int size,int &maxm,int&minm){
	minm=maxm=arr[0];//初始化为第0个元素 
	for(int i=1;i<size;i++){
		if(arr[i]>maxm){
			maxm=arr[i];
		}
		else if(arr[i]<minm){
			minm=arr[i];
		}
	}
	arr=NULL;
}
void emer(int* &arr1,const int*arr2,int &size1,int size2,int *arr3){
	if(arr3==NULL){
		arr1=(int *)realloc(arr1,4*(size1+size2));

		for(int i=size1;i<size1+size2;i++){
			arr1[i]=arr2[i-size1];	
		}
		size1+=size2;//如果arr3==NULL要把数组大小返回 
	}
	else{
		arr3=(int *)realloc(arr3,4*(size1+size2));
		int cnt=0;//用cnt来作arr3的计数器 
		for(int i=0;i<size1;i++){
			arr3[cnt++]=arr1[i];
		}
		for(int i=0;i<size2;i++){
			arr3[cnt++]=arr2[i];
		}
	}
	arr2=NULL,arr3=NULL; 
}
void dele(const int target, int *arr,int &size){
	bool jud[size];
	memset(jud,0,sizeof (jud));
	int size1=size;
	int *temp=(int *)malloc(4*size);//一个临时数组储存 
	int cnt=0;
	for(int i=0;i<size1;i++){
		if(arr[i]==target){
			jud[i]=1;
			size--;
		}
		if(!jud[i]){
			temp[cnt++]=arr[i];//写入 
		}
	}
	for(int i=0;i<cnt;i++){
		arr[i]=temp[i];//重新写入 
	}
	arr=(int *)realloc(arr,sizeof (temp));
	arr=NULL; 
}

main

#include "array.h"


int main(int argc, char** argv) {	
	cout<<"请输入a、b数组的长度"<<endl;
	int len1,len2;
	cin>>len1>>len2;
	int *a=(int*)malloc(sizeof(int)*len1);
	int *b=(int*)malloc(sizeof(int)*len2); 
	cout<<"请输入初始化a数组的元素值"<<endl; 
	int val=0;
	cin>>val;
	set(a,len1,val);
	cout<<"结果为"<<endl;	
	for(int i=0;i<len1;i++){
		cout<<a[i]<<endl;
	}
	cout<<"请输入初始化b数组的元素值"<<endl; 
	cin>>val;
	set(b,len1,val);
	cout<<"结果为"<<endl;	
	for(int i=0;i<len2;i++){
		cout<<b[i]<<endl;
	}	
	int  maxm,minm;
	cout<<"下面开始对a数组进行自由赋值"<<endl; 
	for(int i=0;i<len1;i++){
		cin>>a[i];
	} 
	cout<<"下面开始查找a数组的最大值最小值"<<endl;
	find(a,len1,maxm,minm);
	cout<<"最大值为"<<maxm<<endl;
	cout<<"最小值为"<<minm<<endl;
	
	cout<<"下面合并a、b数组"<<endl;
	emer(a,b,len1,len2);
	cout<<"结果为"<<endl;	
	for(int i=0;i<len1;i++){
		cout<<a[i]<<endl;
	}
	cout<<"接下来删除a数组中的特定的数字"<<endl;
	int tar;
	cin>>tar;
	dele(tar,a,len1); 
	cout<<"结果为"<<endl;
	for(int i=0;i<len1;i++){
		cout<<a[i]<<endl;
	}
	
	
	return 0;
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐