【例10-16】成绩系统。设计一个简单的成绩系统,根据菜单显示可进行“输入原始信息”、“追加学生信息”、“输出学生信息”这三个功能。已知学生信息包含:学号、姓名、一门课的成绩。 分析:先设计一个menu函数,用数字1,2,3对应题目要求的三个功能,然后根据用户的选择执行不同的功能。 程序请见备注。
参考一下,把多个课程改成一个课程
#include<stdio.h>
#include<stdlib.h>
int n=5;
int no;
struct stu
{
char name[20];
int num;
int chinese;
int math;
int english;
int computer;
float average;
}student[5];
//1.输入信息
void student_scanf(int n)
{
for(int i=0;i<n;i++)
{ printf("请输入第%d个学生的信息:\n",i+1);
printf("学号 姓名 语文成绩 数学成绩 英语成绩 计算机成绩\n");
scanf("%d%s%d%d%d%d",&student[i].num,&student[i].name,&student[i].chinese,&student[i].math,&student[i].english,&student[i].computer);
student[i].average=(student[i].chinese+student[i].math+student[i].english+student[i].computer)/4.0;
}
}
void student_printf(int n)
{
printf("学号 姓名 语文成绩 数学成绩 英语成绩 计算机成绩 平均成绩\n");
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\t%f\n",student[i].num,student[i].name,student[i].chinese,student[i].math,student[i].english,student[i].computer,student[i].average);
}
}
void student_seek(int no)
{
int j=0;
for(int i=0;i<n;i++)
{
if (no==student[i].num)
{
j=1;
printf("学号:%d 姓名:%s 语文:%d 数学:%d 英语:%d计算机:%d 平均成绩;%f\n",student[i].num,
student[i].name,student[i].chinese,student[i].math,student[i].english,student[i].computer,student[i].average);
break;
}
}
if(j==0) printf("查询的学号不存在!\n");
}
void student_alter(int no)
{
for(int i=0;i<n;i++)
{
if (no==student[i].num)
{
printf("姓名:");
scanf("%s",&student[i].name);
printf("语文成绩:");
scanf("%d",&student[i].chinese);
printf("数学成绩:");
scanf("%d",&student[i].math);
printf("英语成绩:");
scanf("%d",&student[i].english);
printf("计算机成绩:");
scanf("%d",&student[i].computer);
student[i].average=(student[i].chinese+student[i].math+student[i].english+student[i].computer)/4.0;
printf("修改后的信息为:");
printf("%d\t%s\t%d\t%d\t%d\t%d\t%f\n",student[i].num,student[i].name,student[i].chinese,
student[i].math,student[i].english,student[i].computer,student[i].average);
}
}
}
void student_sort_chinese()
{
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (student[j].chinese < student[j + 1].chinese)
{
stu temp = student[j];
student[j] = student[j + 1];
student[j + 1] = temp;
}
}
}
}
void Statistics()
{
printf("学号\t姓名\t平均成绩\n");
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%f\n",student[i].num,student[i].name,student[i].average);
}
}
int main(){
student_scanf(n);
student_printf(n);
printf("请输入要查询的学生的学号:");
scanf("%d",&no);
student_seek(no);
printf("请输入修改信息的学生的学号");
scanf("%d",&no);
student_alter(no);
printf("按语文成绩从大到小排序:\n");
student_sort_chinese() ;
student_printf(n);
printf("统计信息为:\n");
Statistics();
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m