ADD file via upload

main
p8btn9vm4 1 week ago
parent 593dbf5dad
commit b67593715f

@ -0,0 +1,144 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char id[10];
char class[10];
char name[20];
double score1;
double score2;
double score3;
double score;
} Student;
Student students[MAX_STUDENTS];
int studentCount = 0;
void inputStudent() {
while (1) {
Student newStudent;
char option[10];
printf("Id ");
scanf("%s", newStudent.id);
printf("class ");
scanf("%s", newStudent.class);
printf("name ");
scanf("%s", newStudent.name);
printf("score1 ");
scanf("%lf", &newStudent.score1);
printf("score2 ");
scanf("%lf", &newStudent.score2);
printf("score3 ");
scanf("%lf", &newStudent.score3);
newStudent.score = (newStudent.score1 + newStudent.score2 + newStudent.score3);
students[studentCount++] = newStudent;
printf("continue?\n");
scanf("%s", &option);
if (strcmp(option, "no") == 0) {
break;
}
}
}
void outputStudents() {
for (int i = 0; i < studentCount; i++) {
printf("%s, %s, %s, %.1f, %.1f, %.1f, %.1f\n",
students[i].id, students[i].class, students[i].name,
students[i].score1, students[i].score2, students[i].score3,
students[i].score);
}
}
void deleteStudent() {
while (studentCount > 1) {
char id[10];
scanf("%s", id);
char option[10];
for (int i = 0; i < studentCount; i++) {
if (strcmp(students[i].id, id) == 0 || strcmp(students[i].name, id) == 0) {
for (int j = i; j < studentCount - 1; j++) {
students[j] = students[j + 1];
}
studentCount--;
}
}
outputStudents();
printf("continue?\n");
scanf("%s", &option);
if (strcmp(option, "no") == 0) {
break;
}
}
}
void selectStudent() {
while (1) {
char id[10];
scanf("%s", id);
int flag = 0;
char option[10];
for (int i = 0; i < studentCount; i++) {
if (strcmp(students[i].id, id) == 0 || strcmp(students[i].class, id) == 0) {
printf("%s, %s, %s, %.1f, %.1f, %.1f, %.1f\n",
students[i].id, students[i].class, students[i].name,
students[i].score1, students[i].score2, students[i].score3,
students[i].score);
flag = 1;
}
}
if (flag == 0) {
printf("there is no eligible student\n");
}
printf("continue?\n");
scanf("%s", &option);
if (strcmp(option, "no") == 0) {
break;
}
}
}
int compare(const void* a, const void* b) {
Student* studentA = (Student*)a;
Student* studentB = (Student*)b;
if (strcmp(studentA->class, studentB->class) == 0) {
return (studentB->score - studentA->score > 0) ? 1 : -1;
}
return strcmp(studentA->class, studentB->class);
}
void orderStudents() {
qsort(students, studentCount, sizeof(Student), compare);
outputStudents();
}
int main() {
int option;
do {
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");
scanf("%d", &option);
switch (option) {
case 1: inputStudent(); break;
case 2: deleteStudent(); break;
case 3: selectStudent(); break;
case 4: orderStudents(); break;
case 5: outputStudents(); break;
case 6: break;
}
} while (option != 6);
return 0;
}
Loading…
Cancel
Save