Compare commits

..

5 Commits
main ... 5

@ -0,0 +1,46 @@
#include <stdio.h>
// 函数声明
void displayMenu();
int main() {
char input; // 用于存储用户输入的字符
while (1) {
displayMenu(); // 显示菜单
printf("Please enter your choice: ");
scanf(" %c", &input); // 读取用户输入
switch (input) {
case 'i':
printf("You are trying to Input info\n");
break;
case 'o':
printf("You are trying to Output info\n");
break;
case 'm':
printf("You are trying to Make things ordered\n");
break;
case 'q':
printf("You are about to Quit\n");
return 0; // 退出程序
default:
printf("Wrong input\n");
break;
}
}
return 0;
}
// 菜单显示函数
void displayMenu() {
printf("\n");
printf(" 1.Input\n");
printf(" 2.Output\n");
printf(" 3.Order\n");
printf(" 4.Quit\n");
printf("\n");
}

@ -0,0 +1,110 @@
#include <stdio.h>
#define MAX_STUDENTS 3 // 定义学生数量
typedef struct {
int id; // 学号
double math; // 高数成绩
double physics; // 大学物理成绩
double english; // 英语成绩
double total; // 总成绩
} Student;
// 函数声明
void displayMenu();
void inputStudents(Student students[]);
void displayStudents(const Student students[]);
int main() {
char input; // 用户选择的菜单选项
Student students[MAX_STUDENTS]; // 存储学生信息
int isInputDone = 0; // 标志是否完成录入
while (1) {
displayMenu(); // 显示菜单
printf("Please enter your choice: ");
scanf(" %c", &input); // 读取用户输入
switch (input) {
case 'i':
printf("You are trying to Input info\n");
inputStudents(students);
isInputDone = 1; // 标记为已完成录入
break;
case 'o':
if (isInputDone) {
printf("You are trying to Output info\n");
displayStudents(students);
} else {
printf("No information available. Please input info first.\n");
}
break;
case 'm':
printf("You are trying to Make things ordered\n");
break;
case 'q':
printf("You are about to Quit\n");
return 0; // 退出程序
default:
printf("Wrong input\n");
break;
}
}
return 0;
}
// 显示菜单函数
void displayMenu() {
printf("\n");
printf(" 1.Input\n");
printf(" 2.Output\n");
printf(" 3.Order\n");
printf(" 4.Quit\n");
printf("\n");
}
// 录入学生信息
void inputStudents(Student students[]) {
int i; // 循环变量移到外部声明
for (i = 0; i < MAX_STUDENTS; i++) {
printf("Enter information for student %d:\n", i + 1);
// 输入学号5位自然数
do {
printf("ID (5-digit number): ");
scanf("%d", &students[i].id);
if (students[i].id < 10000 || students[i].id > 99999) {
printf("Invalid ID. Please enter a 5-digit number.\n");
}
} while (students[i].id < 10000 || students[i].id > 99999);
// 输入成绩
printf("Math score (e.g., 85.0): ");
scanf("%lf", &students[i].math);
printf("Physics score (e.g., 99.0): ");
scanf("%lf", &students[i].physics);
printf("English score (e.g., 77.5): ");
scanf("%lf", &students[i].english);
// 计算总成绩
students[i].total = students[i].math + students[i].physics + students[i].english;
}
printf("Input completed.\n");
}
// 显示学生信息
void displayStudents(const Student students[]) {
int i; // 循环变量移到外部声明
printf(" ID Math Physics English Total\n");
for (i = 0; i < MAX_STUDENTS; i++) {
printf("%05d %.1f %.1f %.1f %.1f\n",
students[i].id,
students[i].math,
students[i].physics,
students[i].english,
students[i].total);
}
}

