注册 登录
编程论坛 C语言论坛

数组的删除问题

frecklesss 发布于 2020-06-17 19:18, 1395 次点击
知道怎么找数组中的指定数,怎么能按这个要求改呢?
题目是这样的:
只有本站会员才能查看附件,请 登录


代码:
#include<stdio.h>
int Search(int a[], int n, int x);
void main(){
    int a[10],i,m,x,n;
    printf("Input 10 numbers:\n");
    for(i=0;i<10;i++){
        scanf("%d",&a[i]);
    }
    printf("Input x:\n");
    scanf("%d",&x);
    m=Search(a,n,x);
    if(m==-1)
        printf("Not found!");
    else
        printf("Subscript of x is %d\n",m);
}
int Search(int a[], int n, int x){
    int i;
    for(i=0;i<10;i++){
        if(a[i]==x)
            return i;
    }
    return -1;
}


[此贴子已经被作者于2020-6-17 23:09编辑过]

3 回复
#2
ditg2020-06-18 00:58
n是啥?
#3
八画小子2020-06-18 07:24
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define ARRAY_SIZE    10

int main(void)
{
    int array[ARRAY_SIZE];
    int x;

    printf("Input %d numbers: ", ARRAY_SIZE);
    for (int i = 0; i < ARRAY_SIZE; i++)
    {
        scanf("%d", &array[i]);
    }

    printf("Input x: ");
    scanf("%d", &x);

    int* p = array;
    int* q = array;
    bool get_first = false;
    while (p < array + ARRAY_SIZE)
    {
        if (*p == x)
        {
            if (!get_first)
                get_first = true;
            else
                p++;
        }
        else
        {
            *q++ = *p++;
        }
    }

    p = array;
    printf("[");
    while (p != q)
    {
        printf(" %d", *p++);
    }
    printf(" ]");

    return EXIT_SUCCESS;
}


随手写的代码,可能有错误,大概意思就是这个。
#4
吹水佬2020-06-18 08:25
#include<stdio.h>
int Search(int a[], int n, int x);
int Delch(int a[], int n, int x);
void main()
{
    int a[10],i,m,x,n;
    printf("Input 10 numbers:\n");
    for(i=0; i<10; i++)
    {
        scanf("%d",&a[i]);
    }
    printf("Input x:\n");
    scanf("%d",&x);
    m = Search(a,10,x);
    if (m<10)
    {
        printf("Subscript of x is %d\n",m);
        m = Delch(a,m+1,x);
        for (i=0; i<m; ++i)
            printf("%d ",a[i]);

    }
    else
        printf("Not found!\n");
}
int Search(int a[], int n, int x)
{
    int i;
    for(i=0; i<n && a[i]!=x; ++i);
    return i;
}
int Delch(int a[], int m, int x)
{
    int i,j=m;
    for (i=j; i<10; ++i)
    {
        if (a[i] != x)
            a[j++] = a[i];
    }
    return j;
}
1