zoukankan      html  css  js  c++  java
  • 链表

    cc-test08-1链表的输入与输出

    Problem : 1049

    Time Limit : 1000ms

    Memory Limit : 65536K

    description

     读入学生的信息:学号(8位整数)、姓名(20个字符)、性别(1个字符)3门课的成绩(2位小数)。计算每个学生的平均成绩(2位小数),总成绩(2位小数)信息。 要求用函数实现部分子功能,要求用链表完成数据的存储。

    input

      输入数据有1组,每组有n个学生信息。

    output

      输出按总成绩从高到低排序输出,每行1个学生信息,各信息之间用2个空格分隔。

    sample_input

    5
    20140101
    Li Ming
    M
    85 90 92
    20140202
    Zhao Li
    F
    98 78 88
    20140013
    Qiao En
    M
    92.5 85.6 78.5
    20140404
    Tian Ya
    M
    88.5 68.6 94
    20140015
    Lu Yao
    M
    89.4 86.5 88

    sample_output

    20140101  Li Ming  M  85.00  90.00  92.00  89.00  267.00
    20140202  Zhao Li  F  98.00  78.00  88.00  88.00  264.00
    20140015  Lu Yao  M  89.40  86.50  88.00  87.97  263.90
    20140013  Qiao En  M  92.50  85.60  78.50  85.53  256.60
    20140404  Tian Ya  M  88.50  68.60  94.00  83.70  251.10

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    struct student
    {
        int sno;
        char name[20];
        char gender;
        float grade[3];
        float sum;
        float avg;
        struct student *next;
    };

    typedef struct student stu_node;

    void output(stu_node *phead)
    {
        stu_node *p=phead->next;
        while(p!=NULL)
     {
        printf("%d %s %c %.2f %.2f %.2f %.2f %.2f ",p->sno,p->name,p->gender,p->grade[0],p->grade[1],p->grade[2],p->avg,p->sum);
        p=p->next;
     }
    }

    stu_node *create(int n)
    {
        int i=0;
        stu_node *phead=(stu_node *)malloc(sizeof(stu_node));
        stu_node *pnew, *ptail;
        if(phead!=NULL)
    {
        ptail=phead;
        while(i<n)
      {
       pnew=(stu_node *)malloc(sizeof(stu_node));
       if(pnew==NULL) return NULL;
       scanf("%d",&pnew->sno);
       getchar();
       gets(pnew->name);
       pnew->gender=getchar();
       scanf("%f%f%f",&pnew->grade[0],&pnew->grade[1],&pnew->grade[2]);
       pnew->sum=pnew->grade[0]+pnew->grade[1]+pnew->grade[2];
       pnew->avg=(pnew->sum)/3;
       ptail->next=pnew;
       ptail=pnew;
       pnew->next=NULL;
       i++;
      }
    }
      else
       return NULL;
    return phead;
    }

    void sort(stu_node *phead)
    {
       stu_node *p,*q,*max;
       stu_node temp;
       int i;
       p=phead->next;
      while(p)
     {
       max=p;
       q=p->next;
     while(q)
     {
        if(q->sum >max->sum) max=q;
        q=q->next;
     }
     if(max!=p)
    {
       temp.sno=max->sno;
       max->sno=p->sno;
       p->sno=temp.sno;

       strcpy(temp.name,max->name);
       strcpy(max->name,p->name);
       strcpy(p->name,temp.name);

       temp.gender =max->gender;
       max->gender =p->gender;
       p->gender= temp.gender;

       temp.avg =max->avg;
       max->avg =p->avg;
       p->avg= temp.avg;

       temp.sum =max->sum;
       max->sum =p->sum;
       p->sum= temp.sum;

    for(i=0;i<3;i++)
     {
         temp.grade[i]=p->grade[i];
         p->grade[i]=max->grade[i];
         max->grade[i]=temp.grade[i];
     }
    }
      p=p->next;
    }
    }

    int main()
    {
       int n;
       scanf("%d",&n);
       stu_node *s=create(n);
       sort(s);
       output(s);
       return 0;
    }

  • 相关阅读:
    P1856 [USACO5.5]矩形周长Picture 题解
    题解 SP703 【SERVICE
    题解 P2893 【[USACO08FEB]Making the Grade G】
    P4551 最长异或路径 题解
    P3834 【模板】可持久化线段树 2(主席树)题解
    用正则表达式验证用户名输入的正确性
    软件测试杂谈
    next_permutation
    刊物论文级别
    android 之常见事件响应的实现方式对比
  • 原文地址:https://www.cnblogs.com/chen9510/p/4486222.html
Copyright © 2011-2022 走看看