回复 3楼 韶志
#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 50
typedef struct student
{
char num[11];
char name[11];
float score;
}STU;
void MainMenu()/*菜单显示*/
{
printf("******-----
C语言成绩分析系统
------******\n");
printf("
1.录入学生信息(包括学号、姓名、成绩)输入-1退出输入\n");
printf("
2.输出学生信息(包括学号、姓名、成绩)\n");
printf("
3.查找最高分和最低分学生的信息
\n");
printf("
4.查找不及格学生的信息
\n");
printf("
5.根据姓名进行查找
\n");
printf("
6.根据成绩进行从高到低排序并且依次显示学生信息.
\n");
printf("
7.求学生成绩总和和平均值。
\n");
printf("
0.退出
\n");
printf("******-----
C语言成绩分析系统
------******\n");
}
int LuRu(STU a[],int n)/*学生的信息录入*/
{
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的信息\n",i+1);
scanf("%s%s%f",a[i].num,a[i].name,&a[i].score);
if(a[i].num=="-1"||a[i].name=="-1"||a[i].score==-1.0)
break;
}
return(i);
}
void
Display(STU a[],int n)/*学生信息的输出*/
{
int i;
for(i=0;i<n;i++)
{
printf("%s
%s
%.2f",a[i].num,a[i].name,a[i].score);
printf("\n");
}
}
void ChaZhao(STU a[],int n)/*最高成绩最低成绩的查找*/
{
STU b,c;
int i,l,k;
float max,min;
max=min=a[0].score;
for(i=1;i<n;i++)
{
if(max<a[i].score)
{
max=a[i].score;
l=i;
}
if(min>a[i].score)
{
min=a[i].score;
k=i;
}
}
b=a[l];
c=a[k];
printf("max=%.2f最高分同学的学号是: %s,姓名是: %s\n",max,b.num,b.name);
printf("min=%.2f最低分同学的学号是: %s,姓名是: %s\n",min,c.num,c.name);
}
void Bujige(STU a[],int n)/*不及格成绩的学生信息的输出*/
{
int i;
for(i=0;i<n;i++)
if(a[i].score<60)
printf("%s %s %.2f\n",a[i].num,a[i].name,a[i].score);
}
void XMchazhao(STU a[],int n)/*根据姓名查找*/
{
STU b;
int i,fleg=1,x;
char cha[10];
printf("请输入查找的姓名:\n");
scanf("%s",cha);
for(i=0;i<n;i++)
{
if(strcmp(cha,a[i].name)==0)
{
fleg=1;
x=i;
break;
}
else
continue;
}
if(fleg==1)
{
b=a[x];
printf("%s %s %.2f",b.num,b.name,b.score);
}
else
printf("没有此人");
}
void PaiXu(STU a[],int n)/*成绩的排序*/
{
int i,j,k;
float x;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k].score>a[j].score)
k=j;
if(k!=i)
{
x=a[k].score;
a[k].score=a[i].score;
a[i].score=x;
}
}
for(i=n-1;i>=0;i--)
printf("%.2f
该生学号是:%s
该生姓名是:%s \n",a[i].score,a[i].num,a[i].name);
}
void Sum_Aver(STU a[],int n)/*成绩的求和平均值*/
{
int i;
float sum=0,aver;
for(i=0;i<n;i++)
sum=sum+a[i].score;
aver=sum/(float)n;
printf("成绩的和是:%.2f,成绩的平均值是:%.2f",sum,aver);
}
main()
{
STU a[100];
int stu_count=N,/*学生的人数*/ count;/*学生的真实人数*/
int n;
while(1)
{
getch();
system("CLS");
MainMenu();
printf("请输入0----7的数字\n");
scanf("%d",&n);
switch(n)
{
case 1:count=LuRu(a,stu_count);printf("%d",count);break;
case 2:Display(a,count);break;
case 3:ChaZhao(a,count);break;
case 4:Bujige(a,count);break;
case 5:XMchazhao(a,count);break;
case 6:PaiXu(a,count);break;
case 7:Sum_Aver(a,count);break;
case 0:exit(0);
}
}
}就是这个在最大值最小值查找的地方不对
[
本帖最后由 现实太狗 于 2013-12-19 14:14 编辑 ]