#include<stdio.h>#include<stdlib.h>//定義常量 方便操作//可能也沒(méi)多方便 #define Status int#define Time 1000 /**定義一系列三元組的操作 C語(yǔ)言中的函數(shù) *///初始化 Status* InitTriplet(Status* T, Status v1, Status v2, Status v3);//銷(xiāo)毀三元組 Status* DestroyTriplet(Status *T);//返回第i個(gè)位置的的元素 void Get(Status* T, Status i);//改變第i個(gè)位置的元素的值 Status* Put(Status* T, Status i, Status e);//判斷是否升序排列 void isAscending(Status* T);//判斷是否降序排列 void isDescending(Status* T);//返回最大值 void Max(Status* T);//返回最小值 void Min(Status* T); /**UI 邏輯 函數(shù) */ void Show();Status* Logic(Status* T, char key);void isTrue(Status* T);//打印三元組 void PRintTriplet(Status *T);int main(){ char key; Status* T = NULL; while(1){ Show(); scanf(" %c", &key); T = Logic(T, key); } } void isTrue(Status* T){ if(NULL == T){ printf("/n抱歉 未分配內(nèi)存/n"); exit(0); }}void Show(){ system("cls"); printf("*****************************************************/n"); printf("/n "); printf("/n"); printf("/n 1.初始化三元組"); printf("/n 2.銷(xiāo)毀三元組"); printf("/n 3.獲取第i個(gè)位置的元素值"); printf("/n 4.改變第i個(gè)位置的元素值"); printf("/n 5.判斷三元組是否為升序排列"); printf("/n 6.判斷三元組是否為降序排列"); printf("/n 7.返回三元組中最大值"); printf("/n 8.返回三元組中最小值"); printf("/n 9.打印三元組"); printf("/n"); printf(" ###########################/n"); printf("/n 請(qǐng)問(wèn)您需要執(zhí)行什么操作?"); printf("/n 請(qǐng)輸入相應(yīng)數(shù)字并按回車(chē)執(zhí)行"); printf(" /n"); printf("*****************************************************/n");}void PrintTriplet(Status *T){ isTrue(T); printf("第一個(gè)元素為 :%d/n", *T); printf("第二個(gè)元素為 :%d/n", *(T+1)); printf("第三個(gè)元素為 :%d/n", *(T+2)); }Status* InitTriplet(Status* T, Status v1, Status v2, Status v3){ T = (Status*)malloc(3*sizeof(Status)); T[0] = v1; T[1] = v2; T[2] = v3; return T;}Status* DestroyTriplet(Status *T){ isTrue(T); if(NULL != T){ free(T); T = NULL; } return T;}void Get(Status* T, Status i){ isTrue(T); printf("第%d個(gè)元素是%d/n", i, T[i - 1]); }Status* Put(Status* T, Status i, Status e){ isTrue(T); *(T + i - 1) = e; printf("您改變第%d個(gè)位置的元素為%d/n", i, e); return T;}void isAscending(Status* T){ isTrue(T); if(T[0] > T[1] && T[1] > T[2]){ printf("/n該三元組是升序排列/n"); }else{ printf("/n該三元組不是升序排列/n"); } }void isDescending(Status* T){ isTrue(T); if(T[0] < T[1] && T[1] < T[2]){ printf("/n該三元組是降序排列/n"); }else{ printf("/n該三元組是升序排列/n"); } }void Max(Status* T){ isTrue(T); int i; i = T[0] > T[1]?T[0] : T[1]; i = i > T[2]?i : T[2]; printf("/n三元組中最大值是%d/n", i);}void Min(Status* T){ isTrue(T); int i; i = T[0] < T[1]?T[0] : T[1]; i = i < T[2]?i : T[2]; printf("/n三元組中最小值是%d/n", i);}Status* Logic(Status* T, char key){ switch(key){ case '1': system("cls"); printf("/n請(qǐng)輸入您想初始化三元組的值"); printf("/n輸入三個(gè)int數(shù)據(jù) 以空格分開(kāi)/n"); int i, j, k; scanf("%d %d %d", &i, &j, &k); T = InitTriplet(T, i, j, k); system("cls"); printf("/n初始化完成"); printf("/n您初始化的數(shù)據(jù)為 %d %d %d/n", i, j, k); _sleep(Time); break; case '2': system("cls"); T = DestroyTriplet(T); printf("/n三元組已銷(xiāo)毀..."); _sleep(Time); break; case '3': system("cls"); printf("/n您想獲得第幾個(gè)位置的元素?/n"); printf("請(qǐng)輸入/n"); int m; scanf("%d", &m); Get(T, m); _sleep(Time); break; case '4': system("cls"); printf("您想改變第幾個(gè)位置的元素?/n"); scanf("%d", &i); printf("改變?yōu)槎嗌伲?n"); scanf("%d", &m); Put(T, i, m); system("cls"); printf("您已經(jīng)改變第%d個(gè)元素為%d", i, m); _sleep(Time); break; case '5': system("cls"); isAscending(T); _sleep(Time); break; case '6': system("cls"); isDescending(T); _sleep(Time); break; case '7': system("cls"); Max(T); _sleep(Time); break; case '8': system("cls"); Min(T); _sleep(Time); break; case '9': system("cls"); PrintTriplet(T); _sleep(Time); break; } return T;}
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注