【C语言基础】 学生成绩管理系统(指针型)

本文介绍了一个学生信息管理系统的设计与实现,该系统使用结构体和指针来存储和处理学生的基本信息和成绩,通过C语言编程实现了输入学生信息、计算平均成绩、排序和输出等功能。

题目:某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数

代码:/*在排序的算法中,效率较低,;提供思路:    1.(*(p+i)).rank=5        2.   (*(p+i)).rank--  (类似于 选择排序法)  

#include<stdio.h>
struct data
{
    long numb;
    char name[20];
    float score[3];
    float average;
     int rank;
}p[5];
    void inputscore(struct data *p) ;
     void ave(struct data *p,float average[20]);
    void outputscore(struct data *p);
int main()
{
      float average[20];
      struct data p[5];
      inputscore(p);
      ave(p,average);
      outputscore(p);
      return 0;
}
 void inputscore(struct data *p) 
    {
        int i,j;
       for(i=0;i<5;i++)
       {       
      scanf("%ld",&(*(p+i)).numb);
       scanf("%s",(*(p+i)).name);
       for(j=0;j<3;j++)
        scanf("%f",&(*(p+i)).score[j]);
      }
}
  void ave(struct data *p,float average[20])
{
    float sum=0;
    int i,j;
    float temp;
    for(i=0;i<5;i++)
     {
      for(j=0;j<3;j++)
       sum+=(*(p+i)).score[j];
       (*(p+i)).average=sum/3.0;
       average[i]=sum/3;
       sum=0;
       }
     for(i=0;i<5;i++)
       { 
       for(j=i+1;j<5;j++)
        if(average[j]>average[i])
  {
    temp=average[i] ;
       average[i]=average[j];
       average[j]=temp;
  }
  }
     for(i=0;i<5;i++)
     {
        for(j=0;j<5;j++)
      {
      if((*(p+i)).average==average[j])
              (*(p+i)).rank=j+1;
     }
      }              
}
        void outputscore(struct data *p)
{
       int i,j; 
       printf("Number:  Name:        score:       Average:  rank:\n");
       for(i=0;i<5;i++){
  printf("%-9ld%-10s",(*(p+i)).numb,(*(p+i)).name);
  for(j=0;j<2;j++)
        printf("%-5.1f",(*(p+i)).score[j]);
        printf("%-8.1f",(*(p+i)).score[j]);
  printf("%-10.1f%-d\n",(*(p+i)).average,(*(p+i)).rank);
  } 
  }

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值