利用指针来遍历数组并且查找数

使用指针设计程序:遍历一维数组,查找输入的一个数,找到次数首次出现的位置后删除此数,然后输出数组;否则输出“查无此数”

img


毫无头绪

img

img


代码参考如下:

#include<stdio.h>

int main() 
{
    int n;
    printf("Input n:");
    scanf("%d", &n);
     
    printf("Input %d numbers:", n);

    int *p, a[n], i;
    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    p = a;

    printf("\nBefore:");
    for (int i = 0; i < n; i++) {
        printf("%4d", *(p + i));
    }

    int m;
    printf("\nInput search number:");
    scanf("%d", &m);

    for (i= 0; i < n; i++) {
        if (m == *(p + i))
            break;
    }

    if (i == n) 
    {
        printf("查无此数\n");
    }
    else
    {
        int j;
        for (j = i; j < n - 1; j++) {
            *(p + j) = *(p + j + 1);
        }

        printf("After:");
        for (i = 0; i < n - 1; i++) {
            printf("%4d", *(p + i));
        }
    }

    return 0;
}

如有帮助,欢迎采纳哈!

在这里插入图片描述

本人的开源项目,欢迎star支持下!!!

循环搜索就好了啊,找到后,就把后续元素全部向前移动一个位置

#include<stdio.h> 

int main()
{
    int a[10],t,*p;
    printf("请输入数组:");
    for(p=a;p<a+10;p++)
        scanf("%d",p);
    for(p=a;p<a+10;p++)
        printf("%d ",*p);
    printf("请输入待查找的数:");
    scanf("%d",&t);
    for(p=a;p<a+10;p++)
    {
        if(*p == t)
        {
            for(;p<a+9;p++)
                *p = *(p+1);
            break;
        }
    }
    if(p==a+10)
        printf("没有这个数");
    else
    {
        for(p=a;p<a+9;p++)
            printf("%d ",*p);
    }
    return 0;
}