CExercise_09_结构体和枚举_2VS的Debug模式查看它的内存布局,采用结构体数组的方式存储信息,调用函数打印结构体数组.
题目:
下面结构体类型的变量的内存布局是怎样的?请使用VS的Debug模式查看它的内存布局
typedef struct stundent_s {int number;char name[25];char gender;int chinese;int math;int english;
} Student;
// 结构体对象的声明和初始化 Student s1 = { 1, “Jack”, ‘m’, 100, 100, 100 };
要求:截图展示内存窗口中的对齐填充,然后提交截图。第二题:
基于上述的结构体类型的定义,实现以下功能:
1.从键盘输入5个学生的信息,将这些同学的信息采用结构体数组的方式存储起来。(代码直接写在main函数里)
2.编写一个函数,用于打印单个结构体信息。然后在main函数里调用该函数,打印这个结构体数组。
3.编写一个函数,用于求三个学科的平均分。然后在main函数里调用该函数,打印这三个学科的平均分。
关键点
分析:
:
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>#define MAX_BOOKS 10
#define TITLE_LENGTH 100
#define AUTHOR_LENGTH 50// 定义书籍类别的枚举类型
typedef enum {SCIENCE_FICTION, // 科幻LITERATURE, // 文学HISTORY, // 历史TECHNOLOGY, // 科技OTHER // 其他
} Genre;// 定义书籍结构体类型
typedef struct {int id;char title[TITLE_LENGTH];char author[AUTHOR_LENGTH];Genre genre;
} Book;void print_book_info(Book *books, int count); // 打印所有书籍信息
void find_books_by_genre(Book *books, int count, Genre genre); // 根据书籍类别打印书籍
char *get_genre_name(Genre genre); // 将书籍类别的枚举值转换成中文表示的类别int main() {Book books[MAX_BOOKS] = {{1, "三体", "刘慈欣", SCIENCE_FICTION},{2, "红楼梦", "曹雪芹", LITERATURE},{3, "中国通史", "吕思勉", HISTORY},{4, "时间简史", "史蒂芬·霍金", TECHNOLOGY},{5, "围城", "钱钟书", LITERATURE},{6, "傲慢与偏见", "简·奥斯汀", LITERATURE},{7, "呼啸山庄", "艾米莉·勃朗特", LITERATURE},{8, "活着", "余华", LITERATURE},{9, "明朝那些事儿", "当年明月", HISTORY},{10, "乌合之众", "古斯塔夫·勒庞", OTHER}};int count = MAX_BOOKS;// 打印所有书籍的信息print_book_info(books, count);// 用户输入书籍类别编号并查找该类别的书籍int genre;printf("请输入书籍类别编号 (0: 科幻, 1: 文学, 2: 历史, 3: 科技, 4: 其他)来查询书籍: ");scanf("%d", &genre);find_books_by_genre(books, count, (Genre)genre);return 0;
}// 打印所有书籍的信息
void print_book_info(Book *books, int count) {printf("---------------所有的书籍信息---------------\n\n");for (int i = 0; i < count; i++) {printf("编号: %d, 书名: %s, 作者: %s, 类别: %s\n",books[i].id, books[i].title, books[i].author, get_genre_name(books[i].genre));}printf("\n");
}// 根据书籍类别查找并打印该类别的所有书籍信息
void find_books_by_genre(Book *books, int count, Genre genre) {printf("类别为 %s 的书籍有:\n", get_genre_name(genre));for (int i = 0; i < count; i++) {if (books[i].genre == genre) {printf("编号: %d, 书名: %s, 作者: %s\n",books[i].id, books[i].title, books[i].author);}}
}// 将书籍类别的枚举值转换成中文表示的类别
const char *get_genre_name(Genre genre) {switch (genre) {case SCIENCE_FICTION: return "科幻";case LITERATURE: return "文学";case HISTORY: return "历史";case TECHNOLOGY: return "科技";case OTHER: return "其他";default: return "未知";}
}
解决方案总结:
:
相关文章:
CExercise_09_结构体和枚举_2VS的Debug模式查看它的内存布局,采用结构体数组的方式存储信息,调用函数打印结构体数组.
题目: 下面结构体类型的变量的内存布局是怎样的?请使用VS的Debug模式查看它的内存布局 typedef struct stundent_s {int number;char name[25];char gender;int chinese;int math;int english; } Student;// 结构体对象的声明和初始化 Student s1 { 1, …...
SSRF漏洞技术解析与实战防御指南
一、SSRF漏洞简介 服务端请求伪造(Server-Side Request Forgery, SSRF) 是一种攻击者通过操控服务端发起非预期网络请求的安全漏洞。攻击者利用目标服务器的权限,构造恶意请求访问内网资源、本地系统文件或第三方服务,可能导致…...
CVA6:支持 Linux 的 RISC-V CPU CORE-V
RISC-V 是一种开源的可扩展指令集架构 (ISA),在过去几年中广受欢迎。RISC-V 的主要特性之一是它采用整体架构中性设计,支持浮点运算、加载存储架构、符号扩展加速和多路复用器简化。这使得 RISC-V 成为 FPGA 上软处理器的经济实惠的选择。自 RISC-V ISA …...
水文-用 Coze 工作流打造你的自媒体写作工厂
零代码水文神器:用 Coze 工作流打造你的自媒体写作工厂 作为一个每天被 KPI 追着跑的自媒体运营人,你是不是也常常在想: “这篇文章换个标题就能发第二遍,能不能自动来?” 现在,用 Coze 工作流,…...
轻奢宅家|约克VRF带你畅享舒适居家体验
下班回到家最期待什么?当然是一阵阵沁人心脾的舒适感扑面而来啦! 想要从头到脚都舒服自在?答案就在眼前——就是它!约克VRF中央空调! 约克VRF中央空调独特的臻静降噪技术,让空调运行音轻…...
uniapp微信小程序图片生成水印
整体思路: 用户通过uni.chooseImage选择图片后,获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息,也就是图片宽高。图片宽高等比缩放至指定大小,不然手机处理起来非常久,因为手机随便拍拍就很大。…...
不用额外下载jar包,idea快速查看使用的组件源码
以nacos为例子,在idea中引入了nacos依赖,就可以查看源码了。 2. idea选择open(不关闭项目直接选择file-open也可以), 在maven的仓库里找到对应的包,打开 2.idea中选择 jar包,选择 add as library 3.这样j…...
网络层-IP地址计算
例1:IP地址二进制与十进制互转 题目: 将二进制IP 11000000.10101000.00000001.00001010 转换为点分十进制。将IP地址 172.16.254.1 转换为二进制格式。 答案与解析: 转换步骤: 每个8位二进制转为十进制: 11000000 →…...
网络通讯协议UDP转发TCP工具_UdpToTcpRelay_双向版
UDP/TCP网络转发器程序说明书 1. 程序概述 本程序是一个高性能网络数据转发工具,支持UDP和TCP协议之间的双向数据转发,并具备以下核心功能: 协议转换:实现UDP↔TCP协议转换数据转换:支持十六进制/ASCII格式的数据转…...
DIA——边缘检测
1.边缘 边缘是像素的突变位置。 2.常见边缘检测算法 通过找到一阶导数的极值点或者二阶导数的过零点来确定边缘像素的位置。边缘检测通常使用算子,即特定的卷积核。通过差分对离散的像素点求导,然后转化成卷积核进行卷积。使用卷积统一涵盖求导&…...
【万象论坛】论坛系统测试报告
一、项目背景 1.1项目起因 在当今数字化浪潮下,互联网技术呈爆发式发展,新技术、新框架、新应用场景不断涌现。从大型企业的数字化转型到初创公司的技术创新,各个层面都离不开互联网技术的支撑。然而,技术人员在学习与工作过程中…...
【AI工具】FastGPT:开启高效智能问答新征程
前言 在人工智能飞速发展的当下,各类 AI 工具如雨后春笋般涌现。FastGPT 作为一款基于大语言模型(LLM)的知识图谱问答系统,凭借其强大的数据处理和模型调校能力,为用户带来了便捷的使用体验。今天,就让我们…...
华为数字芯片机考2025合集1已校正
单选 1.以下低功耗措施中,哪种不是降低电路翻转率的方法? A.在不进行算术运算的时候,使这些模块的输入保持不变,不让新的操作数进来 B.采用Gray 码或One‐hot 码作为状态机编码 C.减少电路中的glitch D.重新安排“if‐else”表达…...
【TS学习】(23)理解类的双重角色
在 TypeScript 中,类(class)不仅是一个运行时的值(即可以实例化对象的构造函数),同时也是一个类型声明。具体来说,类在 TypeScript 中既声明了值,也声明了类型,并且它的类…...
多模态大模型在目标检测领域的最新进展
1. 技术融合创新 多模态数据融合: 传感器融合:整合图像、激光雷达(LiDAR)、毫米波雷达等数据,提升检测精度和鲁棒性。例如,在自动驾驶中,通过融合视觉与LiDAR数据,实现三维目标检测…...
HackMyVM - todd记录
HackMyVM - toddhttps://mp.weixin.qq.com/s/E_-hepdfY-0veilL1fl2QA...
bash脚本手动清空mysql表数据
文章目录 1、bash脚本手动清空mysql表数据 1、bash脚本手动清空mysql表数据 #!/bin/bash# 配置区域(修改此处) MYSQL_USER"root" MYSQL_PASSWORD"123456" MYSQL_HOST"localhost" DATABASES("hps-base:base_test_ite…...
【完整可用】使用openhtmltopdf生成PDF(带SVG)
文章目录 前言OpenHTMLToPDF 简介maven配置依赖字体文件demo代码其他资源放置截图防止maven编译字体文件 前言 AI和网上都是跑不起来或者版本过低的,还有各种BUG的。本文都是查阅官方文档得出的。如果你能跑起来请给个大大的赞! OpenHTMLToPDF 简介 Ope…...
CTF web入门之爆破
爆破 web21: 打开burp进行抓包 通过对密码进行解析。得知密码是由拼接而来 admin:1 选择要攻击的参数 攻击方式。 选择payload方式 。。添加参数 1,2,3。账号 分隔符 密码 选择加密方式。添加buse64.去掉url字符。不然buse64后,会在u…...
Java学习——day26(线程同步与共享资源保护)
文章目录 1. 线程同步与共享资源保护概述1.1 多线程安全问题1.2 解决方案:线程同步 2. 线程同步的常用方式2.1 使用 synchronized 关键字2.2 使用 ReentrantLock 3. 实践:多线程计数器示例4. 实践说明与运行步骤5. 总结与思考6.今日生词 1. 线程同步与共…...
用PHPExcel 封装的导出方法,支持导出无限列
用PHPExcel 封装的导出方法,支持导出无限列 避免PHPExcel_Exception Invalid cell coordinate [1 异常错误 /*** EXCEL导出* param [string] $file_name 保存的文件名及表格工作区名,不加excel后缀名* param [array] $fields 二维数组* param [array] $…...
7-openwrt-one通过web页面配置访客网络、无线中继等功能
前几个章节一直在介绍编译、分区之类的,都还没正常开始使用这个路由器的wifi。默认wifi是没有启动的,前面还是通过手动修改uci配置启动的,这个章节介绍下官方web页面的使用。特别是访客网络、无线中继 1、开启wifi,配置wifi基本信息 我们使用有线连接路由器,通过192.168.…...
Android使用声网SDK实现音视频互动(RTC)功能
一、前期准备 1、注册声网账号 声网官网 2、创建项目 拿到AppID,主要证书 二、代码部分 先上一下官方提供的demo地址: Agora-RTC-QuickStart: 此仓库包含 Agora RTC Native SDK 的QuickStart示例项目。 - Gitee.comhttps://gitee.com/agoraio-comm…...
FPGA_modelsim错误总结
1, 使用modelsim仿真DDR3报错Module ‘SIP_PHY_CONTROL‘ is not defined 在配置ddr3的时候vivado 速度太慢了,所以选用modelsim。我的是2018.3vivado,modelsim用了10.4 但是不行报错 然后看了帖子说 questasim可以下载了还是报错。 然后又…...
CExercise_09_2动态拼接字符串_1字符串拼接
题目: 标准库函数strcat会将一个字符串追加到另一个字符串的末尾。 现在我们编写一个函数把两个字符串拼接起来,返回拼接的结果,但要求不改变其中任何一个字符串。其函数声明如下: char* my_strcat(const char* prefix, const cha…...
【愚公系列】《高效使用DeepSeek》063-海关数据获取和管理
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
了解 DeFi:去中心化金融的入门指南与未来展望
去中心化金融,或 DeFi,代表着全球金融体系运作方式的革命性转变。它是一个总称,指的是一个不断增长的去中心化应用程序(dapp)、协议和平台生态系统,这些生态系统构建在公共区块链网络上,无需传统…...
Python爬虫第10节-lxml解析库用 XPath 解析网页
目录 引言 一、XPath简介 二、XPath常用规则 三、实例讲解 四、节点的选取 4.1 所有节点的选取 4.2 子节点的选取 4.3 父节点选取 五、属性匹配获取及文本获取 5.1 属性匹配 5.2 文本获取 5.3 属性获取 5.4 属性多值匹配 5.5 多属性匹配 六、按序选择 七、节点…...
Python基础知识点(类和对象)
""" 编程思维---解决问题的方式方法 面向过程---C语言 面向对象---C java python python中封装类的语法 class 类名(父类) 类体 注意: 1.类名--约定 大驼峰法 首字母要大写 2.父类如果有的话就写,没有的话…...
【LeetCode 热题100】139:单词拆分(动态规划全解析+细节陷阱)(Go语言版)
🚀 LeetCode 热题 139:单词拆分(Word Break)| 动态规划全解析细节陷阱 📌 题目描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请判断 s 是否可以由字典中出现的单词拼接成。 说明:不要求字典…...
