c语言:从键盘输入一个班(不超过30人)学生某门课的成绩

,当输入成绩为负值时,则输入结束,统计并输出不及格人数并打印不及格学生的成绩,按成绩高低排序,输出该班最高分及最低分。... ,当输入成绩为负值时,则输入结束,统计并输出不及格人数并打印不及格学生的成绩,按成绩高低排序,输出该班最高分及最低分。 展开
 我来答
yr78044367
2015-06-30 · TA获得超过534个赞
知道小有建树答主
回答量:397
采纳率:100%
帮助的人:91万
展开全部
#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();
}
追问
太乱了,能否分行。还有变量名可否短些,看不明白啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式