主函数需要子函数穿回来的数据,应该怎么写

主函数需要代入子函数cz的结果max和k,但是最后一行printf应该怎么写才能有正确返回值


#include
#include
#define MaxSize 20
typedef int ElemType;
typedef struct
{
    int data[MaxSize];
    int length;
}SqList;
void InitList(SqList *&L)
{
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
}
void CreatList(SqList *&L,int a[],int n)
{
    int i;
    L=(SqList *)malloc(sizeof(SqList));
    for(i=0;idata[i]=a[i];
    }
    L->length=i;
}
void DispList(SqList *L)
{
    int i=0;
    for(i=0;ilength;i++)
    {
        printf("%d ",L->data[i]);
    }
}
int cz(SqList *L)
{
    int i=1;
    int max=L->data[0],k=0;
    while(ilength)
    {
       if(L->data[i]>max)
       {
            max=L->data[i];
            k=i+1;
       }
       i++;    
    }
    return(max,k);
}
int main()
{
    int a[5];
    SqList *L;
    InitList(L);
    printf("请输入五个元素");
    for(int i=0;i<5;i++)
    {
        scanf("%d",&a[i]);
    }
    CreatList(L,a,5);
    printf("请输出:");
    DispList(L);
    cz(L);
    printf("\n%d,%d",cz(L));
}

img

增加一个结构体,并修改下这个子函数


typedef struct
{
    int maxvalue;
    int k;
}CZreturn;

CZreturn cz(SqList *L)
{
    int i=1;
    int max=L->data[0],k=0;
    while(i<L->length)
    {
       if(L->data[i]>max)
       {
            max=L->data[i];
            k=i+1;
       }
       i++;    
    }
    CZreturn tmp;
    tmp.maxvalue=max;
    tmp.k=k;
    return tmp;
}

然后主函数中这样修改下:
CZreturn tmpvalue=cz(L);
printf("\n%d,%d",tmpvalue.maxvalue,tmpvalue.k);

题主代码修改如下,改动处见注释,供参考:

#include<stdio.h>
#include<malloc.h>
#define MaxSize 20
typedef int ElemType;
typedef struct
{
    int data[MaxSize];
    int length;
}SqList;
void InitList(SqList *&L)
{
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
}
void CreatList(SqList *&L,int a[],int n)
{
    int i;
    //L=(SqList *)malloc(sizeof(SqList)); 修改
    for(i=0;i<n;i++)
    {
        L->data[i]=a[i];
    }
    L->length=i;
}
void DispList(SqList *L)
{
    int i=0;
    for(i=0;i<L->length;i++)
    {
        printf("%d ",L->data[i]);
    }
}
int cz(SqList *L)
{
    int i=0;          // i=1 修改
    int max=0;        //,k=0;修改
    while(i<L->length)
    {
       if(L->data[i]>L->data[max])
       {
            max = i; //修改
            //k=i+1;
       }
       i++;    
    }
    return  max; //return(max,k); 修改
}
int main()
{
    int a[5],max; //修改
    SqList *L;
    InitList(L);
    printf("请输入五个元素");
    for(int i=0;i<5;i++)
    {
        scanf("%d",&a[i]);
    }
    CreatList(L,a,5);
    printf("请输出:");
    DispList(L);

    max = cz(L); //修改
    printf("\nMax:L->data[%d] = %d", max, L->data[max]);
    //printf("\n%d,%d",cz(L)); 修改

    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^