学习笔记

作业

#include <stdio.h>
#include <string.h>
struct Student
{
int ID; // 学号
char name[10]; // 姓名
char gender[5]; // 性别
int score; // 成绩
};
#define MAX 100
void menu();
void input();
void output();
void maxandmin();
void sumandaverage();
void sort();
void search();
int main(int argc, char const *argv[])
{
while (1)
{
int key = 0;
int x;
struct Student student[MAX];
menu();
printf("请输入你要进行的操作:");
scanf("%d", &key);
printf("\n");
switch (key)
{
case 1:
{
input(&x, student);
break;
}
case 2:
{
output(&x, student);
break;
}
case 3:
{
maxandmin(&x, student);
break;
}
case 4:
{
sumandaverage(&x, student);
break;
}
case 5:
{
sort(&x, student);
break;
}
case 6:
{
search(&x, student);
break;
}
case 0:
return 0;
}
}
return 0;
}
// 菜单
void menu()
{
printf("\t\t==>1.录入学生成绩\n");
printf("\t\t==>2.查看学生成绩\n");
printf("\t\t==>3.输出最高和最低成绩\n");
printf("\t\t==>4.输出总成绩和平均成绩\n");
printf("\t\t==>5.对学生成绩进行排序\n");
printf("\t\t==>6.查找学生名字\n");
printf("\t\t==>0.退出\n");
};
// 录入学生成绩
void input(int *x, struct Student *student)
{
printf("请输入要录入的学生的个数:");
scanf("%d", x);
printf("\n");
for (int i = 0; i < *x; i++)
{
printf("请输入第%d个学生的学号:", i + 1);
scanf("%d", &(student + i)->ID);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", (student + i)->name);
printf("请输入第%d个学生的性别:", i + 1);
scanf("%s", (student + i)->gender);
printf("请输入第%d个学生的成绩:", i + 1);
scanf("%d", &(student + i)->score);
}
printf("\n");
};
// 输出学生成绩
void output(int *x, struct Student *student)
{
for (int i = 0; i < *x; i++)
{
printf("第%d个学生的学号:%d 姓名:%s 性别:%s 成绩:%d\n",
i + 1, (student + i)->ID, (student + i)->name,
(student + i)->gender, (student + i)->score);
}
printf("\n");
};
// 输出最高最低成员的成绩
void maxandmin(int *x, struct Student *student)
{
int max = 0, min = 1000;
struct Student maxstudent, minstudent;
for (int i = 0; i < *x; i++)
{
if ((student + i)->score > max)
{
max = (student + i)->score;
maxstudent = *(student + i);
}
if ((student + i)->score < min)
{
min = (student + i)->score;
minstudent = *(student + i);
}
}
printf("最高成绩学生学号:%d 姓名:%s 性别:%s 成绩:%d\n", maxstudent.ID, maxstudent.name, maxstudent.gender, maxstudent.score);
printf("最低成绩学生学号:%d 姓名:%s 性别:%s 成绩:%d\n", minstudent.ID, minstudent.name, minstudent.gender, minstudent.score);
printf("\n");
};
// 输出总成绩和平均成绩
void sumandaverage(int *x, struct Student *student)
{
int sum = 0, average = 0;
for (int i = 0; i < *x; i++)
{
sum = sum + (student + i)->score;
}
average = sum / (*x);
printf("总成绩:%d,平均成绩:%d\n", sum, average);
printf("\n");
};
// 对学生成绩进行排序
void sort(int *x, struct Student *student)
{
int key1;
printf("升序请输入 1 降序请输入 2:");
scanf("%d", &key1);
for (int i = 0; i < *x; i++)
{
for (int j = 0; j < *x - i - 1; j++)
{
if (key1 == 1)
{ // 升序
if ((student + j)->score > (student + j + 1)->score)
{
struct Student temp = *(student + j);
*(student + j) = *(student + j + 1);
*(student + j + 1) = temp;
}
}
else if (key1 == 2)
{ // 降序
if ((student + j)->score < (student + j + 1)->score)
{
struct Student temp = *(student + j);
*(student + j) = *(student + j + 1);
*(student + j + 1) = temp;
}
}
}
}
for (int i = 0; i < *x; i++)
{
printf("第%d个学生的学号:%d 姓名:%s 性别:%s 成绩:%d\n",
i + 1, (student + i)->ID, (student + i)->name,
(student + i)->gender, (student + i)->score);
}
printf("\n");
}
// 查找学生名字
void search(int *x, struct Student *student)
{
char name1[10];
printf("请输入要查找的学生的名字:");
scanf("%s", name1);
for (int i = 0; i < *x; i++)
{
int result = strcmp(name1, (student + i)->name);
if (result == 0)
{
printf("这个学生存在\n");
}
}
printf("\n");
};