DAY13:学习作业

定义结构体数组存储5个学生的信息:姓名,年龄,性别

  1. 定义函数实现输入,要求形参使用结构体指针接收

  2. 函数实现5个学生年龄排序(注意对年龄排序时,交换的是所有信息)

  3. 定义函数实现输出,要求形参使用结构体指针接收

#include <stdio.h>
#include <malloc.h>
#include <string.h>//创建学生结构体,name:名字;age:年龄;sex:性别(w:女性;m:男性)
typedef struct Stu{char name[10];int age;char sex;
}Stu,*PStu;Stu *creat(int num);void input(Stu *stu, int n);void sort(Stu *stu, int n);void output(Stu *stu, int n);int main (){//记录需要输入的学生信息个数int num;printf("请输入需要储存的学生的信息个数:");scanf("%d",&num);//调用创建结构体数组函数PStu stu = creat(num);//调用记录信息函数,再调用输出函数输出input(stu,num);output(stu,num);//调用成绩排序函数,再调用输出函数输出sort(stu, num);output(stu,num);//释放内存,指针指空free(stu);stu = NULL;return  0;
}
//创建结构体数组函数,num:结构体数组长度;返回值:开辟的结构体数组地址
Stu *creat(int num) {//动态分配空间PStu p = (Stu * )malloc(sizeof(Stu) * num);//判空if(NULL == p){printf("创建失败!\n");return NULL;}//返回地址return p;
}
//记录信息函数,stu:结构体数组首地址,n:数组长度
void input(Stu *stu, int n) {//判空if(NULL == stu) return;//循环输入值for (int i = 0; i < n; ++i) {printf("请输入第 %d 个学生的信息(男生:m;女生:w)\n",i + 1);scanf("%s %d %c",(stu + i)->name,&(stu + i)->age,&(stu + i)->sex);}
}
//成绩排序函数,stu:结构体数组首地址,n:结构体数组长度
void sort(Stu *stu, int n) {//判空if(NULL == stu) return;//交换容器Stu change;//选择排序for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {if((stu + i)->age > (stu + j)->age){strcpy(change.name,(stu + i)->name);change.age = (stu + i)->age;change.sex = (stu + i)->sex;strcpy((stu + i)->name,(stu + j)->name);(stu + i)->age = (stu + j)->age;(stu + i)->sex = (stu + j)->sex;strcpy((stu + j)->name,change.name);(stu + j)->age = change.age;(stu + j)->sex = change.sex;}}}
}//输出函数,stu:结构体数组首地址;n:结构体数组长度
void output(Stu *stu, int n) {//判空if(NULL == stu) return;//循环输出for (int i = 0; i < n; ++i) {printf("name : %-4s age : %-3d sex : %-3c\n",(stu + i)->name,(stu + i)->age,(stu + i)->sex);}printf("\n");
}


定义小车结构体,存储名称、价钱、颜色。定义两个变量a,b,初始化,实现ab互换。

#include <stdio.h>
#include <string.h>//小车结构体,name:名称;price:价格;color:颜色
typedef struct Car{char name[10];double price;char color[10];
}Car,*PCar;int main(){//初始化car1和car2Car car1 = {"aaa",13.5,"red"};Car car2 = {"bbb",20.1,"orange"};//打印初始信息printf("Car1 : name : %s price : %lf color : %s\n",car1.name,car1.price,car1.color);printf("Cae2 : name : %s price : %lf color : %s\n",car2.name,car2.price,car2.color);//定义交换容器Car p;//进行交换strcpy(p.name,car1.name);strcpy(p.color,car1.color);p.price = car1.price;strcpy(car1.name,car2.name);strcpy(car1.color,car2.color);car1.price = car2.price;strcpy(car2.name,p.name);strcpy(car2.color,p.color);car2.price = p.price;//打印结果printf("Car1 : name : %s price : %lf color : %s\n",car1.name,car1.price,car1.color);printf("Cae2 : name : %s price : %lf color : %s\n",car2.name,car2.price,car2.color);return 0;
}

思考一种数据结构与方法,创建一个单精度浮点型数组,存储N个单精度浮点型数据(即容量),写一个结构体与对应的函数,完成创建数组、放入数据、获取数组容量、获取数组内浮点数据个数四个函数,随后调用对应函数放入M(M<N)个单精度浮点数据(即1....M)

 

