include<stdio.h>
include<stdlib.h>
define OK 1
define ERROR 0
define OVERFLOW -2
typedef int Status;
typedef float ElemType;
typedef ElemType *Triplet; // 聲明Triplet為ElemType指針類型
//三元組的初始化
Status initTriplet(Triplet &T, ElemType v0, ElemType v1, ElemType v2)
{
T = ElemType malloc(3sizeof(ElemType)); if T == NULL
{
printf(“分配內存失敗!”);
exit(OVERFLOW);
}
T[0] = v0;
T[1] = v1;
T[2] = v2;
return OK;
}
//釋放內存,退出系統, 注意:動態分配內存需要及時釋放內存空間
void destroyTriplet(Triplet &T)
{
free(T) ;
printf(“分配內存已釋放!”);
exit(0);
}
// 用e獲取T的第i(1~3)個元素的值,
Status getElem(Triplet T, int i, ElemType &e)
{
if (i < 1 || i > 3)
return ERROR;
else e = T[i-1] ;
return OK;
}
// 置T的第i元的值為e
Status putElem(Triplet &T,int i,ElemType e)
{
if (i < 1 || i > 3)
return ERROR;
else T[i-1] = e ;
return OK;
}
int main()
{
Triplet T;
Status flag;
ElemType v0, v1, v2, e;
printf(“請進入三元組的三個值v0,v1,v2:\n”);
scanf("%f%f%f", &v0, &v1, &v2);
// 初始化三元組
initTriplet(T, v0, v1, v2);
printf(“調用初始化函數后,T的三個值為:%.1f,%.1f,%.1f\n”, T[0], T[1], T[2]);
// 調用函數獲得T的第2元的值
getElem(T, 2, e) ;
printf(“三元組第2元的值為:%.1f\n”,e);
// 調用函數修改T的第2元的值為56.7
putElem(T, 2, 56.7) ;
// 再次輸出T的第2元的值
printf(“三元組第2元的值改成了:%.1f\n”,T[1]);
destroyTriplet(T);
return 0;
}
正確答案
第一空:
ElemType *或 Triplet
第二空:
T == NULL或!T
第三空:
free(T)
第四空:
e = T[i-1]
第五空:
T[i-1] = e
第六空:
getElem(T, 2, e)
第七空:
putElem(T, 2, 56.7)