C语言编写函数,从一个排好序的整型数组中删去某数

【问题描述】编写函数,从一个排好序的整形数组中删去某数。

【输入形式】

输入共两行,数字均为正整数

第一行为10个数字,以空格分割

第二行为1个要删除的数字
【输出形式】

输出共一行,分为两种形式:

1)删除成功

以空格分割的删除后的数字序列

2)删除失败

fail!
【样例输入】

1 2 3 4 5 6 7 8 9 10

10

#include <stdio.h>
void deletex(int a[],int &n,int x)
{int i;
 for(i=0;i<n&&a[i]<x;i++);
 if(i==n||a[i]>x)
 {printf("fail!\n"); return;}
 for(;i<n;i++)a[i]=a[i+1];
 n--;
 for(i=0;i<n;i++)
   printf("%d ",a[i]);
 printf("\n");  
}
int main()
{int n,i,x,a[200];
 char c=' ';
 for(n=0;c!='\n';n++)
   scanf("%d%c",&a[n],&c);
 scanf("%d",&x);
 deletex(a,n,x);
 return 0; 
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-10
#include <stdio.h>
void main(){
int i,j,n,k=1,m=10,a[10];//定义参数m,以确定最后剩余元素个数
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<m;i++)//注意是i<m,不等号右边不能是常量,而是实际元素的个数
if(a[i]==n)
{
for(j=i;j<m;j++)//注意是j<m,道理同上
a[j]=a[j+1];
i--;m--;k=0;//i--的原因是防止有连续若干元素和要查找的数相等
}
if(k) printf("fail!");
else 
for(i=0;i<m;i++)
printf("%d ",a[i]);
}

注意本题排好序的数组中可能有连续相等的元素和输入要查找的数相同。

本回答被网友采纳
第2个回答  2018-05-10
#include <stdio.h>
int main()
{
    int a[10],num,i,k=-1;
    for(i=0;i<10;i++) scanf("%d",&a[i]);
    scanf("%d",&num);
    for(i=0;i<10;i++)
    {
        if(a[i]==num) k=i;
    }
    for(i=k;i<9;i++)
    {
        a[i]=a[i+1];
    }
    if(k=-1) printf("fail!");
    else   for(i=0;i<9;i++)    printf("%d ",a[i]);
    return 0;
    }

相关了解……

你可能感兴趣的内容

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