有没有知道这个应该怎么做呢?

img


#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
int L[MAXSIZE]; //顺序表L

void InPutList(int L[ ]); //根据输入数据构建顺序表L
int LocateElem(int L[ ], int e); //在顺序表L中查找元素e

int main()
{
InPutList(L);
int e;
int pos;
scanf("%d",&e);
pos = LocateElem(L,e);
printf("The position of %d in SequenceList L is %d\n",e,pos);
return 0;
}

void InPutList(int L[ ])
{
int e;
int i=0;
scanf("%d",&e);
while(e!=-1)
{
L[i++]=e;
scanf("%d",&e);
}
}

int LocateElem(int L[ ], int e)
{//请在下面给出本函数的完整代码,实现在L中查找e,查找成功返回其序号,否则返回0

}

C语言中,子函数中无法正确获取数组大小,因为传进来的是数组第一个元素的地址,长度相当于为1,所以必须把数组的长度也要传进来:

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 100

int L[MAXSIZE]; //顺序表L

void InPutList(int L[]);                  //根据输入数据构建顺序表L
int LocateElem(int L[], int size, int e); //在顺序表L中查找元素e

int main()
{
    InPutList(L);
    int e;
    int pos;
    scanf("%d", &e);
    int size = sizeof(L) / sizeof(int);
    pos = LocateElem(L, size, e);
    printf("The position of %d in SequenceList L is %d\n", e, pos);
    return 0;
}

void InPutList(int L[])
{
    int e;
    int i = 0;
    scanf("%d", &e);
    while (e != -1)
    {
        L[i++] = e;
        scanf("%d", &e);
    }
}

int LocateElem(int L[], int size, int e)
{
    //请在下面给出本函数的完整代码,实现在L中查找e,查找成功返回其序号,否则返回0
    if (size == 0)
    {
        return 0;
    }
    for (int i = 0; i < size; i++)
    {
        if (L[i] == e)
        {
            return i;
        }
    }
    return 0;
}