功能:实现对三元组的简单处理
运行结果:
#include<stdio.h>
#include<windows.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef float ElemType;
typedef struct
{
ElemType e[3];
}Triplet;
//创建三元组
Status InitTriplet(Triplet &T,ElemType v0,ElemType v1,ElemType v2,Status i)
{
printf("请输入三元组的三个数值(以空格分隔):\n");
scanf("%f %f %f",&v0,&v1,&v2);
T.e[0]=v0;
T.e[1]=v1;
T.e[2]=v2;
printf("T的三个值分别为:\n");
for(i=0;i<3;i++)
{
printf("%4.2f ",T.e[i]);
}
printf("\n");
return OK;
> 这里是引用
}
//销毁三元组
Status DestroyTriplet(Triplet &T)
{
return OK;
}
//获取第i个元素的值
Status Get(Triplet T,Status i,ElemType &e)
{
printf("请输入您需要的元素的序号\n");
scanf("%d",&i);
if(i<1||i>3)
{
return ERROR;
}
else
{
e=T.e[i-1];
printf("第%d个元素的值为:%4.2f\n",i,e);
return OK;
}
}
//修改第i个元素的值
Status Put(Triplet &T,Status i,ElemType e)
{
printf("请输入您修改值的序号及要修改的值(以空格分隔)\n");
scanf("%d %f",&i,&e);
if(i<1||i>3)
{
return ERROR;
}
else
{
T.e[i-1]=e;
printf("已将第%d个元素的值修改为:%4.2f\n",i,T.e[i-1]);
return OK;
}
}
//判断升序
Status IsAscending(Triplet T)
{
return(T.e[0]<T.e[1]&&T.e[1]<T.e[2]);
}
//判断降序
Status IsDescending(Triplet T)
{
return(T.e[0]>T.e[1]&&T.e[1]>T.e[2]);
}
//返回最大值
ElemType getMax(Triplet T,ElemType &e)
{
if(T.e[0]<T.e[1])
{
e=T.e[1];
}
else
e=T.e[0];
if(e<T.e[2])
{
e=T.e[2];
}
printf("该三元组中元素的最大值为:%4.2f\n",e);
return OK;
}
//返回最小值
ElemType getMin(Triplet T,ElemType &e)
{
if(T.e[0]>T.e[1])
{
e=T.e[1];
}
else
e=T.e[0];
if(e>T.e[2])
{
e=T.e[2];
}
printf("该三元组中元素的最小值为:%4.2f\n",e);
return OK;
}
void menu()
{
printf("**************************\n");
printf("请输入菜单选项:\n");
printf("1 创建三元组\n");
printf("0 退出系统\n");
}
void menu1()
{
printf("**************************\n");
printf("请输入菜单选项:\n");
printf("0 退出系统\n");
printf("1 获取三元组中的值\n");
printf("2 修改三元组中的值\n");
printf("3 判断三元组升降序\n");
printf("4 获取三元组的最大值\n");
printf("5 获取三元组的最小值\n");
printf("6 销毁三元组并重新创建\n");
}
Status main()
{
Triplet T;
Status flag,flog,i;
ElemType v0,v1,v2,e,m;
printf("***欢迎使用三元组处理器***\n");
while(1)
{
menu();
scanf("%d",&flag);
getchar();
switch(flag)
{
case 0:printf("退出系统\n");
return 0;
case 1:InitTriplet(T,v0,v1,v2,i);
while(m=1)
{
menu1();
scanf("%d",&flog);
getchar();
switch(flog)
{
case 0: printf("正在退出,请稍候");
printf(".");
printf(".");
printf(".");
system("cls");
printf("*******欢迎下次使用*******\n");
return 0;
case 1:Get(T,i,e);
break;
case 2:Put(T,i,e);
break;
case 3:{
if(IsAscending(T))
{
printf("该三元组的元素为升序排列\n");
}
else if(IsDescending(T))
{
printf("该三元组的元素为降序排列\n");
}
else
{
printf("该三元组的元素非升降序排列\n");
break;
}
}
break;
case 4:getMax(T,e);
break;
case 5:getMin(T,e);
break;
case 6:printf("正在销毁,请稍候");
printf(".");
printf(".");
printf(".");
system("cls");
InitTriplet(T,v0,v1,v2,i);
break;
}
}
break;
}
}
}