现有一个储存学生学生怎么查询考试成绩成绩的文件stu.txt,用C程序读入文件,并按照从高到低的顺序输出名字,成绩。

题目:1.利用文本编辑软件在磁盘上建立一个有n个学生的学号、姓名及英语、数学和计算机三门课程成绩的数据文件。
    2.编写程序将数据文件读入,且求出每个学生的平均成绩。
  文本编辑软件就是记事本等等,我用的是notepad++,在此推荐大家可以装一个notepad++写代码是真的方便快捷。
  建立如下数据文件,文件名students.dat
  *此处也可以建立成txt后缀的文件
下面是C语言代码
1 #include&stdio.h&
2 #include&stdlib.h&
3 #define N 5
4 struct student{
char name[<span style="color: #];
<span style="color: # }stu[N];
<span style="color: # int main(){
<span style="color: #
<span style="color: #
<span style="color: #
float ave=<span style="color: #;
<span style="color: #
if((fp=fopen("C:\\Users\\root\\Desktop\\students.dat","r"))==NULL)
<span style="color: #
<span style="color: #
printf("Open file error!");
<span style="color: #
exit(<span style="color: #);
<span style="color: #
<span style="color: #
for(i=<span style="color: #;i&N;i++)
<span style="color: #
fscanf(fp,"%d",&stu[i].num);
<span style="color: #
fscanf(fp,"%s",&stu[i].name);
<span style="color: #
fscanf(fp,"%f",&stu[i].eng);
<span style="color: #
fscanf(fp,"%f",&stu[i].mat);
<span style="color: #
fscanf(fp,"%f",&stu[i].com);
<span style="color: #
//fread(&stu[i],sizeof(struct student),1,fp);
<span style="color: #
ave = (stu[i].eng + stu[i].mat + stu[i].com)/<span style="color: #;
<span style="color: #
printf("学号\t姓名\t平均成绩\n");
<span style="color: #
printf("%d\t%s\t%.2f\n",stu[i].num,stu[i].name,ave);
<span style="color: #
<span style="color: #
fclose (fp);
<span style="color: #
return <span style="color: #;
<span style="color: # }
程序运行结果:
阅读(...) 评论()[项目记录]
用c语言完成的一个学生成绩管理系统
时间: 14:13:12
&&&& 阅读:576
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&一、要求:
学生成绩管理系统
某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。使用链表编程实现如下菜单驱动的学生成绩管理系统。
从文件读入每个学生个人信息和成绩信息,可以由键盘输入文件名。读入成功提示读入学生记录的个数,不成功提示相应出错信息。
增量式手动录入每个学生的学号、姓名和各科考试成绩。不考虑中文姓名,但需要考虑重名情况下的处理,学生的学号是唯一的。
计算每门课程的总分和平均分;
计算每个学生的总分和平均分;
按每个学生的总分由高到低排出名次表;
按每个学生的总分由低到高排出名次表;
按学号由小到大排出成绩表;
按姓名的字典顺序排出成绩表;
按学号查询学生排名及其考试成绩;
按姓名查询学生排名及其考试成绩;需要考虑学生重名的情况。
按优秀(100-90)、良好(89-80)、中等(79-70)、及格(69-60)、不及格(59-0)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;并将计算结果输出到文件,文件名可由键盘输入。
将每个学生的学号、姓名、各科考试成绩、总分和平均分输出到显示器;
将每个学生的个人信息和成绩写入文件,可由键盘输入文件名;
&二、程序结构与设计
模块划分:
整个函数划分为:&
     &a. 用户欢迎与权限通过界面
& & & & & & & & b. 主菜单与用户退出界面
&&&&&&&&&&&&&&& c. 函数调用用程序执行界面
三个模块。
2.主函数的主要功能:
     a. 通过switch函数调用各功能函数
     b. 构建良好亲和的用户体验界面
3. 各子函数主要功能:
F1:& 从文件读入每个学生个人信息和成绩信息,可以由键盘输入文件名。读入成功提示读入学生记录的个数,不成功提示相应出错信息。
F2:增量式手动录入每个学生的学号、姓名和各科考试成绩。不考虑中文姓名,但需要考虑重名情况下的处理,学生的学号是唯一的。
F3:计算每门课程的总分和平均分;
F4:计算每个学生的总分和平均分;
F5:按每个学生的总分由高到低排出名次表;
F6:按每个学生的总分由低到高排出名次表;
F7:按学号由小到大排出成绩表;
F8:按姓名的字典顺序排出成绩表;
F9:按学号查询学生排名及其考试成绩;
F10:按姓名查询学生排名及其考试成绩;需要考虑学生重名的情况。
F11:按优秀(100-90)、良好(89-80)、中等(79-70)、及格(69-60)、不及格(59-0)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;并将计算结果输出到文件,文件名可由键盘输入。
F12:将每个学生的学号、姓名、各科考试成绩、总分和平均分输出到显示器;
F13:将每个学生的个人信息和成绩写入文件,可由键盘输入文件名;
4.函数之间的调用关系:
以结构体数组为主体,辅以链表,通过switch函数调用各功能函数。
Main函数负责对各个小函数的调用,而f1---f13分别完成对题目所要求的13个操作的实现,程序整体大方整洁,风格良好,有较好的结构化特点
三、项目代码
1 /*student achievement management system*/
2 #include&stdio.h&
3 #include&stdlib.h&
4 #include&math.h&
5 #include&string.h&
6 #include&windows.h&
7 #define L 32
8 #define N 6
9 #define M 30
10 #define LEN sizeof(struct student)
11 struct student
char name [L];
float ach[N];
///成绩数组
struct student *
19 struct student stu[M];
20 int count=0,n,m,j,i,k,l;
21 char filename[L]={0};
///声明变量 存储文件名
22 int f1(int m,int n,char filename[L]);
23 int f2(int m,int n,char filename[L]);
24 int f3(int m,int n,char filename[L]);
25 int f4(int m,int n,char filename[L]);
26 int f5(int m,int n,char filename[L]);
27 int f6(int m,int n,char filename[L]);
28 int f7(int m,int n,char filename[L]);
29 int f8(int m,int n,char filename[L]);
30 int f9(int m,int n,char filename[L]);
31 int f10(int m,int n,char filename[L]);
32 int f11(int m,int n,char filename[L]);
33 int f12(int m,int n,char filename[L]);
34 int f13(int m,int n,char filename[L]);
35 int main()
int cishu=5;
system("CLS");
system("color
char mima[L];
printf("-------------------------------------------------------------------------------\n");
欢迎使用学生信息管理系统
printf("-------------------------------------------------------------------------------\n");
printf("\n\n\n\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("&&&&&&&&&&&&&&&&&&&&&请提供管理员权限,输入系统启动密码&&&&&&&&&&&&&&&&&&&&&&&\n");
printf("+----------------------------------------------------------------------------+\n");
printf("\n&&&&&&
scanf("%s",&mima);
for(;strcmp(mima,"LLL1996")!=0;)
if(cishu==0)
printf("对不起,程序即将关闭,谢谢使用");
getchar();
getchar();
printf("对不起,密码错误,请重新输入(你还有%d次输入机会)",cishu);
getchar();
getchar();
getchar();
system("CLS");
system("color
printf("-------------------------------------------------------------------------------\n");
printf("-------------------------------------------------------------------------------\n");
printf(" 建议:1. 使用本系统时需要首先输入班级总人数、总科目数、录入信息文件
2. 如果您已经有输入文件,建议请先选择选项1,用于检查文件信息总数
与录入人数、科目数是否一致,避免计算出错
3. 如果您是初次使用本系统请先选择选项2用于创建学生信息文件,录入 \n");
信息时填写数据较多,并耐心仔细地录入学生信息 \n
O(&_&)O谢谢合作!!\n");
printf("-------------------------------------------------------------------------------\n\n");
printf("\n&&&& 请输入班级的总人数:
scanf("%d",&m);
printf("\n&&&& 请输入课程总数:
scanf("%d",&n);
printf("\n&&&& 请输入要读取或录入信息的文件的名字:
///提示输入文件名
getchar();
gets(filename);
///接收输入
for(j;;j++)
xuanze[3]={0};
printf("\n\n&&&&&&&&如果想进行清屏操作请输入yes,如果想跳过清屏直接继续请按任意键!&&&&&&&&\n");
getchar();
gets(xuanze);
if(strcmp(xuanze,"yes")==0)
system("CLS");
printf("\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * *");
printf("\n *
欢迎进入学生成绩信息管理系统
printf("\n *
一、读取文件
printf("\n *
二、录入学生成绩信息
printf("\n *
三、课程总成绩与平均分数据统计
printf("\n *
四、学生个人总成绩与平均分统计
printf("\n *
五、学生成绩降序排名
printf("\n *
六、学生成绩升序排名
printf("\n *
七、学生成绩按学号大小排序
printf("\n *
八、姓名字典顺序排出成绩表
printf("\n *
九、按学号查询学生排名及其考试成绩
printf("\n *
十、按姓名查询学生排名及其考试成绩
printf("\n * 十一、学生成绩各等级数据统计
Designd by:刘佳维
printf("\n * 十二、学生信息输出到屏幕
printf("\n * 十三、学生信息导出到文件
printf("\n *
零 、退出系统
printf("\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * \n");
printf("\n请从菜单中选择一项进行操作&&&&&&&&&&\n");
scanf("%d",&i);
case 1: f1(m,n,filename); break;
case 2: f2(m,n,filename); break;
case 3: f3(m,n,filename); break;
case 4: f4(m,n,filename); break;
case 5: f5(m,n,filename); break;
case 6: f6(m,n,filename); break;
case 7: f7(m,n,filename); break;
case 8: f8(m,n,filename); break;
case 9: f9(m,n,filename); break;
case 10: f10(m,n,filename); break;
case 11: f11(m,n,filename); break;
case 12: f12(m,n,filename); break;
case 13: f13(m,n,filename); break;
default: break;
printf("\n\n=====谢谢使用本系统,祝您生活愉快!=====\n\n");
///退出界面
138 int f1(int m,int n,char filename[L])
if((file =fopen(filename,"rb"))!=NULL)
///打开 并判断
printf("=====文件打开成功!=====\n\n");
///成功则提示成功
while((fread(&card,sizeof(student),1,file))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
if(count&m)
printf("=====已经录入学生信息的有%d人,还需录入%d人的信息=====\n",count,m-count);
else if(count==m)
printf("=====已经录入学生信息的有%d人,已经将所有成绩信息录入完毕=====\n",count);
printf("=====录入学生信息大于输入的学生总数,系统将自行关闭,请检查信息后再次进入!=====");
getchar();
fclose(file);
printf("=====文件打开失败!=====\n");
///打开失败则提示打开失败
f2(int m,int n,char filename[L])
if((file =fopen(filename,"rb"))!=NULL)
///打开 并判断
while((fread(&card,LEN,1,file))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
if(count&m)
printf("=====已经录入学生信息的有%d人,还需录入%d人的信息=====\n",count,m-count);
printf("&&&& 注:录入信息时,如果想中途停止输入,以后再进行补录,请将学号输为-1,谢谢!\n");
if(count==m)
printf("=====已经录入学生信息的有%d人,已经将所有成绩信息录入完毕=====\n",count);
printf("=====录入学生信息大于输入的学生总数,系统将自行关闭,请检查信息后再次进入!=====");
getchar();
fclose(file);
if((file=fopen(filename,"ab"))!=NULL)
for(count&m;count ++)
printf("&&&& 请输入该学生的学号:\n");
scanf("%d",&stu[count].num);
if(stu[count].num==-1)
for(j=0;j&j++)
if(stu[j].num==stu[count].num)
printf("=====学号输入重复,输入错误,请检查后再进行录入=====\n");
stu[count].total=0;
printf("&&&& 请输入该学生的姓名:\n");
getchar();
gets(stu[count].name);
for(j=1;j&=n;j++)
printf("&&&& 请输入该学生第%d门功课的成绩:",j);
scanf("%f",&stu[count].ach[j-1]);
stu[count].total=stu[count].total+stu[count].ach[j-1];
fwrite(&stu[count],LEN,1,file);
printf("\n=====学生信息已成功录入二进制文件 %s 中,谢谢=====\n",filename);
fclose (file);
237 int f3(int m,int n,char filename[L])
FILE *fp1;
float zf[N]={0};
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
while((fread(&card,LEN,1,fp1))!=(int)NULL)
for(i=0;i&n;i++)
zf[i]=zf[i]+card.ach[i];
printf("=====课程总成绩与平均分为=====\n");
for(i=0;i&n;i++)
printf("&&&&
第%d门课程的总成绩为%.3f
平均分为%.3f\n",i+1,zf[i],zf[i]/m);
fclose (fp1);
263 int f4(int m,int n,char filename[L])
FILE *fp1;
float zf[M]={0};
char nam[M][L]={0};
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
printf("=====学生个人总成绩与平均分为=====\n");
for(i=0;(fread(&card,LEN,1,fp1))!=(int)NULL;i++)
strcpy(nam[i],card.name);
zf[i]=card.
printf("&&&& %s的课程的总成绩为%.3f
平均分为%.3f\n",nam[i],zf[i],zf[i]/n);
fclose (fp1);
285 int f5(int m,int n,char filename[L])
FILE *fp1;
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
while((fread(&card,sizeof(student),1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
for(k=0;k&=i;k++)
for(j=k+1;j&i;j++)
if(stu[k].total&stu[j].total)
card=stu[k];
stu[k]=stu[j];
printf("=====成绩正序排名为=====\n");
for(j=0;j&i;j++)
printf("&&&& 名次;%d
总分:%.3f\n",j+1,stu[j].num,stu[j].name,stu[j].total);
fclose (fp1);
323 int f6(int m,int n,char filename[L])
FILE *fp1;
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n文件%s打开失败\n",filename);
while((fread(&card,sizeof(student),1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
for(k=0;k&=i;k++)
for(j=k+1;j&i;j++)
if(stu[j].total&stu[k].total)
card=stu[k];
stu[k]=stu[j];
printf("=====成绩倒序排名为=====\n");
for(j=0;j&i;j++)
printf("&&&& 名次;%d
总分:%.3f\n",m-j,stu[j].num,stu[j].name,stu[j].total);
fclose (fp1);
361 int f7(int m,int n,char filename[L])
FILE *fp1;
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
while((fread(&card,sizeof(student),1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
for(k=0;k&=i;k++)
for(j=k+1;j&i;j++)
if(stu[j].num&stu[k].num)
card=stu[k];
stu[k]=stu[j];
printf("=====成绩依靠学号顺序排名=====\n");
for(j=0;j&i;j++)
printf("----------------------------------------------------\n");
printf("序号;%d
姓名:%s\n",j+1,stu[j].num,stu[j].name);
for(k=0;k&n;k++)
printf("第%d科:%.3f
",k+1,stu[j].ach[k]);
printf("\n总分%.3f
平均分%.3f\n",stu[j].total,stu[j].total/n);
printf("----------------------------------------------------");
fclose(fp1);
405 int f8(int m,int n,char filename[L])
FILE *fp1;
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
while((fread(&card,sizeof(student),1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
///将信息读入结构体
for(i=0;i&m-1;i++)
for(j=i+1;j&m;j++)
if(strcmp(stu[i].name,stu[j].name)&0)
card=stu[i];
stu[i]=stu[j];
printf("=====按姓名的字典顺序排出成绩表=====");
for(k=0;k&m;k++)
printf("----------------------------------------------------\n");
printf("序号;%d
姓名:%s\n",k+1,stu[k].num,stu[k].name);
for(i=0;i&n;i++)
printf("第%d科:%.3f
",i+1,stu[k].ach[i]);
printf("\n总分%.3f
平均分%.3f\n",stu[k].total,stu[k].total/n);
printf("----------------------------------------------------");
fclose(fp1);
445 r8: return 0;
447 int f9(int m,int n,char filename[L])
struct student *head,*p1,*p2;
int ChooseN
printf("=====请输入要查询信息的学生的学号:=====\n");
scanf("%d",&ChooseNum);
FILE *fp1;
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
while((fread(&card,LEN,1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
///读入到结构体数组
for(k=0;k&=i;k++)
for(j=k+1;j&i;j++)
if(stu[k].total&stu[j].total)
card=stu[k];
stu[k]=stu[j];
head=&stu[0];
p1=&stu[1];
head-&next=p1;
p1-&next=p2;
///建立链表
if(head-&num==ChooseNum)
printf("名次;%d
姓名:%s\n",i+1,head-&num,head-&name);
for(k=0;k&n;k++)
printf("第%d科:%.3f
",k+1,head-&ach[k]);
printf("\n总分%.3f
平均分%.3f\n",head-&total,head-&total/n);
for(i=1;1&m;i++)
p1=&stu[i];
p1-&next=p2;
if(p1-&num==ChooseNum)
printf("名次;%d
姓名:%s\n",i+1,p1-&num,p1-&name);
for(k=0;k&n;k++)
printf("第%d科:%.3f
",k+1,p1-&ach[k]);
printf("\n总分%.3f
平均分%.3f\n",p1-&total,p1-&total/n);
printf("没有该学号!!!!!!");
516 int f10(int m,int n,char filename[L])
char ChooseName[L];
printf("&&&& 请输入要查询的学生的姓名:\n");
getchar();
gets(ChooseName);
FILE *fp1;
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
while((fread(&card,sizeof(student),1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
for(k=0;k&=i;k++)
for(j=k+1;j&i;j++)
if(stu[k].total&stu[j].total)
card=stu[k];
stu[k]=stu[j];
printf("=====按姓名查询学生排名及其考试成绩=====\n");
for(j=0;j&i;j++)
if(strcmp(stu[j].name,ChooseName)==0)
printf("----------------------------------------------------\n");
printf("名次;%d
姓名:%s\n",j+1,stu[j].num,stu[j].name);
for(k=0;k&n;k++)
printf("第%d科:%.3f
",k+1,stu[j].ach[k]);
printf("\n总分%.3f
平均分%.3f\n",stu[j].total,stu[j].total/n);
printf("----------------------------------------------------");
fclose(fp1);
566 int f11(int m,int n,char filename[L])
output[L];
float a=0,b=0,c=0,d=0,e=0;
FILE *fp1,*fp2;
fp1=fopen(filename,"rb");
printf("\n&&&& 请输入要输出到文件的名字:\n");
///提示输入文件名
getchar();
gets(output);
///接收输入
fp2=fopen(output,"w");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
if(fp2==NULL)
printf("\n=====文件%s打开失败=====\n",output);
while((fread(&card,sizeof(student),1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
fprintf(fp2,"=======================================各科目成绩分析=============================================\n总参考人数:%d\n考试科目数:%d\n",i,n);
fprintf(fp2,"
优秀(比例)
良好(比例)
中等(比例)
及格(比例)
不及格(比例)\n");
fprintf(fp2,"
&0-59&\n");
fprintf(fp2,"==================================================================================================\n");
for(k=0;k&n;k++)
a=0,b=0,c=0,d=0,e=0;
for(j=0;j&m;j++)
if((stu[j].ach[k]&=100)&&(stu[j].ach[k]&=90))
else if((stu[j].ach[k]&=89)&&(stu[j].ach[k]&=80))
else if((stu[j].ach[k]&=79)&&(stu[j].ach[k]&70))
else if((stu[j].ach[k]&=69)&&(stu[j].ach[k]&=60))
else if((stu[j].ach[k]&=59)&&(stu[j].ach[k]&=0))
fprintf(fp2,"
%.0f人(%.3f%%)
%.0f人(%.3f%%)
%.0f人(%.3f%%)
%.0f人(%.3f%%)
%.0f人(%.3f%%)\n",k+1,a,a/m*100,b,b/m*100,c,c/m*100,d,d/m*100,e,e/m*100);
printf("=====已经将所有信息写入到文件%s中,请注意接收!=====\n",output);
622 int f12(int m,int n,char filename[L])
FILE *fp1;
fp1=fopen(filename,"rb");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
while((fread(&card,sizeof(student),1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
for(k=0;k&=i;k++)
for(j=k+1;j&i;j++)
if(stu[k].total&stu[j].total)
card=stu[k];
stu[k]=stu[j];
printf("=====学生所有信息屏幕输出=====\n");
for(j=0;j&i;j++)
printf("----------------------------------------------------\n");
printf("名次;%d
姓名:%s\n",j+1,stu[j].num,stu[j].name);
for(k=0;k&n;k++)
printf("第%d科:%.3f
",k+1,stu[j].ach[k]);
printf("\n总分%.3f
平均分%.3f\n",stu[j].total,stu[j].total/n);
printf("----------------------------------------------------");
fclose(fp1);
665 int f13(int m,int n,char filename[L])
output[L]={0};
FILE *fp1,*fp2;
fp1=fopen(filename,"rb");
printf("\n&&&& 请输入要输出到文件的名字:\n");
///提示输入文件名
getchar();
gets(output);
///接收输入
fp2=fopen(output,"w");
if(fp1==NULL)
printf("\n=====文件%s打开失败=====\n",filename);
if(fp2==NULL)
printf("\n=====文件%s打开失败=====\n",output);
while((fread(&card,LEN,1,fp1))!=(int)NULL)
stu[i].num=card.
strcpy(stu[i].name,card.name);
for(j=0;j&n;j++)
stu[i].ach[j]=card.ach[j];
stu[i].total=card.
for(k=0;k&=i;k++)
for(j=k+1;j&i;j++)
if(stu[k].total&stu[j].total)
card=stu[k];
stu[k]=stu[j];
printf("=====已经将所有信息写入到文件%s中,请注意接收!=====\n",output);
for(j=0;j&i;j++)
fprintf(fp2,"----------------------------------------------------\n");
fprintf(fp2,"名次;%d
姓名:%s\n",j+1,stu[j].num,stu[j].name);
for(k=0;k&n;k++)
fprintf(fp2,"第%d科:%.3f
",k+1,stu[j].ach[k]);
fprintf(fp2,"\n总分%.3f
平均分%.3f\n",stu[j].total,stu[j].total/n);
fprintf(fp2,"----------------------------------------------------");
fclose(fp1);
fclose(fp2);
四、程序备注
这是笔者在大一刚学c的时候做的,虽然简单,但实现了所有上文的功能,今天不知咋的,突然翻了出来,心想不如写入博客,也算留个备份
笔者在vc6.0和codeblocks下均通过运行,进入系统的密码为LLL1996
本程序纯属原创,如有引用,请注明出处
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:http://www.cnblogs.com/liujw2114/p/6604511.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!编一程序,输入下列学生成绩表中的数据(从键盘输入),并用链表形式存放,然后统计出每位学生的总分,并按总分从高到低的顺序显示学生的乘积信息。
[问题点数:90分,结帖人yrj95427]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:1851
本版专家分:368808
2017年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本版专家分:5800
本版专家分:0
本版专家分:472
本版专家分:11473
2014年6月 C/C++大版内专家分月排行榜第二
本版专家分:368808
2017年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本版专家分:0
本版专家分:42
匿名用户不能发表回复!|
其他相关推荐

我要回帖

更多关于 学生个人考试成绩分析 的文章

 

随机推荐