华清数据结构day2 24-7-17

news2024/9/23 5:29:54

1> 完成班级的创建,创建时,需要传递班级实际人数
2> 完成班级学生的信息录入工作
3> 完成将班级学生按成绩进行降序排序工作
4> 输出班级中成绩最好和最差学生的信息
5> 完成信息的输出工作
6> 完成班级的销毁工作
要求:班级创建在堆区,尽量分文件编译完成

 zy.h文件

#ifndef ZY_H
#define ZY_H
#define MAX 100            //最大容量
//定义学生类型
struct Stu
{
    char name[20];
    int age;
    double score;
};
//定义班级类型
struct Class
{
    struct Stu student[MAX];       //存放学生的容器
    int size;                      //实际人数
};
int *create( int size);
void input(struct Class *ptr , int size);  //录入函数
void sort(struct Class *ptr , int size) ; //降序排序函数
void maxandmin(struct Class *ptr, int size);   //输出最好和最差的学生
void output(struct Class *ptr , int size);      //输出学生
void destroy(struct Class *ptr );       //释放内存的函数

#endif

 zy.c文件

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100            //最大容量
//定义学生类型
struct Stu
{
    char name[20];
    int age;
    double score;
};
//定义班级类型
struct Class
{
    struct Stu student[MAX];       //存放学生的容器
    int size;                      //实际人数
};
int *create( int size)
{
    struct Class *ptr = (struct Class* *)malloc(sizeof(struct Class*) * size);
    if (ptr == NULL)
    {
        printf("申请失败\n");
        return NULL;
    }
    memset(ptr, 0, sizeof(int)*size);
    return ptr;
}
void input(struct Class *ptr , int size)  //录入函数
{
     if (ptr == NULL)
    {
        printf("申请失败\n");
        return ;
    }
    for (int i = 0; i < size; i++)
    {
        printf("请输入第%d个学生的姓名,年龄,成绩(空格分开):",i+1);
        scanf("%s %d %lf",ptr->student[i].name,&ptr->student[i].age,&ptr->student[i].score);
    }
    
}
void sort(struct Class *ptr , int size)  //降序排序函数
{
      if (ptr == NULL)
    {
        printf("申请失败\n");
        return ;
    }
    for (int i = 1; i < size; i++)
    {
        for (int j = 0; j < size -i ; j++)
        {
            if (ptr->student[j].score<ptr->student[j+1].score)
            {
                struct Stu temp = ptr->student[j];
                ptr->student[j] = ptr->student[j + 1];
                ptr->student[j + 1] = temp;
            }        
        }
    }
    
}
void maxandmin(struct Class *ptr, int size)    //输出最好和最差的学生
{
    if (ptr == NULL)
    {
        printf("申请失败\n");
        return ;
    }
   int max = 0,min = 0;
   for (int i = 1; i < size; i++)
   {
      if (ptr->student[max].score<ptr->student[i].score)
      {
         max = i;
      }
      if (ptr->student[min].score>ptr->student[i].score)
      {
        min = i;
      }
   }
    printf("最好的学生的姓名=%s,年龄=%d,成绩=%.2lf:\n",ptr->student[max].name,ptr->student[max].age,ptr->student[max].score);
    printf("最差的学生的姓名=%s,年龄=%d,成绩=%.2lf:\n",ptr->student[min].name,ptr->student[min].age,ptr->student[min].score);
    
}
void output(struct Class *ptr , int size)       //输出学生
{
      if (ptr == NULL)
    {
        printf("申请失败\n");
        return ;
    }
    printf("输出学生信息:\n");
    for (int i = 0; i < size; i++)
    {
        printf("第%d个学生的姓名=%s,年龄=%d,成绩=%.2lf:\n",i+1,ptr->student[i].name,ptr->student[i].age,ptr->student[i].score);
    }
    
}
void destroy(struct Class *ptr )       //释放内存的函数
{
    free(ptr);
}

 zymain.h文件

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

