编写函数,从一个排好序的整型数组中删除某数.

 我来答
交大之子许明华
2017-06-12 · 知道合伙人互联网行家
交大之子许明华
知道合伙人互联网行家
采纳数:40 获赞数:480
国家一等助学金获得者 佳士光彩助学金获得者 “二星级”志愿者获得者 二等综合奖学金获得者

向TA提问 私信TA
展开全部
解答:
1,所用语言:C++
2,需要头文件:#include<iostream>
using namespace std;
3,删除函数:
int Del(int *a , int n , int x)
{
int i , j ,bj = 0;
for(i = 0 ; i < n ; i ++)
{
if(a[i] == x)
{
bj = 1;
break;
}
}
if(bj == 1)
{
for(j = i ; j < n - 1 ; j ++)
{
a[j] = a[j +1];
}
cout<<"已经成功将"<<x<<"删除"<<endl;
cout<<"删除后的数组为:"<<endl;
for(i = 0 ; i < n - 1 ; i ++)
cout<<a[i]<<" "<<endl;
}
else
cout<<"未找到"<<x<<endl;
return 0;
}
4,主函数中调用:
int main()
{
int p[10]={ 0,1,2,3,4,5,6,7,8,9 },i,x,n=10;,
cout<<"请输入要删除的数:"<<endl;
cin>>x;
Del(p,n,x);
return 0;
}
90后奋青5454
2017-05-27
知道答主
回答量:7
采纳率:0%
帮助的人:5136
展开全部
#include<stdio.h>
int tab[10]={0,1,2,3,5,5,5,7,7,9};

void deleteMember(int mem){
    int i = 0;
    int j = 0;
    for(i = 0, j = 0; i < (sizeof(tab)/sizeof(int)); i++){
        if(tab[i] != mem){
            tab[j++] = tab[i];
        }
    }
    for(i = 0; i < (sizeof(tab)/sizeof(int))-j; i++){ //多出来的数组元素清0
        tab[j+i] = 0;
    }
}
int main(void){
    int i = 0;
    deleteMember(5);//你要删除tab数组中的数值5
    for(i = 0; i < (sizeof(tab) / sizeof(int)); i++){
        printf("tab[%d] = %d\t", i, tab[i]);
     }
    return 0;
}

调用这个函数就行了,你也可以再多添加一个参数,数组参数,

deleteMember函数没有返回值,参数int 的形参mem就是你要删除的哪个数。比如你要删除数值5运行主函数就行。

运行结果是tab[0] = 0    tab[1] = 1    tab[2] = 2    tab[3] = 3    tab[4] = 7

tab[5] = 7    tab[6] = 9    tab[7] = 0    tab[8] = 0    tab[9] = 0

已经在DEC-C++上验证成功。如果有错误,可能是输入有误。亲回答个问题好难。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
推荐于2017-05-23 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3766万
展开全部
#include<stdio.h>
int mdelete(int *a,int n,int data)
{ int i,rt=1;
for ( i=0;i<n;i++ ) if ( a[i]==data ) { rt=0; break; }
if ( rt==0 ) { n--; for ( ;i<n;i++ ) a[i]=a[i+1]; }
return n;
}
void main()
{ int a[10]={ 0,1,2,3,4,5,6,7,8,9 },i,n=10;
for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n");
n=mdelete(a,n,4);
for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小灬彬灬彬
2017-06-04
知道答主
回答量:6
采纳率:0%
帮助的人:2.2万
展开全部
#include<stdio.h>
int mdelete(int *a,int n,int data)
{ int i,rt=1;
for ( i=0;i<n;i++ ) if ( a[i]==data ) { rt=0; break; }
if ( rt==0 ) { n--; for ( ;i<n;i++ ) a[i]=a[i+1]; }
return n;
}
void main()
{ int a[10]={ 0,1,2,3,4,5,6,7,8,9 },i,n=10;
for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n");
n=mdelete(a,n,4);
for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友74fb4c101
2014-11-28 · TA获得超过213个赞
知道小有建树答主
回答量:284
采纳率:100%
帮助的人:58.4万
展开全部
不好意思没看懂这个问题!
更多追问追答
追问
这是c语言的一道题。
追答
这个不会,帮不上你,还以为是EXCEL里的函数!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式