#include <stdio.h>
#include <malloc.h>
//宏定义数组最大长度
#define MAXSIZE 10
//Data结构体,len:数组长度;data:数组头地址
typedef struct Data{int len;float *data;
}Data,*PData;Data *creat(int i);void input(Data *data, int n);void output(Data *data, int n);int get_len(Data *data);int main(){//调用创建数组函数PData data = creat(MAXSIZE);//调用输入函数input(data,MAXSIZE);//调用求长度函数,用len接收返回值int len = get_len(data);printf("数组容量位 : %d\n",len);//记录想要输出数据个数int M;printf("你想输出几个数据:");scanf("%d",&M);//调用输出函数output(data,M);//手动释放空间,指针指空free(data->data);free(data);data = NULL;return 0;
}
//创建结构体函数,i:数组容量
Data *creat(int i) {//手动分配结构体内存PData p = (PData) malloc(sizeof(Data));//手动分配结构体内数组内存p->data = (float *)malloc(sizeof(float ) * i);//初始化数组长度p->len = 0;//判空if(NULL == p->data){printf("创建失败!\n");return NULL;}//返回结构体地址return p;
}
//输入函数,data:结构体地址,n:结构体内数组长度
void input(Data *data, int n) {//判空if(NULL == data) return;//循环记录数据printf("请输入 %d 个数据\n",n);for (int i = 0; i < n; ++i) {scanf("%f",data->data + i);//记录数组长度data->len++;}
}
//获取数组长度函数,data:结构体地址
int get_len(Data *data) {//判空if(NULL == data) return -1;//返回长度return data->len;
}
//输出函数,data:结构体地址;n:结构体内数组长度
void output(Data *data, int n) {//判空if(NULL == data) return;//循环输出数据for (int i = 0; i < n; ++i) {printf("第 %d 个数据是 : %.2f\n",i + 1,*(data->data + i));}
}

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

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

相关文章

一些线上常用排查问题的命令

排查CPU过高时使用到的一些命令 top free df top命令 top 命令是一个动态的实时视图&#xff0c;显示系统的整体运行状况&#xff0c;包括 CPU 使用率、内存使用情况、进程信息等。 free 命令 free 命令用于显示系统中物理内存和交换内存的使用情况。 df 命令 df 命令用…

如何从 Nutanix 迁移至 SmartX 超融合?解读 4 类迁移方案和 2 例迁移实践

2022 年底&#xff0c;Nutanix&#xff08;路坦力&#xff09;正式宣布将中国市场交由合作伙伴&#xff08;联想&#xff09;主导销售&#xff0c;并于 2023 年 8 月完成全面转型。转型后&#xff0c;虽然中国用户依旧可以使用 Nutanix 产品&#xff0c;但在软件的续保和维保方…

