| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:小型的学生管理系统,最后一步不会,求教!!!!!!!!!!!
只看楼主 加入收藏
回水
Rank: 2
来 自:广东湛江
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-3-3
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:2 
小型的学生管理系统,最后一步不会,求教!!!!!!!!!!!
每个学生的记录为:学号,姓名,性别,英语,数学,程序设计。(对此设计结构体)
编程实现以下功能:
(1)输入每位学生的各项信息(至少5位)。
(2)计算每位学生的总分和平均分。
(3)计算每门课程的平均分及最高、最低分。
(4)查找所有重修学生的学号、姓名和重修科目。
(5)对所有记录按照平均成绩降序排列,当成绩相等时再按照学号升序排列。
要求:使用到结构体和指针

我写的代码:
#include <stdio.h>
#define N 5
struct student
{
    int num;
    char name[10];
    char sex;
    float english;
    float math;
    float programming;
   
   
}stu[N];
    float total[N];
    float aver[N];
        
    int i,n;

void Infor()//输入每位学生的各项信息,计算每位学生的总分和平均分。
{
   
    for(i=0;i<N;i++)
   
    {
        printf("请分别输入第%d位学生的学号,姓名,性别,英语成绩,数学成绩,程序设计成绩,并分别用空格分开:\n",i);
        scanf("%d %s %c %f %f %f",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].english,&stu[i].math,&stu[i].programming);
        total[i]=stu[i].english+stu[i].math+stu[i].programming;
        aver[i]=(stu[i].english+stu[i].math+stu[i].programming)/3;
        printf("总分:%f\t平均分:%f\n\n",total[i],aver[i]);
    }   
}
        

    void  EMP()//计算每门课程的平均分
    {
    float english=0;
    float math=0;
    float programming=0;
   
    for(i=0;i<N;i++)   
    {
    english=(english+stu[i].english);
   
    math=(math+stu[i].math);
   
    programming=(programming+stu[i].programming);
   
    }
    printf("英语的平均分为:%f\n数学的平均分为:%f\n程序设计平均分为:%f\n\n",english/N,math/N,programming/N);
   
    }
    void HL()//计算每门课程的最高、最低分。
   
    { EMP();
    float *p1,*p2,*p3,*p4,*p5,*p6;
   
        p1=p2=&stu[0].english;
        p3=p4=&stu[0].math;
        p5=p6=&stu[0].programming;
   
        
    for(i=0;i<N-1;i++)
    {        
    if(*p1>stu[i+1].english)
            p1=&stu[i+1].english;
    if(*p2<stu[i+1].english)
            p2=&stu[i+1].english;   
    if (*p3>stu[i+1].math)
            p3=&stu[i+1].math;
    if(*p4<stu[i+1].math)
            p4=&stu[i+1].math;
            
    if (*p5>stu[i+1].programming)
            p5=&stu[i+1].programming;
        
    if(*p6<stu[i+1].programming)
            p6=&stu[i+1].programming;
        
    }
            printf ("单科英语最低分是:%f\n",*p1);
            printf ("单科英语最高分是:%f\n\n",*p2);
            printf ("单科数学最低分是:%f\n",*p3);
            printf ("单科数学最高分是:%f\n\n",*p4);
            printf ("单科程序设计最低分是:%f\n",*p5);
            printf ("单科程序设计最高分是:%f\n\n",*p6);   
    }
    void CX()//查找所有重修学生的学号、姓名和重修科目。
    {   
            printf("学号\t姓名\t重修科目\n");
        for (i=0;i<N;i++)
        {
        if(stu[i].english<60)
            printf("%d\t%s\t英语\n",stu[i].num,&stu[i].name);
        if (stu[i].math<60)
            printf("%d\t%s\t数学\n",stu[i].num,&stu[i].name);
        if (stu[i].programming<60)
            printf("%d\t%s\t程序设计\n",stu[i].num,&stu[i].name);
        }
    }
    void PX()//对所有记录按照平均成绩降序排列,当成绩相等时再按照学号升序排列。
    {    float j,k;
            aver[i]=(stu[i].english+stu[i].math+stu[i].programming)/3;
            printf ("按照学生的平均分降序排列\n");
        for    (i=0;i<N-1;i++)
            for(j=0;j<N-i-1;j++)
        
        if(aver[i]<aver[i+1])
        {
            k=aver[i+1];
            aver[i+1]=aver[i];
            aver[i]    =k;
        }
        for(i=0;i<N;i++)
            printf("%f\t",aver[i]);
            
    }
        int main (void)                                                     
        {
        Infor();
        EMP();
        HL();
        CX();
        PX();
        return 0;
        }
最后一步好像用冒泡法排序不行,求高手!!!!
搜索更多相关主题的帖子: 记录 姓名 管理系统 include 结构体 
2011-09-14 18:06
编程的乐趣
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:229
专家分:1027
注 册:2011-4-4
收藏
得分:10 
!!
2011-09-15 19:18
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:10 
(5)对所有记录按照平均成绩降序排列,当成绩相等时再按照学号升序排列。

这里你可以倒过来实现  先对学号进行升序排列  然后再对成绩做降序排列(保证相同的分数不进行操作)
2011-09-16 07:28
快速回复:小型的学生管理系统,最后一步不会,求教!!!!!!!!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017266 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved