主函数需要代入子函数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));
}
增加一个结构体,并修改下这个子函数
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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: