# include<malloc.h> # include<stdlib.h> # include<iostream.h> typedef int *Triplet; //由InitTriplet分配3个元素存储空间 void InitTriplet(Triplet &T,int v1,int v2,int v3){ //操作一 //构造三元组T,依次置T的3个元素初值为v1,v2,v3 T=(int*)malloc(3*sizeof(int)); //分配3个元素的存储空间 if(!T) exit(0); //分配存储空间失败 T[0]=v1;T[1]=v2;T[2]=v3; } void DestroyTriplet(Triplet &T){ //操作二 //销毁三元组T free(T);T=NULL; } void Get(Triplet T,int i,int &e){ //操作三 //1<=i<=3 ,用e返回T的第i元的值 if(i<1||i>3){ cout<<"输入有误"<<endl; } else e=T[i-1]; } void Put(Triplet &T,int i,int e){ //操作四 //1<=i<=3,置T的第i元的值为e if(i<1||i>3) cout<<"输入有误"<<endl; else T[i-1]=e; } int IsAcending(Triplet T){ //操作五 //如果T的3个元素按升序排列,则返回1,否则返回0 return (T[0]<=T[1])&&(T[1]<=T[2]); } int IsDescending(Triplet T){ //操作六 //如果T的3个元素按降序排列,则返回1,否则返回0 return (T[0]>=T[1])&&(T[1]>=T[2]); } void Max(Triplet T,int &e){ //操作七 //用e返回指向T的最大元素的值 e=(T[0]>=T[1])?((T[0]>=T[2])?T[0]:T[2]):((T[1]>=T[2])?T[1]:T[2]); } void Min(Triplet T,int &e){ //操作八 //用e返回指向T的最大元素的值 e=(T[0]<=T[1])?((T[0]<=T[2])?T[0]:T[2]):((T[1]<=T[2])?T[1]:T[2]); } void show(Triplet T){ //输出三元组 cout<<T[0]<<" "<<T[1]<<" "<<T[2]<<endl; } void main(){ cout<<"#########测试操作一#######/n"; Triplet T; InitTriplet(T,1,2,3); show(T); cout<<"/n#########测试操作二#######/n"; DestroyTriplet(T); if(T) cout<<"三元组存在"<<endl; else cout<<"三元组不存在"<<endl; cout<<"/n#########测试操作三#######/n"; InitTriplet(T,2,3,4); int e; Get(T,0,e); cout<<e<<endl; Get(T,1,e); cout<<e<<endl; cout<<"/n#########测试操作四#######/n"; show(T); Put(T,1,1); show(T); Put(T,0,1); cout<<"/n#########测试操作五#######/n"; show(T); cout<<(IsAcending(T)?"是升序":"不是升序")<<endl; cout<<"/n#########测试操作六#######/n"; show(T); cout<<(IsDescending(T)?"是降序":"不是降序")<<endl; cout<<"/n#########测试操作七#######/n"; show(T); Max(T,e); cout<<e<<endl; cout<<"/n#########测试操作八#######/n"; show(T); Min(T,e); cout<<e<<endl; } 输出结果: