用指针的方法 删除数列中的指定数

源码客栈 毕业设计 1
删除数列中的指定数
题目内容:

请使用指针的方法编写程序,程序的功能是先输入10个整数存储到数组a中,再输入一个指定的数x,把数组中的x数据删除掉,并保证数组中剩余的数还是连续存储的。

比如输入10个整数:3 2 8 6 5 8 7 9 8 5,存入数组,然后输入一个数8,把数组中的8全部删除。最后数组中剩下的数:3 2 6 5 7 9 5,在数组a中还是连续存储的。

要求定义函数实现删除功能:int del_num(int *p, int n, int x);其中函数的返回值为删除指定数后数组中剩余数据的个数。

输入格式:

输入10个整数,和1个指定数。

输出格式:

输出剩余数,以空格隔开,最后一个数后面没有空格。

我的解答思路和尝试过的方法 
#include<math.h>
int del_num(int *p, int n, int x)
{
    int a[n];
    *p=a;
    int i,j,f=0;
    for(i=0;i<n;i++)
        if(a[i]==x)
    {
        f++;
        for(j=i;j<n-1;j++)
            *(a+j)=*(a+j+1);
        n--;
        i--;
    }
    return f;
}
int main()
{
    int a[10],x,i,s;
    for(i=0;i<10;i++)
        scanf("%d",&a[10]);
    scanf("%d",&x);
    s=del_num(*a,10,x);
    for(i=0;i<10-s;i++)
        printf("%d",a[i]);
    return 0;
}

回复

共2条回复 我来回复
  • 毕设项目助手
    这个人很懒,什么都没有留下~
    评论

    代码修改如下

    #include <stdio.h>
    int del_num(int *p, int n, int x)
    {
        // int a[n];
        int i,j,f=0;
        for(i=0; i<n; i++)
            if(p[i]==x)
            {
                f++;
                for(j=i; j<n-1; j++)
                    *(p+j)=*(p+j+1);
                n--;
                i--;
            }
        return 10-f;
    }
    int main()
    {
        int t[10],x,i,s;
        for(i=0; i<10; i++)
            scanf("%d",&t[i]);
        scanf("%d",&x);
        s=del_num(t,10,x);
        //printf("%d\n",s);
        for(i=0; i<s; i++)
            printf("%d ",t[i]);
        return 0;
    }
    
    0条评论
  • 毕设向导
    这个人很懒,什么都没有留下~
    评论

    1没有声明头文件stdio.h 2.26行处, a是一个整数(int)值,而不是一个指针,可以把 去掉 3.在del_num函数内,也犯了类似2的错误,在*p这里。 其实该函数内没必要用中间数组a的,画蛇添足。直接把a替换成p就行了

    0条评论

发表回复

登录后才能评论