c语言数组中一个数的删除与插入

有一个数组其元素按从小到大有序,从键盘输入一个数并在数组中查找该数若找到则在数组中删除第一个与该数相同的元素,若没有找到,将该元素插入到数组中,仍保持有序

bool binary_search(int * arr, int size, int v){
if((arr == NULL) || (size <= 0)){
return false;
}
int bIndex = 0;
int eIndex = size - 1 ;
for(int curIndex = size / 2; eIndex != bIndex; curIndex = (bIndex + eIndex) /2){
if(v < arr[curIndex]){
eIndex = curIndex;
}else if(v > arr[curIndex]){
bIndex = curIndex;
}else{
for(int j = curIndex + 1; j < size; ++j){
arr[j - 1] = arr[j];
}
return true;
}
}
return false;
}
int _tmain(int argc, _TCHAR* argv[]){
int arr[20] = {0};
for(int i = 0 ; i < 20; ++i){
arr[i]=i;
}
for(int i = 0; i < 20; ++i){
cout << arr[i] << "\t";
}
if(binary_search(arr, 20, -116)){
for(int i = 0; i < 19; ++i){
cout << arr[i] << "\t";
}
}else{
cout << "not found" << endl;
}
system("pause");
//AGCDB::uninstallAPI();
return 0;
}

追问

不能运行呀,有错误

追答

你把头文件加上;
#include "stdafx.h"

#include
#include
#include
#include
using namespace std;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-25
#include<<a href="https://www.baidu.com/s?wd=stdio.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Yvuym1PyczPHmYn101nh7h0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtdPjTznj6YPjc" target="_blank" class="baidu-highlight">stdio.h</a>>
#define MAX 50
int insert(int a[],int n,int i,int x)
{
int j;
if(n+1>MAX)
printf("无插入空间\n"); //数组只能存MAX个数
else if(i<1||i>n+1)
printf("插入位置非法\n"); //插入位置的范围为1..n+1
else
{
for(j=n-1;j>i-2;j--)
a[j+1]=a[j]; //将数组中i位置及其后面的数,依次向后移动一格
a[<a href="https://www.baidu.com/s?wd=i-1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Yvuym1PyczPHmYn101nh7h0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtdPjTznj6YPjc" target="_blank" class="baidu-highlight">i-1</a>]=x; //在i位置插入x
n++;
}
return n; //返回当前数组大小
}
int del(int a[],int n,int i)
{
int j;
if(i<1||i>n)
printf("删除位置非法\n");
else
{
for(j=<a href="https://www.baidu.com/s?wd=i-1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Yvuym1PyczPHmYn101nh7h0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtdPjTznj6YPjc" target="_blank" class="baidu-highlight">i-1</a>;j<n-1;j++)
a[j] = a[j+1];
n--;
}
return n;
}
int search(int a[],int n,int x)
{
int i;
for(i=0;i<n;i++)
{
if(a[i]==x)
return i+1;
}
return -1;
}
void printArray(int a[],int n)
{
int i;
for(i=0;;i++)
{
if(i==n-1)
{
printf("%d\n",a[i]);
break;
}
printf("%d ",a[i]);
}
}
void main()
{
int n,i,a[MAX];
int index,x;
printf("输入数组中的元素个数\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入要插入的位置和插入的数\n");
scanf("%d %d",&index,&x);
n = insert(a,n,index,x);
printArray(a,n);
printf("请输入要删除元素的位置\n");
scanf("%d",&index);
n = del(a,n,index);
printArray(a,n);
printf("请输入要查询的元素\n");
scanf("%d",&x);
i = search(a,n,x);
if(i!=-1)
printf("%d的位置:%d\n",x,i);
else
printf("未找到%d\n",x);
}追问

这么多bug?

本回答被网友采纳
相似回答