题目是:
用 C语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩.从键盘输入学员信息,包括学号 姓名 三门课的成绩
计算出学员的平均成绩,按学院平均成绩由大到小排序 另外需要增加下面的管理功能
1.插入功能,在排序后学员成绩表中插入一个学员的信息,要求、插入后仍然保持成绩表有排序,
2.删除功能.要求输入指定的学号.从学员信息表中删除该学员,删除后仍然保持成绩表有排序,
需要用到的知识点
1 数组
2 带参数的函数
3 字符串
4 结构
我做的是这样的~
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char name[20];
int cj1,cj2,cj3;
int pingjun;
}stu[50],temp;
int n=0;//学员个数
///////////////////////函数声明
void tianjia();
void shanchu();
void charu();
void chakan();
/////////////////////////////////
void main()
{
int i;
char c;
do
{
printf("学员信息管理系统v1.0\n");
printf(" 1.添加\n");
printf(" 2.插入\n");
printf(" 3.删除\n");
printf(" 4.查看\n");
printf(" 5.退出\n");
printf("请选择:\n");
scanf("%d",&i);
switch (i)
{
case 1: tianjia();break;
case 2: charu();break;
case 3: shanchu();break;
case 4: chakan();break;
default :exit(0);
}
printf("继续吗?Y.N\n");
fflush(stdin);
c=getchar();
}while(c=='y'||c=='Y');
}
void tianjia()//录入。
{
char a;
printf("请输入学号:");
scanf("%d",&stu[n].num);
fflush(stdin);
printf("请输入姓名:");
gets(stu[n].name);
printf("输入成绩1:");
scanf("%d",&stu[n].cj1);
printf("输入成绩2:");
scanf("%d",&stu[n].cj2);
printf("输入成绩3:");
scanf("%d",&stu[n].cj3);
stu[n].pingjun=(stu[n].cj1+stu[n].cj2+stu[n].cj3)/3;
n++;
// printf("%d",n);
}
void shanchu()//删除
{
int i,j,j1;
printf("请输入需要删除的学号:");
scanf("%d",&i);
for (j=0;j<n;j++)
{
if ((i)==stu[j].num)
j1=j;
}
/* printf("%d",j1);*/
for (j=j1;j<n;j++)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
n--;
chakan();
}
void charu()//插入
{
tianjia();
}
void chakan()//查看,按平均值排序(大到小)
{
int j,j1;
for (j=0;j<n;j++)
{
for (j1=j+1;j1<n;j1++)
{
if (stu[j].pingjun<stu[j1].pingjun)
{
temp=stu[j];
stu[j]=stu[j1];
stu[j1]=temp;
}
}
}
for (j=0;j<n;j++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[j].num,stu[j].name,stu[j].cj1,
stu[j].cj2,stu[j].cj3,stu[j].pingjun);
}
}
大家看看怎么能用这样的起头写完这个程序~!这个也写了一半了哦
#include <stdio.h>
#define N 3
#define M 50
struct student
{
int num;
char name[20];
float score[N],avr;
}s1[M];
struct student input();
void main()
{
int i=0;
char ch='y';
while(ch=='y'||ch=='Y')
{
stu[i] = input();
i++;
printf("是否继续输入:(y or n)");
fflush(stdin);
ch = getchar();
}
}
struct student input()
{
struct student s1;
printf("请输入学员信息:");
printf("学号:");
scanf("%d",&s1.num);
fflush(stdin);
printf("姓名:");
gets(s1.name);
printf("成绩:\n");
for(int i=0;i<N;i++)
{
printf("第%d门成绩:",i+1);
scanf("%f",&s1.score[i]);
}
s1.avr = (s1.score[0]+s1.score[1]+s1.score[2])/3;
return s1;
}
也就是说 第一种 成绩是没用数组 第二种是成绩是用数组的 但是第二种后面不会写了 大家帮帮忙 谢谢 了