我是大一的新生,刚学c几个月,学校教的都很浅,但现在直接要求做一个简易学生成绩管理系统的程序,于是我连着好几天敲代码硬着头皮把这程序做了一部分出来。现在就差对成绩高低进行排序的功能了,但确实是不会做了
尝试过网上说的冒泡法,但是我套用不进来这个程序,我想到将数组中的数据按照大小来转移到新的数组,然后将新数组中的元素陈列出来,达到把成绩以排序的方式陈列,但执行后却从0开始到100全部输出了。
能够将学生信息按照成绩排序,并按照格式“学号 姓名 成绩”输出。
代码贴上来,帮你看一下,图片的代码看不全
#include<stdio.h>
int id_number[60];
int i_grade[60];
char i_name[3][20];
void main( )
{
int a;
int i=0;
int id;
int f;
int s;
int t;
printf("------简易学生成绩管理系统----- \n");
printf("请选择您要操作的序号(0-7): \n 1.添加学生信息 \n 2.显示学生信息 \n 3.查询学生信息 \n 4.修改学生信息 \n 5.删除学生信息 \n 6.统计学生信息 \n 7.对学生信息排序 \n 0.退出系统 \n");
scanf("%d",&a);
while(a!=0)
{
if(a==1)
{
input_info(i);
i=i+1;
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==2)
{
output_info();
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==3)
{
printf("请输入您要查询的学号:");
scanf("%d",&id);
search_info(id);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==4)
{
printf("请输入您要修改的学生的学号:");
scanf("%d",&f);
change_info(f);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==5)
{
printf("请输入您要删除的学生信息所对应的学生学号:");
scanf("%d",&s);
delete_info(s);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==6)
{
printf("请输入您要进行统计操作的序号(1-5): \n 1.统计已录入学生个数 \n 2.求所有学生的平均成绩 \n 3.统计成绩达到及格(60分)的学生个数 \n 4.统计成绩达到优秀(90分)的学生个数 \n 5.返回 \n");
scanf("%d",&t);
while(t<5)
{
if(t==1)
{
statistics_info();
break;
}
if(t==2)
{
average_info();
break;
}
if(t==3)
{
pass_info();
break;
}
if(t==4)
{
excellent_info();
break;
}
if(t==5)
{
break;
}
}
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==7)
{
sort_info();
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==0)
{
break;
}
}
}
void input_info(int j) //添加学生信息
{
printf("请输入学生学号(1-60):");
scanf("%d",&id_number[j]);
printf("请输入学生姓名:");
scanf("%s",&i_name[j]);
printf("请输入成绩(0-100):");
scanf("%d",&i_grade[j]);
}
void output_info() //显示全部学生信息
{
printf("学号 姓名 成绩 \n");
for(int m=0;m<60;m++)
{
if(id_number[m]!=0)
{
printf(" %d %s %d \n",id_number[m],i_name[m],i_grade[m]);
}
}
}
void search_info(int search_id) //查询信息
{
for(int n=0;n<60;n++)
{
if(search_id==id_number[n])
{
printf("姓名: %s \n",i_name[n]);
printf("他所对应的成绩为:%d \n",i_grade[n]);
}
}
}
void change_info(int change_id) //更改成绩
{
for(int c=0;c<60;c++)
{
if(change_id==id_number[c])
{
int ch;
printf("请输入要更改的成绩:");
scanf("%d",&ch);
i_grade[c]=ch;
printf("您已将成绩更改为: %d \n",i_grade[c]);
}
}
}
void delete_info(int delete_id) //删除信息
{
for(int d=0;d<60;d++)
{
if(delete_id==id_number[d])
{
printf("您删除的信息为: \n %d %s %d \n",id_number[d],i_name[d],i_grade[d]);
id_number[d]=0;
i_name[d][0] = '\0' ;
i_grade[d]=0;
break;
}
}
}
void statistics_info() //学生总数
{
int tot=0;
int to;
for(to=0;to<60;to++)
{
if(id_number[to]!=0)
{
tot=tot+1;
}
}
printf("已录入的学生数为: %d \n",tot);
}
void average_info() //平均成绩
{
int av=0;
int num;
int numb=0;
for(num=0;num<60;num++)
{
if(id_number[num]!=0)
{
numb=numb+1;
av=av+i_grade[num];
}
}
printf("所有已录入学生平均成绩为: %d \n",av/numb);
}
void pass_info() //及格人数
{
int p;
int pa=0;
for(p=0;p<60;p++)
{
if(i_grade[p]>=60)
{
pa=pa+1;
}
}
printf("及格的学生数为: %d \n",pa);
}
void excellent_info() //优秀人数
{
int e;
int ex=0;
for(e=0;e<60;e++)
{
if(i_grade[e]>=90)
{
ex=ex+1;
}
}
printf("成绩优异的学生数为: %d \n",ex);
}
void sort_info() //按成绩排序
{
int x,y,temp;
for(x=0;x<59;x++)
{
for(y=0;y<59-x;y++)
{
if(i_grade[y]>i_grade[y+1])
{
temp=i_grade[y];
i_grade[y]=i_grade[y+1];
i_grade[y+1]=temp;
}
}
}
for(x=0;x<60;x++)
{
if(i_grade[x]!=0)
{
printf("%d \n",i_grade[x]);
}
}
}
#include<stdio.h>
int id_number[60];
int i_grade[60];
char i_name[3][20];
void input_info(int j) //添加学生信息
{
printf("请输入学生学号(1-60):");
scanf("%d", &id_number[j]);
printf("请输入学生姓名:");
scanf("%s", &i_name[j]);
printf("请输入成绩(0-100):");
scanf("%d", &i_grade[j]);
}
void output_info() //显示全部学生信息
{
printf("学号 姓名 成绩 \n");
for (int m = 0; m < 60; m++)
{
if (id_number[m] != 0)
{
printf(" %d %s %d \n", id_number[m], i_name[m], i_grade[m]);
}
}
}
void search_info(int search_id) //查询信息
{
for (int n = 0; n < 60; n++)
{
if (search_id == id_number[n])
{
printf("姓名: %s \n", i_name[n]);
printf("他所对应的成绩为:%d \n", i_grade[n]);
}
}
}
void change_info(int change_id) //更改成绩
{
for (int c = 0; c < 60; c++)
{
if (change_id == id_number[c])
{
int ch;
printf("请输入要更改的成绩:");
scanf("%d", &ch);
i_grade[c] = ch;
printf("您已将成绩更改为: %d \n", i_grade[c]);
}
}
}
void delete_info(int delete_id) //删除信息
{
for (int d = 0; d < 60; d++)
{
if (delete_id == id_number[d])
{
printf("您删除的信息为: \n %d %s %d \n", id_number[d], i_name[d], i_grade[d]);
id_number[d] = 0;
i_name[d][0] = '\0';
i_grade[d] = 0;
break;
}
}
}
void statistics_info() //学生总数
{
int tot = 0;
int to;
for (to = 0; to < 60; to++)
{
if (id_number[to] != 0)
{
tot = tot + 1;
}
}
printf("已录入的学生数为: %d \n", tot);
}
void average_info() //平均成绩
{
int av = 0;
int num;
int numb = 0;
for (num = 0; num < 60; num++)
{
if (id_number[num] != 0)
{
numb = numb + 1;
av = av + i_grade[num];
}
}
printf("所有已录入学生平均成绩为: %d \n", av / numb);
}
void pass_info() //及格人数
{
int p;
int pa = 0;
for (p = 0; p < 60; p++)
{
if (i_grade[p] >= 60)
{
pa = pa + 1;
}
}
printf("及格的学生数为: %d \n", pa);
}
void excellent_info() //优秀人数
{
int e;
int ex = 0;
for (e = 0; e < 60; e++)
{
if (i_grade[e] >= 90)
{
ex = ex + 1;
}
}
printf("成绩优异的学生数为: %d \n", ex);
}
void sort_info() //按成绩排序
{
int x, y, temp;
for (x = 0; x < 59; x++)
{
for (y = 0; y < 59 - x; y++)
{
if (i_grade[y] > i_grade[y + 1])
{
temp = i_grade[y];
i_grade[y] = i_grade[y + 1];
i_grade[y + 1] = temp;
}
}
}
for (x = 0; x < 60; x++)
{
if (i_grade[x] != 0)
{
printf("%d \n", i_grade[x]);
}
}
}
void main()
{
int a;
int i = 0;
int id;
int f;
int s;
int t;
printf("------简易学生成绩管理系统----- \n");
printf("请选择您要操作的序号(0-7): \n 1.添加学生信息 \n 2.显示学生信息 \n 3.查询学生信息 \n 4.修改学生信息 \n 5.删除学生信息 \n 6.统计学生信息 \n 7.对学生信息排序 \n 0.退出系统 \n");
scanf("%d", &a);
while (a != 0)
{
if (a == 1)
{
input_info(i);
i = i + 1;
printf("请选择您要操作的序号(0-8): \n");
scanf("%d", &a);
}
if (a == 2)
{
output_info();
printf("请选择您要操作的序号(0-8): \n");
scanf("%d", &a);
}
if (a == 3)
{
printf("请输入您要查询的学号:");
scanf("%d", &id);
search_info(id);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d", &a);
}
if (a == 4)
{
printf("请输入您要修改的学生的学号:");
scanf("%d", &f);
change_info(f);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d", &a);
}
if (a == 5)
{
printf("请输入您要删除的学生信息所对应的学生学号:");
scanf("%d", &s);
delete_info(s);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d", &a);
}
if (a == 6)
{
printf("请输入您要进行统计操作的序号(1-5): \n 1.统计已录入学生个数 \n 2.求所有学生的平均成绩 \n 3.统计成绩达到及格(60分)的学生个数 \n 4.统计成绩达到优秀(90分)的学生个数 \n 5.返回 \n");
scanf("%d", &t);
while (t < 5)
{
if (t == 1)
{
statistics_info();
break;
}
if (t == 2)
{
average_info();
break;
}
if (t == 3)
{
pass_info();
break;
}
if (t == 4)
{
excellent_info();
break;
}
if (t == 5)
{
break;
}
}
printf("请选择您要操作的序号(0-8): \n");
scanf("%d", &a);
}
if (a == 7)
{
sort_info();
printf("请选择您要操作的序号(0-8): \n");
scanf("%d", &a);
}
if (a == 0)
{
break;
}
}
}
刚刚才看到
#include<stdio.h>
int id_number[60];
int i_grade[60];
char i_name[3][20];
void input_info(int j) //添加学生信息
{
printf("请输入学生学号(1-60):");
scanf("%d",&id_number[j]);
printf("请输入学生姓名:");
scanf("%s",&i_name[j]);
printf("请输入成绩(0-100):");
scanf("%d",&i_grade[j]);
}
void output_info() //显示全部学生信息
{
printf("学号 姓名 成绩 \n");
for(int m=0; m<60; m++)
{
if(id_number[m]!=0)
{
printf(" %d %s %d \n",id_number[m],i_name[m],i_grade[m]);
}
}
}
void search_info(int search_id) //查询信息
{
for(int n=0; n<60; n++)
{
if(search_id==id_number[n])
{
printf("姓名: %s \n",i_name[n]);
printf("他所对应的成绩为:%d \n",i_grade[n]);
}
}
}
void change_info(int change_id) //更改成绩
{
for(int c=0; c<60; c++)
{
if(change_id==id_number[c])
{
int ch;
printf("请输入要更改的成绩:");
scanf("%d",&ch);
i_grade[c]=ch;
printf("您已将成绩更改为: %d \n",i_grade[c]);
}
}
}
void delete_info(int delete_id) //删除信息
{
for(int d=0; d<60; d++)
{
if(delete_id==id_number[d])
{
printf("您删除的信息为: \n %d %s %d \n",id_number[d],i_name[d],i_grade[d]);
id_number[d]=0;
i_name[d][0] = '\0' ;
i_grade[d]=0;
break;
}
}
}
void statistics_info() //学生总数
{
int tot=0;
int to;
for(to=0; to<60; to++)
{
if(id_number[to]!=0)
{
tot=tot+1;
}
}
printf("已录入的学生数为: %d \n",tot);
}
void average_info() //平均成绩
{
int av=0;
int num;
int numb=0;
for(num=0; num<60; num++)
{
if(id_number[num]!=0)
{
numb=numb+1;
av=av+i_grade[num];
}
}
printf("所有已录入学生平均成绩为: %d \n",av/numb);
}
void pass_info() //及格人数
{
int p;
int pa=0;
for(p=0; p<60; p++)
{
if(i_grade[p]>=60)
{
pa=pa+1;
}
}
printf("及格的学生数为: %d \n",pa);
}
void excellent_info() //优秀人数
{
int e;
int ex=0;
for(e=0; e<60; e++)
{
if(i_grade[e]>=90)
{
ex=ex+1;
}
}
printf("成绩优异的学生数为: %d \n",ex);
}
void sort_info(int t[],int n) //按成绩排序
{
int x,y,temp;
for(x=0; x<n-1; x++)
{
for(y=0; y<n-x-1; y++)
{
if(i_grade[y]>i_grade[y+1])
{
temp=i_grade[y];
i_grade[y]=i_grade[y+1];
i_grade[y+1]=temp;
}
}
}
/**/for(x=0; x<n; x++)
{
if(i_grade[x]!=0)
{
printf("%d ",i_grade[x]);
}
}
printf("\n");
}
int main( )
{
int a;
int i=0;
int id;
int f;
int s;
int t;
printf("------简易学生成绩管理系统----- \n");
printf("请选择您要操作的序号(0-7): \n 1.添加学生信息 \n 2.显示学生信息 \n 3.查询学生信息 \n 4.修改学生信息 \n 5.删除学生信息 \n 6.统计学生信息 \n 7.对学生信息排序 \n 0.退出系统 \n");
scanf("%d",&a);
while(a!=0)
{
if(a==1)
{
input_info(i);
i=i+1;
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==2)
{
output_info();
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==3)
{
printf("请输入您要查询的学号:");
scanf("%d",&id);
search_info(id);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==4)
{
printf("请输入您要修改的学生的学号:");
scanf("%d",&f);
change_info(f);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==5)
{
printf("请输入您要删除的学生信息所对应的学生学号:");
scanf("%d",&s);
delete_info(s);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==6)
{
printf("请输入您要进行统计操作的序号(1-5): \n 1.统计已录入学生个数 \n 2.求所有学生的平均成绩 \n 3.统计成绩达到及格(60分)的学生个数 \n 4.统计成绩达到优秀(90分)的学生个数 \n 5.返回 \n");
scanf("%d",&t);
while(t<5)
{
if(t==1)
{
statistics_info();
break;
}
if(t==2)
{
average_info();
break;
}
if(t==3)
{
pass_info();
break;
}
if(t==4)
{
excellent_info();
break;
}
if(t==5)
{
break;
}
}
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==7)
{
sort_info(i_grade,60);
printf("请选择您要操作的序号(0-8): \n");
scanf("%d",&a);
}
if(a==0)
{
break;
}
}
return 0;
}