编程, 给定排好数组, 输入一个数,若数组中有则删除这个数,无则输出“数组中没有这个数”

有一个已经排好序的数组,例如{11,16,25,30,57,77,87}。要求输入一个数。在数组中查找是否有这个数,如果有,将该数从数组中删除,要求删除后的数组仍然保持有序,如果没有,则输出“数组中没有这个数

#include<iostream>

using namespace std;

int find(int *A,int a,int low,int high){

 if(high != low){

  int mid=(high+low)/2;

  if(A[mid]==a) return mid;

  if(A[mid]>a) return find(A,a,low,mid);

  if(A[mid]<a) return find(A,a,mid+1,high);

 }

 else if(A[low]==a) return low;

 return -1;

}

int deleteX (int *A,int length,int l){

 int i=0;

 for(i=l;i<length-1;i++){

  A[i]=A[i+1];

 }

 A[i]=0;

 return 1;

}

int main(){

 int A[100];

 int len,i,a;

 cout<<"请输入这个升序排列的数组有多少个数:";

 cin>>len;//输入有多少个数。不超过100;

 cout<<"请依次输入数组中的元素:";

 for(i=0;i<len;i++)

  cin>>A[i];

 cout<<"请输入要查找并删除的数:";

 cin>>a;//输入要删除的数。

 int l = find(A,a,0,len);

 if(l!=-1){

  deleteX(A,len,l);

  cout<<"删除元素之后的数组。";

  for(i=0;i<len-1;i++){

   cout<<A[i]<<" ";

  }

  cout<<endl;

 }

 else cout<<"数组中不存在这个数!";

 return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-20
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

int array[7]={11,16,25,30,57,77,87}; 
int data=0,i,j;
int flag=0;
printf("input the data:\n");
scanf("%d",&data);
for(i=0;i<7;i++){
if(data==array[i]){
for(j=i;j<7;j++){
array[j]=array[j+1];
flag=1;
}
}

}
if(flag==0){
printf("no the data\n");
}else{
for(i=0;i<6;i++)
printf("%d ",array[i]);

}

return 0;
}

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网