2024-2025-1 20241403 《计算机基础与程序设计》第十三周学习总结

news/2024/12/20 21:36:01/文章来源:https://www.cnblogs.com/chenqiqi/p/18620000

2024-2025-1 20241403 《计算机基础与程序设计》第十三周学习总结

作业信息

这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)
这个作业的目标 结构体的定义 结构体数组的定义和初始化 结构体指针定义和初始化 向函数传递结构体 共用体 枚举数据类型 动态数据类型 单向链表
作业正文 https://www.cnblogs.com/chenqiqi/p/18620000

教材学习内容总结

结构体的定义
结构体是一种复合数据类型,它允许将多个不同类型的数据组合成一个单一的类型。结构体的定义以struct关键字开始,后跟结构体的名称,然后是一对花括号,其中包含一系列的成员声明。

结构体数组的定义和初始化
结构体数组是存储多个相同类型结构体的数组。定义结构体数组时,需要指定数组的大小。结构体数组的初始化可以在定义时完成,通过为每个结构体成员指定初始值。

结构体指针定义和初始化
结构体指针是指向结构体的指针。定义结构体指针时,使用结构体类型和星号(*)。结构体指针可以被初始化为指向已存在的结构体实例,或者动态分配内存来创建新的结构体实例。

向函数传递结构体
结构体可以通过值传递或引用传递给函数。值传递会复制整个结构体,而引用传递(即指针传递)则允许函数直接修改原始结构体。

共用体
共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。共用体的定义与结构体类似,但是共用体的所有成员共享同一块内存空间。

枚举数据类型
枚举是用户定义的类型,它为一组整数值提供了有意义的名称。枚举的定义以enum关键字开始,后跟枚举的名称(可选),然后是一对花括号,其中包含一系列的枚举常量。

动态数据类型
动态数据类型指的是在程序运行时动态分配和释放的数据类型。这通常通过标准库函数malloc、calloc、realloc和free来实现。动态内存管理允许程序在运行时根据需要分配和释放内存。

单向链表
单向链表是一种线性数据结构,由节点组成,每个节点包含数据部分和一个指向下一个节点的指针。单向链表的头节点指向链表的第一个元素,而最后一个节点的指针通常设置为NULL。单向链表支持在链表的任何位置插入和删除节点。

教材学习中的问题和解决过程(先问 AI)

  • 问题1:共用体和结构体的区别
  • 问题1解决方案:
    共用体(Union)和结构体(Struct)在C语言中都是复合数据类型,但它们之间有几个关键的区别:
    内存占用:
    结构体:结构体中的所有成员都有自己的内存空间。即使它们是同一类型的数据,也会分别存储。
    共用体:共用体的所有成员共享同一块内存空间。这意味着在任何时候,只能使用共用体的一个成员,因为它们在内存中是重叠的。

成员访问:
结构体:可以同时访问结构体的所有成员,它们是独立的。
共用体:虽然可以定义多个成员,但任何时候只能使用一个成员,因为它们共享内存。访问一个成员可能会覆盖其他成员的值。

大小:
结构体:结构体的大小是其所有成员大小的总和,加上可能的填充(padding)以满足对齐要求。
共用体:共用体的大小等于其最大成员的大小,因为它们共享内存空间。

用途:
结构体:用于需要存储多个不同类型数据项的情况,这些数据项可以同时被访问。
共用体:用于节省空间的情况,或者当你需要存储几种不同类型的数据,但在同一时间只需要使用其中一种类型。

初始化:
结构体:可以初始化所有成员。
共用体:只能初始化一个成员,因为所有成员共享内存。

数组和指针:
结构体:可以创建结构体数组和指向结构体的指针,这使得处理多个结构体实例变得容易。
共用体:也可以创建共用体数组和指向共用体的指针,但由于成员共享内存,使用时需要特别注意。

成员对齐:
结构体:编译器可能会在结构体成员之间插入填充字节,以满足特定的对齐要求。
共用体:由于成员共享内存,通常不会有额外的填充,除非编译器为了对齐整个共用体而添加。

基于AI的学习

代码调试中的问题和解决过程

  • 问题1:当再次打开程序,输入输入学生信息时,重新输入的学生信息会把之前旧的学生信息替代掉。

  • 问题1解决方案:
    在新添加学生信息时,多加一个变量“total”表示之前学生的人数,先把之前的学生信息读出来,然后在Readstu函数调用时从“stu+之前学生人数”这个位置开始调用,并且在把学生信息存入文件时,学生个数为“新添加学生人数+旧的学生人数”,改后代码如下:

  • 问题2:在写Sort函数中需要交换数据,我一开始是把结构体中的数据一个个交换,这样写代码显得很冗杂。

  • 问题2解决方案:定义一个结构体变量temp,可以直接交换结构体。