@ -0,0 +1,132 @@
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 3 // 定义学生数量
typedef struct {
int id; // 学号
double math; // 高数成绩
double physics; // 大学物理成绩
double english; // 英语成绩
double total; // 总成绩
double average; // 平均成绩
} Student;
// 函数声明
void displayMenu();
void inputStudents(Student students[]);
void displayStudents(const Student students[]);
void sortStudentsByTotal(Student students[]);
int main() {
char input; // 用户选择的菜单选项
Student students[MAX_STUDENTS]; // 存储学生信息
int isInputDone = 0; // 标志是否完成录入
while (1) {
displayMenu(); // 显示菜单
printf("Please enter your choice: ");
scanf(" %c", &input); // 读取用户输入
switch (input) {
case 'i':
printf("You are trying to Input info\n");
inputStudents(students);
isInputDone = 1; // 标记为已完成录入
break;
case 'o':
if (isInputDone) {
printf("You are trying to Output info\n");
sortStudentsByTotal(students);
displayStudents(students);
} else {
printf("No information available. Please input info first.\n");
}
break;
case 'm':
if (isInputDone) {
printf("You are trying to Make things ordered\n");
sortStudentsByTotal(students);
displayStudents(students);
} else {
printf("No information available to sort. Please input info first.\n");
}
break;
case 'q':
printf("You are about to Quit\n");
return 0; // 退出程序
default:
printf("Wrong input\n");
break;
}
}
return 0;
}
// 菜单显示函数
void displayMenu() {
printf("\n");
printf(" 1.Input\n");
printf(" 2.Output\n");
printf(" 3.Order\n");
printf(" 4.Quit\n");
printf("\n");
}
// 录入学生信息
void inputStudents(Student students[]) {
int i; // 循环变量移到外部声明
for (i = 0; i < MAX_STUDENTS; i++) {
printf("Enter information for student %d:\n", i + 1);
// 输入学号5位自然数
do {
printf("ID (5-digit number): ");
scanf("%d", &students[i].id);
if (students[i].id < 10000 || students[i].id > 99999) {
printf("Invalid ID. Please enter a 5-digit number.\n");
}
} while (students[i].id < 10000 || students[i].id > 99999);
// 输入成绩
printf("Math score (e.g., 85.0): ");
scanf("%lf", &students[i].math);
printf("Physics score (e.g., 99.0): ");
scanf("%lf", &students[i].physics);
printf("English score (e.g., 77.5): ");
scanf("%lf", &students[i].english);
// 计算总成绩和平均成绩
students[i].total = students[i].math + students[i].physics + students[i].english;
students[i].average = students[i].total / 3.0;
}
printf("Input completed.\n");
}
// 显示学生信息
void displayStudents(const Student students[]) {
int i; // 循环变量移到外部声明
printf(" ID Total Average\n");
for (i = 0; i < MAX_STUDENTS; i++) {
printf("%-8d%-9.1f%-8.1f\n",
students[i].id,
students[i].total,
students[i].average);
}
}
// 按总成绩排序学生信息
void sortStudentsByTotal(Student students[]) {
int i, j;
for (i = 0; i < MAX_STUDENTS - 1; i++) {
for (j = 0; j < MAX_STUDENTS - i - 1; j++) {
if (students[j].total > students[j + 1].total) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}

@ -0,0 +1,117 @@
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 4 // 最多 4 个学生(原有 3 个 + 新插入 1 个)
typedef struct {
int id; // 学号
int clas; // 班级
double math; // 高数成绩
double physics; // 大学物理成绩
double english; // 英语成绩
double total; // 总成绩
} Student;
// 函数声明
void displayStudents(const Student students[], int studentCount);
void sortStudents(Student students[], int studentCount);
void insertStudent(Student students[], int *studentCount);
int main() {
// 初始化已有的三个学生信息
Student students[MAX_STUDENTS] = {
{10001, 11, 85.0, 88.0, 92.0, 85.0 + 88.0 + 92.0},
{10002, 12, 75.0, 65.0, 70.0, 75.0 + 65.0 + 70.0},
{10003, 11, 95.0, 98.0, 90.0, 95.0 + 98.0 + 90.0}
};
int studentCount = 3; // 初始已有 3 个学生
printf("Original student information:\n");
displayStudents(students, studentCount);
// 插入一个新学生信息
insertStudent(students, &studentCount);
printf("\nStudent information after insertion:\n");
displayStudents(students, studentCount);
return 0;
}
// 显示学生信息
void displayStudents(const Student students[], int studentCount) {
int i; // 循环变量声明移到外部
printf(" ID Class Math Physics English Total\n");
for (i = 0; i < studentCount; i++) {
printf("%05d %-7d%-8.1f%-8.1f%-8.1f%-8.1f\n",
students[i].id,
students[i].clas,
students[i].math,
students[i].physics,
students[i].english,
students[i].total);
}
}
// 按班级和总成绩排序学生信息
void sortStudents(Student students[], int studentCount) {
int i, j; // 循环变量声明移到外部
for (i = 0; i < studentCount - 1; i++) {
for (j = 0; j < studentCount - i - 1; j++) {
if (students[j].clas > students[j + 1].clas ||
(students[j].clas == students[j + 1].clas && students[j].total < students[j + 1].total)) {
// 交换学生信息
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
// 插入学生信息
void insertStudent(Student students[], int *studentCount) {
if (*studentCount >= MAX_STUDENTS) {
printf("Student list is full. Cannot insert more students.\n");
return;
}
Student newStudent;
int i; // 循环变量声明移到外部
printf("\nEnter information for the new student:\n");
// 输入学号
printf("ID: ");
scanf("%d", &newStudent.id);
// 检查学号是否重复
for (i = 0; i < *studentCount; i++) {
if (students[i].id == newStudent.id) {
printf("Student with ID %d already exists. Insertion failed.\n", newStudent.id);
return;
}
}
// 输入班级和成绩
printf("Class: ");
scanf("%d", &newStudent.clas);
printf("Math score: ");
scanf("%lf", &newStudent.math);
printf("Physics score: ");
scanf("%lf", &newStudent.physics);
printf("English score: ");
scanf("%lf", &newStudent.english);
// 计算总成绩
newStudent.total = newStudent.math + newStudent.physics + newStudent.english;
// 插入新学生
students[*studentCount] = newStudent;
(*studentCount)++;
// 重新排序
sortStudents(students, *studentCount);
printf("New student inserted successfully.\n");
}

@ -0,0 +1,91 @@
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 3 // 最多 3 个学生(初始已知)
typedef struct {
int id; // 学号
int clas; // 班级
double math; // 高数成绩
double physics; // 大学物理成绩
double english; // 英语成绩
double total; // 总成绩
} Student;
// 函数声明
void displayStudents(const Student students[], int studentCount);
void deleteStudent(Student students[], int *studentCount);
int main() {
// 初始化已知的三个学生信息
Student students[MAX_STUDENTS] = {
{10001, 11, 99.5, 88.5, 89.5, 99.5 + 88.5 + 89.5},
{10003, 11, 92.5, 99.0, 60.5, 92.5 + 99.0 + 60.5},
{10002, 12, 77.9, 56.5, 87.5, 77.9 + 56.5 + 87.5}
};
int studentCount = 3; // 当前学生数量
printf("Original student information:\n");
displayStudents(students, studentCount);
// 删除一个学生信息
deleteStudent(students, &studentCount);
printf("\nStudent information after deletion:\n");
displayStudents(students, studentCount);
return 0;
}
// 显示学生信息
void displayStudents(const Student students[], int studentCount) {
int i; // 循环变量声明移到外部
if (studentCount == 0) {
printf("No student information available.\n");
return;
}
printf(" ID Class Math Physics English Total\n");
for (i = 0; i < studentCount; i++) {
printf("%05d %-7d%-8.1f%-8.1f%-8.1f%-8.1f\n",
students[i].id,
students[i].clas,
students[i].math,
students[i].physics,
students[i].english,
students[i].total);
}
}
// 删除学生信息
void deleteStudent(Student students[], int *studentCount) {
int deleteId, i, j;
int found = 0; // 标志是否找到学生信息
if (*studentCount == 0) {
printf("No student information to delete.\n");
return;
}
printf("\nEnter the ID of the student to delete: ");
scanf("%d", &deleteId);
// 查找学生信息
for (i = 0; i < *studentCount; i++) {
if (students[i].id == deleteId) {
found = 1;
// 删除学生,将后续元素前移
for (j = i; j < *studentCount - 1; j++) {
students[j] = students[j + 1];
}
(*studentCount)--; // 学生数量减少
printf("Student with ID %d has been deleted successfully.\n", deleteId);
break;
}
}
if (!found) {
printf("Student with ID %d does not exist.\n", deleteId);
}
}
Loading…
Cancel
Save