C语言问题

编写函数int delnum(int a[ ] , int num , int n),用于在长度是n的数组a中,删除一个值为num的元素。删除后数组的长度作为函数的返回值返回。注意,num在数组中可能不只一个。请以7_5.c命名本程序并上交。
主函数如下:
# define N 10
void main( )
{ int a[N] , num;
scanf(“%d”,&num);
输入N个数到数组a中;
调用delnum函数在数组a中删除指定的数num;
输出删除了num后的数组a;
}
定义并编写delnum函数

#include <stdio.h>
#define N 10
int delnum(int a[],int num,int n)
{
 int i,j=0;
 /*用j记录数组a中不等于num的元素个数(即需要保存的元素个数),
   边扫描数组a边统计j,并将不等于num的元素向前放置在j位置上,最后
   修改数组的长度
 */
 for(i=0;i<n;i++)
  if(a[i]!=num)
  {
   a[j]=a[i];
   j++;
  }
 return j;
}
void main()
{
 int a[N],num,n,i;
 printf("输入要被删除的数:");
 scanf("%d",&num);
 printf("输入数组元素:\n");
 for(i=0;i<N;i++)
  scanf("%d",&a[i]);
 n=delnum(a,num,N);
 printf("输出删除了num后的数组元素:\n");
 for(i=0;i<n;i++)
  printf("%-4d",a[i]);
 printf("\n");
}

示例运行如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-04
如果有几个相同的值都删除吗?追问

是的

追答

# define N 10
int delnum(int a[],int num,int n)
{
int i,j;
for(i=0;i<n;i++)
if(a[i]==num)
{
for(j=i;j<n;j++)
a[j]=a[j+1];
n--;
i--;
}
return n;
}
void main( )
{
int a[N],i,num,Len;
printf("input array:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("what do you delete?\n");
scanf("%d",&num);
Len=delnum(a,num,N);
for(i=0;i<Len;i++)
printf("%d ",a[i]);
getch();
}

相关了解……

你可能感兴趣的内容

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