学生信息管理

作者在 2011-06-15 13:15:39 发布以下内容
#include <stdio.h>
#include <stdlib.h>

struct student
{
    char number[20];
    char name[10];
    float score1;
    float score2;
    float score3;
    float average;

    struct student *next;
}node;
typedef struct student jie;
void view(jie *q,int num)
{
    printf("%s %s %.2f %.2f %.2f %.2f %d\n",q->number,q->name,q->score1,q->score2,q->score3,q->average,num);
}
void print(jie *p,int n)
{
    jie *q1,*q2,*f,*bef;
    int k=1;
    int num=0;
    while(k<n)
    {
        f=q1=p;
        q2=p->next;
        while(q2!=NULL)
        {
            if(q2->average>f->average)
            {
                bef=q1;
                f=q2;
            }
            q1=q2;
            q2=q1->next;
        }
        if(f==p)
        {

            view(f,++num);
            k++;
            p=p->next;
            free(f);
        }
        else
        {
            bef->next=f->next;
            view(f,++num);
            k++;
            free(f);
        }
    }
    view(p,++num);
}
jie* creat(int n)
{
    jie *head,*q1,*q2;
    head=q2=q1=NULL;
    int i;

    for(i=0;i<n;i++)
    {
       q1=(jie*)malloc(sizeof(jie));
       scanf("%s %s %f %f %f",q1->number,q1->name,&q1->score1,&q1->score2,&q1->score3);
       q1->average=(q1->score1+q1->score2+q1->score3)/3;

       if(head==NULL)
       {
           head=q2=q1;
       }
       else
       {
          q2->next=q1;
          q2=q1;
       }
    }
    q1->next=NULL;
    return head;

}
int main()
{
    jie *p;
    int n;
    scanf("%d",&n);
    p=creat(n);
    print(p,n);
    return 0;
}
标题: 学生信息管理
时 限: 1000 ms
内存限制: 20000 K
总时限: 3000 ms
描述: 用链式存储结构实现对一个班级学生信息管理。设计程序求出每个人的平均成绩并按平均成绩由高到底排序后输出学生记录。
输入: 人数n
人员记录1 (格式为: 学号 姓名 成绩1 成绩2 成绩3)
人员记录2
输出: 人员记录x 1
人员记录y 2

人员记录z n
输入样例: 3
1 孙俪莉 76 78 89
2 章子怡 72 56 67
3 刘德华 56 84 90
输出样例: 1 孙俪莉 76 78 89 81.00 1
3 刘德华 56 84 90 76.67 2
2 章子怡 72 56 67 65.00 3
数据结构(c语言) | 阅读 1028 次
文章评论,共0条
游客请输入验证码
浏览70058次