回 帖 发 新 帖 刷新版面

主题:求大神指教哪错了!!!

//main1-1.cpp
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;    //定义抽象数据类型ElemType在本程序中为整型
//typedef double ElemType    //定义抽象数据类型ElemType在本程序中为双精度型
//#include"c1-1.h"
//#include"bo1-1.cpp"
//include"func1-1.h"


//c1-1.cpp
typedef ElemType *Triplet;


//bo1-1.cpp
Status InitTriplet(Triplet T,ElemType v1,ElemType v2,ElemType v3){
    //构造三元组T,依次置T的3个元素的初值为v1,v2和v3
    T=(ElemType *)malloc(3*sizeof(ElemType));
    if(!T)
        exit(OVERFLOW);
    T[0]=v1;    T[1]=v2;    T[2]=v3;
    return OK;
}//InitTriplet
Status DestroyTriplet(Triplet &T){
    //销毁三元组T
    free(T);
    T=NULL;
    return OK;
}//DestroyTriplet
Status Get(Triplet T,int i,ElemType &e){
    //1<=i<=3,用e返回T的第i元的值
    if(i<1||i>3)
        return ERROR;
    e=T[i-1];
    return OK;
}//Get
Status Put(Triplet &T,int i,ElemType e){
    //1<=i<=3,置T的第i元的值为e
    if(i<1||i>3)
        return ERROR;
    T[i-1]=e;
    return OK;
}//Put
Status IsAscending(Triplet T){
    //如果T的3个元素按升序排列,则返回1,否则返回0
    return(T[0]<=T[1]&&T[1]<=T[2]);
}//IsAscending
Status IsDescending(Triplet T){
    //如果T的3个元素按降序排列,则返回1,否则返回0
    return(T[0]>=T[1]&&T[1]>=T[2]);
}//IsDescending
Status Max(Triplet T,ElemType &e){
    //用e返回指向T的最大元素的值
    e=(T[0]>=T[1])?(T[0]>=T[2]?T[0]:T[2]):(T[1]>=T[2]?T[1]:T[2]);
    return OK;
}//Max
Status Min(Triplet T,ElemType &e){
    //用e返回指向T的最小元素的值
    e=(T[0]<=T[1])?(T[0]<=T[2]?T[0]:T[2]):(T[1]<=T[2]?T[1]:T[2]);
    return OK;
}//Min


//func1-1.cpp
void PrintE(ElemType e){
    printf("%d\n",e);
  //printf("%f\n",e);    
}//PrintE
void PrintT(Triplet T){
    printf("%d,%d,%d\n",T[0],T[1],T[2]);
  //printf("%f,%f,%f\n",T[0],T[1],T[2]);
}//PrintT


void main()
{
    Triplet T;
    ElemType m;
    Status i;
    i=InitTriplet(T,5,7,9);
  //i=InitTriplet(T,5.0,7.0,9.0);
    printf("调用初始化函数后,i%d(1:成功)。T的3个值为",i);
    PrintT(T);
    i=Get(T,2,m);
    if(i==OK)
    {
        printf("T的第2个值为");
        PrintE(m);
    }
    i=Put(T,2,6);
    if(i==OK)
    {
        printf("将T的第2个值改为6后,T的3个值为");
        PrintT(T);
    }
    i=IsAscending(T);
    printf("调用测试升序的函数后,i=%d(0:否 1:是)\n",i);
    i=IsDescending(T);
    printf("调用测试降序的函数后,i=%d(0:否 1:是)\n",i);
    if((i=Max(T,m))==OK)
    {
        printf("T中的最大值为");
        PrintE(m);
    }
    if((i=Min(T,m))==OK)
    {
        printf("T中的最小值为");
        PrintE(m);
    }
    DestroyTriplet(T);
    printf("销毁T后,T=%u\n",T);
}

回复列表 (共1个回复)

沙发

要发问题!别发代码,这么大一段怎么看额。

我来回复

您尚未登录,请登录后再回复。点此登录或注册