其他(感悟、思考等,可选)

我现在的代码比之前进步了很多,但是在第一次调试时还是会有一些语法错误,所以我应该多加练习,争取不再出现语法错误。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第十三周 500/6000 1/13 20/20
第十四周 0/6500 0/14 18/38
第十五周 0/7000 0/15 22/60

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中所有子图标签Legend显示详解

在数据可视化中,图例(legend)是一个非常重要的元素,它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时,matplotlib库是一个非常强大的工具,能够轻松创建包含多个子图的图表,并在每个子图中显示图例。本文将详细介绍如何在Python的matplotlib库中…

gtest简单用法

当前开发环境中,无法把测试代码提交到仓库,所以单测另起一个目录 . ├── gtest │ ├── CMakeLists.txt # 这是最外层的cmake,用以管理所有内部的cmake │ └── sample_test # 这是sample_src对应的测试用例,该目录下有一个单独的cmake │ ├── CMakeList…

跨境电商速卖通实训教学平台课程题库答案

近年来,随着全球化的不断加深与国际电子商务市场的蓬勃发展,中国的跨境电商产业进入了迅猛增长期。速卖通作为阿里集团推出的跨境电商交易平台之一,在全球尤其是俄罗斯市场占据了显著地位,其交易规模的持续增长吸引了众多企业和个人投身其中。在此背景下,对具有速卖通专业…

20222418 2024-2025-1《网络与系统攻防技术》实验八实验报告

1.实验内容 (1)Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 (2)Web前端javascipt 理解JavaScript的基本功能,理解DOM。 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+…

Java 基础概览

1. Java 语言概述 1.1 Java 简史 Java是一种高级程序设计语言,由SUN(Stanford University Network,斯坦福大学网络公司)公司于1995年推出,James Gosling设计Java语言,并开发了Java编译器和Java虚拟机,因此也被人尊称为“Java 之父”。SUN公司在2009年被Oracle(甲骨文)…

Linux学习笔记(一) Linux目录结构

下图显示的为Linux中的目录结构:/bin[常用](/usr/bin、/usr/local/bin) 是Binary(二进制)的缩写,这个目录存放着经常使用的命令。 /sbin(/usr/sbin、/usr/local/sbin) s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home[常用] 存放普通用户的家目…

数据库审计与监控

title: 数据库审计与监控 date: 2024/12/20 updated: 2024/12/20 author: cmdragon excerpt: 数据库审计与监控是确保数据库安全性和性能的关键环节。通过实施有效的审计策略,可以追踪用户活动,监控数据访问与修改,从而及时发现潜在的安全威胁和性能瓶颈。探讨数据库审计的基…

Java实现单词的翻译(详解爬虫操作)

JAVA通过Crawler实现英语单词的翻译首先声明一点,这种方法仅限于低频次的交互来获取翻译信息,一旦一秒内大量的请求会被重定向,那就直接不能用了 如果希望可以批量查询英语单词翻译,可以查看我的下一篇博客。接着我们上一讲Java如何用HaspMap统计次数并排序详解 - ivanlee7…

实用工具:Calibre 7.22最新版 一款Window电子书管理工具和阅读器便携版

📢提示:文章排版原因,链接放在文章结尾👇👇,往下翻就行 📢提示:文章排版原因,链接放在文章结尾👇👇,往下翻就行 前言 初识Calibre 最近有几本epub格式的电子书要看发现电脑上没有可以打开的软件,所以最近找到了这个软件。功能 功能亮点电子书管理:Calib…

VS2022 C++QT 中文乱码 设置UTF-8编码

说明 所有内容来源于网络 通过插件调整源文件编码FileEncoding:查看编码 Force UTF-8:用于保存为UTF-8 C++项目设置为utf-8 项目-属性-配置属性-C/C++-命令行-其它选项 中 增加/utf-8、

雷池 WAF 配置了多条人机验证规则,命中规则是怎样的?

优先级说明 频率限制(1 小时) > 自定义规则(1 小时) > 站点 BOT 防护(自定义时长) 配置人机验证的地方 【防护配置-频率限制】限制结果选择【人机验证】【防护配置-自定义规则】规则类型选择【人机验证】【防护站点-站点管理】的【BOT 防护】中开启【人机验证】命中…

如何在C#.NET中使用LINX(arduino的LabView库)

思路:使用LabView的导出为.NET互操作程序集,导出COM给.NET调用在LabView安装HubMaker插件,将预编译固件刷入Arduino设备中。这不是本文的重点,省略 根据需要,编写VI。注意:必须在此处使用全局变量或者其它方法避免LinxResource簇在C#中出现,否则在程序运行时有概率出现堆…