C语言,求高手帮忙。明天要考试了,帮帮忙吧!不胜感激!

有一个排好序的数组,要求输入一个数,如果数组中有这个数,则将该数从数组中删除。删除后的数组仍保持原序列。

只需要从头开始找到这个数之后把这个位置之后的元素依次前移一个位置就好

#include <stdio.h>
int main()
{
int myarray[10];
int i, j, n;
//初始化数组
for (i = 0; i < 10; i ++)
myarray[i] = i;
printf("Please input a number between 0 ~ 9: ");
scanf("%d", &n);
//输出删除前状态
printf("Array before delete the input number:[");
for (i = 0; i < 10; i++)
printf(" %d", myarray[i]);
printf(" ]\n");
for (i = 0; i < 10; i++)
{
if (myarray[i] == n)
{
for (j = i; j < 9; j++)
myarray[j] = myarray[j+1];
break;
}
}
//输出删除后状态
printf("Array after delete the input number:[");
for (i = 0; i < 9; i++)
printf(" %d", myarray[i]);
printf(" ]");
}


温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-27
#include "stdio.h"
int resort(int d[],int f,int n)
{
for(int i=0;i<n;i++)
{
if(d[i]==f)
{
for(int j=i;j<n-1;j++)
d[j]=d[j+1];
n=n-1;
}
}
return n;
}
int main()
{
int d[]={1,2,3,4,5,6,7,8,9,10};
int f,n;
printf("输入一个(1-10)之间的数:");
scanf("%d",&f);
n=resort(d,f,10);
for(int i=0;i<n;i++)
printf("%d ",d[i]);
}
相似回答