基于flask+vue框架的传染病防控酒店信息系统zvt93(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;患者,服务人员,病房类型,病房信息,病房分配,需求箱,商品分类,商品信息,购买商品,分配反馈,健康上报,患者信息,患者分配 开题报告内容 基于flaskvue框架的传染病防控酒店信息系统开题报告 一、项目背景 在全球公共卫生事件频发的背景下…

鸿蒙应用生态构建的核心目标

保护开发者和用户利益的同时维护整体系统的安全性&#xff0c;对生态构建者是至关重要的。以开发者为中心&#xff0c;构建端到端应用安全能力&#xff0c;保护应用自身安全、运行时安全&#xff0c;保障开发者权益&#xff0c;是鸿蒙应用生态构建的核心目标。 应用生命周期主要…

汽车焊机数据通信:Profinet转Canopen网关的神奇连接

在汽车制造领域&#xff0c;汽车焊机的高效、稳定运行对于整车质量至关重要。而Profinet转Canopen网关在汽车焊机的数据通信中发挥着关键作用。 Profinet是一种广泛应用于工业自动化领域的通信协议&#xff0c;具有高速、实时、可靠等特点。Canopen则在汽车电子等领域有着广泛…

【Qt笔记】QTabWidget控件详解

目录 引言 一、基本功能 二、核心属性 2.1 标签页管理 2.2 标签位置 2.3 标签形状 2.4 标签可关闭性 2.5 标签可移动性 三、信号与槽 四、高级功能 4.1 动态添加和删除标签页 4.2 自定义标签页的关闭按钮行为 4.3 标签页的上下文菜单 五、样式设置 六、应用示例…

【Linux入门】基本指令(一)

目录 一.使用环境 二.快捷键 三. 登录与用户管理 1.ssh root[ip地址] 2.whoami 3.ls /home 4.adduser [用户名] 5.passwd [用户名] 四.目录文件操作 1.ls 2.pwd 3.cd 4.touch 5.mkdir 6.rm 7.cp 五.命令手册 一.使用环境 云服务器&#xff1a;市面上有很多&am…

大厂里为什么都在运用精益六西格玛管理?

近年来&#xff0c;大型企业&#xff08;简称“大厂”&#xff09;为了保持其市场领先地位和持续盈利能力&#xff0c;不断探索并引入先进的管理理念和方法。其中&#xff0c;精益六西格玛管理作为一种综合性的质量管理和流程优化工具&#xff0c;正被越来越多的企业所采用。本…

Junit与Spring Test简单使用

Junit与Spring Test简单使用 Junit5简介Junit5 注解Junit5与Spring结合 差异概览MockingMockBeanSpyBeanDemo 注意事项 又要写测试代码了&#xff0c;总结记录一下。 Junit5简介 与单一模块设计的Junit4不同,Junit5引入了模块化架构,由三个主要子项目组成&#xff1a; JUnit Pl…

九芯电子NRK330X智能风扇离线语音控制方案

随着科技的快速发展&#xff0c;离线语音识别技术逐渐成为智能家居领域的重要组成部分。它能够将人类的语音转化为计算机可识别的数字信号&#xff0c;并在不需要联网的情况下&#xff0c;从而实现对各种设备的智能控制。在NRK330X智能风扇方案中&#xff0c;这一技术得到了广泛…

后端原型设计

一&#xff1a;导航设计 1.1 横向导航栏 常用于浏览器对客的系统。 1.2 纵向导航栏 纵向导航左边可以进行一级菜单和二级菜单&#xff0c;每个二级菜单右边还可以继续再使用标签栏进行导航三级分类。 头条号和CSDN都是采用该方式。 1.3 横纵结合导航栏 横向为一级菜单&…

Vue3.0组合式API:使用ref获取DOM元素

Vue3.0组合式API系列文章&#xff1a; 《Vue3.0组合式API&#xff1a;setup()函数》 《Vue3.0组合式API&#xff1a;使用reactive()、ref()创建响应式代理对象》 《Vue3.0组合式API&#xff1a;computed计算属性、watch监听器、watchEffect高级监听器》 《Vue3.0组合式API&…

IDA Pro基本使用

IDA Pro基本使用 通过以下问题熟练掌握IDA Pro的使用 1.DllMain的地址是什么? 2.使用Imports 窗口并浏览到 gethostbyname&#xff0c;导入函数定位到什么地址? 3.有多少函数调用了gethostbyname? 4.将精力集中在位于0x10001757处的对 gethostbyname 的调用,你能找出哪个 D…

基于springboot+vue的教师薪酬管理系统(全套)

传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;老师信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大用户的…

2024年汉字小达人区级自由报名备考冲刺:2024官方模拟题练一练

2024年第十一届汉字小达人的区级活动的时间9月25-30日正式开赛&#xff0c;不到一周就开始了。 如何最后冲刺汉字小达人比赛&#xff1f;根据我的经验&#xff0c;精准备考还是有希望的&#xff0c;也可以把这个比赛当做一个“练兵”——以赛促学&#xff0c;通过参加比赛的准…

找不到msvcp110dll怎么办,总结六种解决msvcp110dll丢失的方法

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“找不到msvcp110.dll”。这个问题通常是由于缺少或损坏了msvcp110.dll文件所引起的。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何解决呢&#xff1f;本文将总结5个解决msvcp…

使用在线白板进行远程产品开发,客户量瞬间翻十倍!

自 2020 年新冠疫情爆发以来&#xff0c;各行各业都遭遇了前所未有的挑战。突如其来的隔离和封控措施让许多员工无法按时到公司上班。在这样的背景下&#xff0c;远程办公的需求迅速上升&#xff0c;协作白板成为了远程产品开发的新宠&#xff0c;为许多工程师提供了一个全新的…

MarsCode AI 一款免费的代码辅助工具,值得一试

更多请关注微信公众号&#xff1a;IT技术馆 MarsCode是一个功能强大的AI编程工具&#xff0c;由字节跳动旗下的公司推出&#xff0c;旨在提升开发者的编码效率和质量。以下是对MarsCode的详细解析&#xff1a; 地址&#xff1a; https://docs.marscode.cn/docs/introduction …

解决VSCode中Eslint插件无法自动折行的问题

问题描述 在.eslintrc.cjs 文件中写入了如下配置 代码过长时会出现黄色波浪线报错 但Ctrls保存却不能自动折行 具体表现是短时间内出现两次格式化&#xff0c;第一次格式化会将长代码自动拆行成短代码&#xff0c;但第二次格式化又将短代码变回了长代码&#xff08;按Ctrlz可…

一文彻底搞懂大模型 - OpenAI o1(最强推理模型)

OpenAI o1 OpenAI o1于2024年9月13日正式发布&#xff0c;作为OpenAI最新发布的最强推理模型&#xff0c;标志着AI行业进入了一个新时代。o1在测试化学、物理和生物学专业知识的基准GPQA-diamond上&#xff0c;全面超过了人类博士专家&#xff0c;OpenAI宣称“通用人工智能(AG…