zoukankan      html  css  js  c++  java
  • 链表实现输出大于平均分的学生信息

      1 //打印大于平均分的学生
      2 
      3 //2017.3.9
      4 #include <stdio.h>
      5 #include <stdlib.h>
      6 
      7 #define N 7
      8 struct student
      9 {
     10     int id;
     11     int course;
     12     struct student *next;
     13 };
     14 
     15 typedef struct student su;
     16 
     17 //头结点
     18 su* init(int id, int cur)
     19 {
     20     su *p = (su *)malloc(sizeof(su));
     21     if (NULL == p)
     22     {
     23         return NULL;
     24     }
     25     else
     26     {
     27         p->id = id;
     28         p->course = cur;
     29         p->next = NULL;
     30     }
     31     return p;
     32 }
     33 
     34 //插入结点
     35 void insert(su *head, int id, int course)
     36 {
     37     su *p = (su *)malloc(sizeof(su));
     38     if (NULL == p)
     39     {
     40         printf("error");
     41     }
     42     else
     43     {
     44         head->next = p;
     45         p->id = id;
     46         p->course = course;
     47         p->next = NULL;//特别注意这里 不然会野指针
     48     }
     49 }
     50 //计算学生成绩之和
     51 int cout(su *head)
     52 {
     53     su *p = head->next;
     54     int sum = 0;
     55     while (p != NULL)
     56     {
     57         sum = sum + p->course;
     58         p = p->next;
     59     }
     60     return sum;
     61 }
     62 
     63 //计算平均分
     64 double getAvg(su *head, int n)
     65 {
     66     return cout(head) / (double)n;
     67 }
     68 
     69 //打印所有成绩
     70 void print(su *head)
     71 {
     72     //printf("dfsfadf
    ");
     73     su *p = head->next;
     74     while(p!=NULL)
     75     {
     76         printf("%d:	%d
    ", p->id, p->course);
     77         p = p->next;
     78      }
     79 }
     80 void main()
     81 {
     82     su *head = init(NULL, NULL);                //头结点没有内容,next指向第一个学生
     83     int i = 1;                                    //学号
     84     su *p = head;                                //当前结点位置
     85     while (i <= N)                                //总共创建7个结点,每个结点代表一个学生
     86     {
     87         insert(p, i, rand() % 40 + 60);            //插入一个学生信息
     88         i++;
     89         p = p->next;                            //当前指针后移
     90     }
     91 
     92     print(head);                                //输出链表信息,所有学生信息
     93 
     94     double ave = getAvg(head, N);            //获得平均分数
     95     printf("
    Average = %f
    ", ave);
     96 
     97     su *pa = head->next;
     98     printf("成绩大于平均分的为
    ");
     99     while (pa != NULL)
    100     {
    101         if (pa->course > ave)  // 打印分数大于平均分的学生科目信息
    102         {
    103             printf("id: %d,	fuck= %d
    ", pa->id, pa->course);
    104         }
    105         pa = pa->next;
    106     }
    107     system("pause");
    108 }

  • 相关阅读:
    P1012拼数
    P1622释放囚犯
    P1064 金明的预算方案
    P1754球迷购票问题
    卡塔兰数
    P1474货币系统
    P2562kitty猫基因
    P3984高兴的津津
    5-servlet简介
    java通过百度AI开发平台提取身份证图片中的文字信息
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/6533400.html
Copyright © 2011-2022 走看看