普通网友 2016-12-06 14:13 采纳率: 0%
浏览 1031

C语言求帮忙检查下错误!!!

编写函数int delnum(int a[ ] , int n , int num),实现在长度是n的数组a中,删除值为num的元素。删除后数组的中剩余数据的个数作为函数的返回值返回。注意,num在数组中可能不只一个。
从数据中删除一个数,所做的操作是该元素后面的数据全部前移一个存储位置。例如:
长度为10的数组中存储10个数据:2,2,5,8,3,1,4,7,9,2,删除2,则数组中剩余有效数据长度为8,依次为5,8,3,1,4,7,9

#include
#include
#define N 20
int delnum(int p[],int n,int num)
{
int nlen,i,j;
nlen=n;
for(i=0;i<nlen;i++)
{

    if(p[i]==num)
    {
        for(j=i;j<nlen;j++)
        p[j]=p[j+1];
        nlen--;
    }
}
return nlen;

}
int main()
{
int a[N],num,len,i;

for(i=0;i<N;i++)          
    printf("%d ",a[i]);
puts("");
printf("Please input delete num:");
scanf("%d",&num);         
len=delnum(a,N,num);      
for(i=0;i<len;i++)        
    printf("%d ",a[i]);    
puts("");
return 0;

}

图片说明

  • 写回答

2条回答 默认 最新

  • lunhui2016 2016-12-06 15:32
    关注

    你的数组都还没有初始化,你在main函数里就把它输出了,
    #include
    #define N 10
    int delnum(int p[], int n, int num)
    {
    int nlen, i, j;
    nlen = n;
    for (i = 0; i<nlen; i++)
    {
    if (p[i] == num)
    {
    for (j = i; j < nlen; j++)
    {
    p[j] = p[j + 1];
    }
    nlen--;
    i = -1; //使循环从i=0开始
    }
    }
    return nlen;
    }

    int main()
    {
    int a[N], num, len, i;
    for (i = 0; i<N; i++)
    scanf("%d ", a[i]);
    puts("");
    printf("Please input delete num:");
    scanf("%d", &num);
    len = delnum(a, N, num);
    for (i = 0; i<len; i++)
    printf("%d ", a[i]);
    puts("");
    return 0;
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 ROS Turtlebot3 多机协同自主探索环境时遇到的多机任务分配问题,explore节点
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题