#include #include void Menu() { printf("1.input\n"); printf("2.delete\n"); printf("3.select\n"); printf("4.order\n"); printf("5.output\n"); printf("6.quit\n"); printf("please input your option\n"); } struct Info { char num[6], name[7]; int cls; float math, phy, eng, sum; }arr[4], ins, mod; void Input(int i) { void Option(); printf("id "); scanf("%s", arr[i].num); printf("class "); scanf("%d", &arr[i].cls); printf("name "); scanf("%s", arr[i].name); printf("score1 "); scanf("%f", &arr[i].math); printf("score2 "); scanf("%f", &arr[i].phy); printf("score3 "); scanf("%f", &arr[i].eng); arr[i].sum = arr[i].math + arr[i].phy + arr[i].eng; printf("continue?\n"); char yon[4]; scanf("%s", yon); if (strcmp(yon, "yes") == 0) Input(i + 1); else Option(); } void Output(int i) { printf("%s ", arr[i].num); printf("%d ", arr[i].cls); printf("%s ", arr[i].name); printf("%.1f %.1f %.1f ", arr[i].math, arr[i].phy, arr[i].eng); printf("%.1f", arr[i].sum); printf("\n"); } void Rank(int s) { for (int i = 0; i < s; i++) for (int j = s - 1; j > i; j--) { if (arr[j].cls < arr[j - 1].cls) { struct Info temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } } for (int i = 0; i < s; i++) for (int j = s - 1; j > 0; j--) { if (arr[j].cls == arr[j - 1].cls && arr[j].sum > arr[j - 1].sum) { struct Info temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } } } void Del(int* p) { void Option(); char str[7]; scanf("%s", str); for (int i = 0; i < *p; i++) { if (strcmp(str, arr[i].num) == 0 || strcmp(str, arr[i].name) == 0) { for (int j = i + 1; j < *p; j++) arr[j - 1] = arr[j]; (*p)--; } } for (int j = 0; j < *p; j++) Output(j); printf("continue?\n"); char yon[4]; scanf("%s", yon); if (strcmp(yon, "yes") == 0) Del(p); else Option(); } void Find(int s) { void Option(); char n[6]; scanf("%s", n); int l = strlen(n); if (l > 2) { for (int i = 0; i < s; i++) if (strcmp(arr[i].num, n) == 0) Output(i); } else { int c = 10 * (n[0] - '0') + n[1] - '0'; for (int i = 0; i < s; i++) if (arr[i].cls == c) Output(i); } char yon[4]; scanf("%s", yon); if (strcmp(yon, "yes") == 0) Find(s); else Option(); } void Option() { Menu(); int c; scanf("%d", &c); int s = 3; int* p = &s; switch (c) { case 1:Input(0); break; case 2:Del(p); break; case 3:Find(s); break; case 4: { Rank(s); for (int i = 0; i < s; i++) Output(i); Option(); break; } case 5: { for (int i = 0; i < s; i++) Output(i); Option(); break; } case 6:break; } } int main() { Option(); }