c语言高手帮忙下,看看下面这个程序哪里出错
先看看我改后的运行可以对不对。。比较下两者有什么区别。
其实就是将你第一个函数的原型
Status InitTriplet(Triplet T,ElemType v1,ElemType v2,ElemType v3)
改为
Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3);
其它的地方都不需要动一个字,你自己试试吧。。。
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int *Triplet;
typedef int ElemType;
//主要看看这个程序,第一个参数我改成了引用,而你之前的只是一个普通的参数,即使你在后面T=(int *)malloc(3*sizeof(int)); 但想想,它只是一个形参,你主程序中的T并没有被复制,自然出现了错误,其实就是这个一个小小的地方。
Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3)
{
T=(int *)malloc(3*sizeof(int));
if(!T)
exit(OVERFLOW);
T[0]=v1;
T[1]=v2;
T[2]=v3;
return OK;
}
Status Get(Triplet T,ElemType i,ElemType e)
{
if(i3)
return ERROR;
e=T[i-1];
return e;
}
Status Put(Triplet T,ElemType i,ElemType e)
{
if(i3)
return ERROR;
T[i-1]=e;
return T[i-1];
}
void IsAscending(Triplet T)
{
if(T[0]=T[2])
printf("是降序!\n");
else
printf("不是降序!\n");
}
Status Max(Triplet T,ElemType e)
{
e=(T[0]>=T[1])?((T[0]>=T[2])?T[0]:T[2]):((T[1]>=T[2])?T[1]:T[2]);
return e;
}
Status Min(Triplet T,ElemType e)
{
e=(T[0]
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!