【问题描述】编写函数,从一个排好序的整形数组中删去某数。
【输入形式】
输入共两行,数字均为正整数
第一行为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;
}
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]);
}
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;
}
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;
}