int main(int argc, char const *argv[])
{
    int size = 0;
    printf("请输入你要输入的人数:");
    scanf("%d",&size);
    struct Class * P = create(size);
    //调用录入函数
    input(P,size);
    //降序排序函数
    sort(P,size);
    //输出最好和最差的学生
    maxandmin(P,size);
    //输出学生
    output(P,size);
    //释放内存的函数
    destroy(P);
    P = NULL;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1932618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue+uniapp的驾校预约平台小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

小程序图片下载保存方法,图片源文件保存!

引言 现在很多时候我们在观看到小程序中的图片的时候&#xff0c;想保存图片的原文件格式的话&#xff0c;很多小程序是禁止保存的&#xff0c;即使是让保存的话&#xff0c;很多小程序也会限制不让保存原文件&#xff0c;只让保存一些分辨率很低的&#xff0c;非常模糊的图片…

leetcode简单题27 N.119 杨辉三角II rust描述

// 直接生成杨辉三角当前行 pub fn get_row(row_index: i32) -> Vec<i32> {let mut row vec![1; (row_index 1) as usize];for i in 1..row_index as usize {for j in (1..i).rev() {row[j] row[j] row[j - 1];}}row } // 空间优化的方法 pub fn get_row2(row_ind…

数据结构——线性表(循环链表)

一、循环链表定义 将单链表中终端结点的指针端由空指针改为指向头结点&#xff0c;就使整个单链表形成一 个环&#xff0c;这种头尾相接的单链表称为单循环链表&#xff0c;简称循环链表(circular linked list)。 循环链表解决了一个很麻烦的问题。如何从当中一 个结点出发&am…

stm32学习:(寄存器3)系统架构

时钟系统 时钟树 在STM32中有3种不同的时钟源用来驱动系统时钟(SYSCLK)&#xff1a; HSI振荡器时钟&#xff08;High Speed Internal oscillator&#xff0c;高速内部时钟&#xff09;HSE振荡器时钟&#xff08;High Speed External&#xff08;Oscillator / Clock&#xff…

RK3588读取不到显示器edid

问题描述 3588HDMIout接老的显示器或者HDMI转DVI接DVI显示器显示不了或者显示内容是彩色条纹,但是这种显示器测试过如果接笔记本或者主机是可以直接显示的。这一类问题是HDMI下的i2c与显示器通讯没成功,读取不到设备的edid。问题包括全志的H3 、AML的S905都有遇到 测试环境…

基于Web的特产美食销售系统的设计与实现

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

用太空办公桌spacedesk把废旧平板利用起来

正文共&#xff1a;1500 字 15 图&#xff0c;预估阅读时间&#xff1a;2 分钟 这些年积攒了不少电子设备&#xff0c;比如我现在手头上还有6部手机、4台电脑、2个平板。手机的话&#xff0c;之前研究过作为Linux服务器来使用&#xff08;使用UserLAnd给华为平板装个Linux系统&…

网络安全(含面试题版)

一、网络概念 网络&#xff1a;一组相互连接的计算机&#xff0c;多台计算机组成&#xff0c;使用物理线路进行连接 作用&#xff1a; 数据交换 资源共享 二、网络分类 计算机网络覆盖的地理区域决定了它的类型。一般分为局域网(LAN)、城域网(MAN)、广域网(WAN)。 三、www万维网…

分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法

前言 树形结构是一种很常见的数据结构&#xff0c;类似于现实生活中的树的结构&#xff0c;具有根节点、父子关系和层级结构。 所谓根节点&#xff0c;就是整个树的起始节点。 节点则是树中的元素&#xff0c;每个节点可以有零个或多个子节点&#xff0c;节点按照层级排列&a…

js | Core

http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ Object 是什么&#xff1f; 属性[[prototype]]对象。 例如&#xff0c;下面的&#xff0c;son是对象&#xff0c;foo不是对象。打印出来的son&#xff0c;能看到有一个prototype 对象。 prototype vs _proto_ v…

水利行业的智慧革命:深度剖析智慧水利解决方案,看其如何以科技力量提升水资源管理效率,保障水生态安全

目录 一、智慧水利的概念与内涵 二、智慧水利解决方案的核心要素 1. 感知层&#xff1a;全面监测&#xff0c;精准感知 2. 网络层&#xff1a;互联互通&#xff0c;信息共享 3. 平台层&#xff1a;数据分析&#xff0c;智能决策 4. 应用层&#xff1a;精准施策&#xff0…

django创建子应用、追加导包路径、默认用户模型类、自定义用户模型类、

一、创建用户模块子应用 1.准备apps包&#xff0c;用于管理所有应用 2.在apps包下创建应用users 查看项目导包路径 提示&#xff1a;若要知道如何导入users应用并完成注册&#xff0c;需要知道项目导包路径 已知导包路径&#xff1a;project/meiduo已知 users应用所在目录&…

好用的AI搜索引擎

1. 360AI 搜索 访问 360AI 搜索: https://www.huntagi.com/sites/1706642948656.html 360AI 搜索介绍&#xff1a; 360AI 搜索&#xff0c;新一代智能答案引擎&#xff0c;值得信赖的智能搜索伙伴&#xff0c;为复杂搜索提供专业支持&#xff0c;解锁更相关、更全面的答案。AI…

【Redis7】高阶篇

1 Redis单线程 VS 多线程(入门篇) 1.1 面试题 redis到底是单线程还是多线程&#xff1f; IO多路复用听说过吗&#xff1f; redis为什么快&#xff1f; 1.2 Redis为什么选择单线程&#xff1f; 1.2.1 是什么 这种问法其实并不严谨&#xff0c;为啥这么说呢? Redis的版本…

WebAssembly与JavaScript的交互(1)

前一阵子利用Balazor开发了一个NuGet站点&#xff0c;对WebAssembly进行了初步的了解&#xff0c;觉得挺有意思。在接下来的一系列文章中&#xff0c;我们将通过实例演示的方式介绍WebAssembly的一些基本概念和编程模式。首先我们先来说说什么是WebAssembly&#xff0c;它主要帮…

PCB(印制电路板)制造涉及的常规设备

印制电路板&#xff08;PCB&#xff09;的制造涉及多种设备和工艺。从设计、制作原型到批量生产&#xff0c;每个阶段都需要不同的专业设备。以下是一些在PCB制造过程中常见的设备&#xff1a; 1. 计算机辅助设计&#xff08;CAD&#xff09;软件&#xff1a; - 用于设计PC…

介绍三种大模型:自然语言处理(NLP)大模型-计算机视觉(CV)大模型-多模态大模型

自然语言处理&#xff08;NLP, Natural Language Processing&#xff09;大模型是人工智能领域的一个重要分支&#xff0c;专注于让计算机能够理解、生成和处理人类语言。这些大模型通常拥有海量的参数&#xff0c;通过深度学习和大规模数据集的训练&#xff0c;实现了对语言的…

java之 junit单元测试案例【经典版】

一 junit单元测试 1.1 单元测试作用 单元测试要满足AIR原则&#xff0c;即 A&#xff1a; automatic 自动化&#xff1b; I: Independent 独立性&#xff1b; R&#xff1a;Repeatable 可重复&#xff1b; 2.单元测试必须使用assert来验证 1.2 案例1 常规单元测试 1.…

EasyExcel 学习之 导出 “WPS 表格在试图打开文件时遇到错误”

目录 1. 版本2. 现象2.1. Postman 文件下载成功且 WPS 可以正常打开2.2. VUE 下载成功但 WPS 无法打开 3. 原因:前端未指定 responseType4. 常见问题4.1. NoSuchMethodError4.1.1. org.apache.logging.log4j.LogBuilder org.apache.logging.log4j.Logger.atTrace()4.1.2. Could…