c语言:从键盘输入一个班(不超过30人)学生某门课的成绩
,当输入成绩为负值时,则输入结束,统计并输出不及格人数并打印不及格学生的成绩,按成绩高低排序,输出该班最高分及最低分。...
,当输入成绩为负值时,则输入结束,统计并输出不及格人数并打印不及格学生的成绩,按成绩高低排序,输出该班最高分及最低分。
展开
1个回答
展开全部
#include "stdio.h"
/*学生信息*/
struct student
{
int num;
char name[20];
float score;
}stu[5];
/*输入学生成绩*/
input()
{
int i;
for(i=0;i<5;i++)
scanf("%d%s%f",&stu[i].num,stu[i].name,&stu[i].score);
}
/*求最高成绩并输出*/
high()
{
int i, m;
float maxscore;
m = 0;
maxscore = stu[0].score;
for (i = 1; i < 5; i++)
{
if (stu[i].score > maxscore)
{
maxscore = stu[i].score;
m = i;
}
}
printf("The maxmum score is :%5.1f\n", maxscore);
printf("The student number is: %d\n", stu[m].num);
printf("The student name is: %s\n", stu[m].name);
}
/*求最低成绩并输出*/
low()
{
int i, m;
float minscore;
m = 0;
minscore = stu[0].score;
for (i = 1; i < 5; i++)
{
if (stu[i].score < minscore)
{
minscore = stu[i].score;
m = i;
}
}
printf("The minmum score is :%5.1f\n", minscore);
printf("The student number is: %d\n", stu[m].num);
printf("The student name is: %s\n", stu[m].name);
}
/*从高到低排序*/
sort()
{
int i,j,t1;
float t;
char na[20];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(stu[i].score<stu[j].score)
{
t=stu[i].score;
stu[i].score=stu[j].score;
stu[j].score=t;
t1=stu[i].num;
stu[i].num=stu[j].num;
stu[j].num=t1;
strcpy(na,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,na);
}
}
/*输出排序后的成绩*/
outputsort()
{
int i;
for(i=0;i<5;i++)
printf("%d,%s,%f\n",stu[i].num,stu[i].name,stu[i].score);
}
/*求不及格的人数并输出,输出不及格的学生信息*/
nopass()
{
int i,j=0;
for(i=0;i<5;i++)
if(stu[i].score<60)
{
printf("%d,%s,%f\n",stu[i].num,stu[i].name,stu[i].score);
j++;
}
printf("不及格的人数为%d",j);
}
void main()
{
input();
high();
low();
sort();
outputsort();
nopass();
getch();
}
追问
太乱了,能否分行。还有变量名可否短些,看不明白啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询