2024-2025-1(20241321)《计算机基础与程序设计》第十二周学习总结

news/2024/12/15 13:16:34/文章来源:https://www.cnblogs.com/guchuang/p/18607859
这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第十二周作业)
这个作业的目标 <深刻学习C语言,反思一周学习,温故知新>
作业正文 ... 本博客链接https://www.cnblogs.com/guchuang/p/18607859

教材学习内容总结

📚 第12章 结构体和共用体

  • 12.1 从基本数据类型到抽象数据类型
    • 介绍了从基本数据类型到抽象数据类型的过渡。
  • 12.2 结构体的定义
    • 12.2.1 为什么要定义结构体类型
    • 12.2.2 结构体变量的定义
    • 12.2.3 用 typedef 定义数据类型
    • 12.2.4 结构体变量的初始化
    • 12.2.5 嵌套的结构体
    • 12.2.6 结构体变量的引用
    • 12.2.7 结构体所占内存的字节数
  • 12.3 结构体数组的定义和初始化
    • 12.3.1 结构体数组的定义
    • 12.3.2 结构体数组的初始化
  • 12.4 结构体指针的定义和初始化
    • 12.4.1 指向结构体变量的指针
    • 12.4.2 指向结构体数组的指针
  • 12.5 向函数传递结构体
  • 12.6 共用体
  • 12.7 枚举数据类型
  • 12.8 动态数据结构——单向链表
    • 12.8.1 问题的提出
    • 12.8.2 链表的定义
    • 12.8.3 单向链表的建立
    • 12.8.4 单向链表的删除操作
    • 12.8.5 单向链表的插入操作
  • 12.9 本章知识点小结
  • 12.10 本章常见错误小结
  • 习题12
  • 本章实验题

📁 第13章 文件操作

  • 13.1 文件的打开和关闭
  • 13.2 二进制文件和文本文件
  • 13.3 按字符读写文件
  • 13.4 按格式读写文件
  • 13.5 按数据块读写文件
  • 13.6 本章扩充内容
    • 13.6.1 文件的随机读写
    • 13.6.2 标准输入/输出重定向
  • 13.7 本章知识点小结
  • 13.8 本章常见错误小结
  • 习题13
  • 本章实验题

📑 附录

  • 附录A C关键字
  • 附录B Visual C++下基本数据类型的取值范围
  • 附录C C运算符的优先级与结合性
  • 附录D 常用字符与ASCII值对照表
  • 附录E 常用的ANSI C标准库函数
  • 参考文献

教材学习中的问题和解决过程

问题一:使用结构体的好处
解决方案:老师讲解
结构体(Structure)是一种数据类型,它允许你将多个不同或相同类型的数据组合成一个单一的数据类型。在C语言中,结构体是用户定义的类型,它使得你可以将相关的数据项封装在一起,这些数据项称为结构体的成员。
结构体的意义包括但不限于以下几点:
1. 数据封装:结构体可以将相关的数据项组合在一起,形成一个有意义的整体。例如,你可以将一个人的姓名、年龄和地址封装在一个结构体中。
2. 数据抽象:结构体提供了一种方式来隐藏实现细节,只暴露必要的接口。这有助于减少程序各部分之间的耦合度,并提高代码的可维护性。
3. 数据组织:结构体可以帮助你以一种逻辑上有意义的方式组织数据,使得数据的管理和使用更加方便。
4. 数据复用:通过定义结构体,你可以在程序的不同部分复用相同的数据结构,而不需要每次都重新定义相同的数据类型。
5. 内存效率:结构体允许你精确地定义存储需求,避免不必要的内存浪费。
6. 访问控制:虽然C语言本身不支持访问控制(如private和public),但通过良好的编程实践,你可以使用结构体来模拟访问控制,比如将某些成员定义为私有的,仅在结构体内部的函数中访问它们。
7. 函数参数:结构体可以作为函数的参数传递,这样可以一次性传递多个相关的数据项,而不是单独传递每个数据项。
8. 易于理解和使用:使用结构体可以使代码更加易于理解和使用,因为结构体名称和成员名称可以清晰地描述数据的含义。
9. 灵活性:结构体可以根据需要定义任意数量和类型的成员,这为数据的表示提供了极大的灵活性。
10. 与硬件结构对应:在嵌入式编程和操作系统开发中,结构体可以用来定义与硬件或操作系统结构对应的数据结构,以便于程序与硬件或操作系统交互。
总的来说,结构体是C语言中一种非常强大的特性,它使得数据管理和程序设计变得更加灵活和高效。
问题二:我看了这一段文字 “在进行文件读写操作时,处理文件指针的位置非常重要。”,有这个问题:如何有效地管理文件指针,避免读取或写入错误?
解决方案:AI学习
初始化指针位置
在打开文件后,根据需求将文件指针定位到合适的初始位置。比如,若想从头开始读取文件内容,通常可以使用相应编程语言提供的定位函数(在 C 语言中可使用fseek函数结合SEEK_SET宏将指针定位到文件开头),确保后续操作从正确的起点开始,避免出现跳过部分数据或者重复读取等错误情况。
按顺序操作并及时更新指针位置
顺序读取或写入:如果是按顺序依次读取或写入文件内容,在每完成一次读取或写入操作后,文件指针通常会自动向后移动相应的字节数(例如在大多数编程语言中按字符或按行读取时会自动更新指针位置)。但要注意别在操作过程中随意打乱顺序,除非明确知晓这样做不会引发错误且后续能正确管理指针。
非顺序操作后更新指针:当进行了非顺序的读取或写入,比如想要跳转到文件中间某个特定位置去读写时,使用合适的定位函数准确移动指针后,要牢记这次操作,保证后续读写操作与之相匹配,继续按照新的指针位置正确进行,避免出现数据错位的情况。
记录指针位置
对于较为复杂的文件操作场景,比如需要在不同部分来回切换读写时,可以通过变量或者数据结构记录文件指针的关键位置。例如在处理一个既有配置信息头部,又有大量数据记录部分的文件时,在读完配置信息后记录此时的指针位置,后续若需要再次回到该位置读取相关配置来对照处理数据部分,就能准确地通过记录的位置将指针移回去。
检查指针合法性
在每次准备基于指针进行读写操作前,要检查指针是否处于合法的范围。比如,防止指针超出文件末尾还继续尝试读取数据(在 C 语言中可通过ftell函数获取当前指针位置,与文件长度进行对比判断是否越界),或者指向了文件还未开辟的区域进行写入等情况,若发现指针位置不合法,应及时进行调整或者采取相应的错误处理措施,如提示用户文件格式有误等。
正确关闭文件
在完成对文件的所有读写操作后,要及时关闭文件。关闭文件操作不仅能释放相关系统资源,很多编程语言在关闭文件时还会确保文件指针被正确重置或者相关的缓冲数据被妥善处理,避免因意外情况(比如程序异常退出但文件指针处于混乱状态)导致下次再打开该文件操作时出现错误。例如在 Python 中使用with语句来操作文件,它能自动确保文件在使用完后被正确关闭,同时保证内部文件指针相关状态正常结束。
了解不同模式下指针行为
文件打开时有多种模式,如只读、只写、读写等不同模式,不同模式下文件指针的行为特点是不一样的。例如在只读模式下不能进行写入操作且指针移动是基于读取行为,而读写模式下既能读取又能写入,但要特别留意写入操作对后续读取以及指针位置带来的影响。要熟悉所选用模式下文件指针的正常表现,按照规范来操作,减少因模式与操作不匹配引发的错误。

心得:要以机器语言学习

基于AI的学习

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第六周 400/2700 1/12 4/37

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

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

相关文章

Jmeter接口测试-图片验证码的识别

Jmeter接口测试-对图片验证码的识别Jmeter接口测试-对验证码的识别 ## 大概说一下思路,以及方法,我的接口接口的返回值是img/base64编码的,我采用的是OCR Server识别,获取返回值,图片保存到本地,再图片转码base64,之后携带数据请求OCR识别。(网上的办法是接口这种base6…

yolo导出,动态batch,固定图片尺寸

当使用export,dynamic=True时,batch和尺寸都是动态的。若想只有batch动态

如何在PbootCMS中实现自动清理runtime缓存?

要在PbootCMS中实现自动清理runtime缓存,可以按照以下步骤操作:编辑控制器文件:打开文件 /apps/home/controller/ExtLabelController.php。 找到以下代码:php// 测试扩展单个标签 private function test() {$this->content = str_replace({pboot:userip}, get_user_ip()…

如何修改自动清理脚本的清理间隔时间?

如果你想修改自动清理脚本的清理间隔时间,可以在控制器文件中调整 expire_time 的计算方式。以下是具体步骤:编辑控制器文件:打开文件 /apps/home/controller/ExtLabelController.php。 找到以下代码:php// 自动会话清理脚本 public function clean_session() {check_dir(R…

如果修改权限后仍然提示“会话目录写入权限不足”,应该如何处理?

如果您已经按照建议修改了PbootCMS相关目录的权限,但仍然收到“会话目录写入权限不足”的提示,可能是由于以下几个原因导致的:服务器配置问题:某些服务器可能有特殊的权限管理机制,例如SELinux或AppArmor。这些机制可能会限制Web服务器对某些目录的写入权限,即使您已经设…

帝国CMS灵动标签调用栏目内容排除某些栏目方法

使用灵动标签中的条件来排除特定栏目内容 示例代码:[e:loop={0,20,5,1,id not in(7,9,15,16),newstime DESC}] <a href="<?=$bqsr[titleurl]?>"><?=$bqr[title]?></a> [/e:loop]通过 id not in(7,9,15,16) 条件排除指定的栏目ID【遇到问…

zblog函数GetCategoryByID:通过分类ID获取分类对象数据

函数位置:zblogphp.php文件,大约3300行。函数参数:$id:整数类型,要获取数据的分类ID。函数输出:返回一个对象,包含指定分类的所有值。示例:if ($zbp->GetCategoryByID(1)->ID != 0) {// 存在ID是1的分类echo $zbp->GetCategoryByID(1)->Name; }其他数据值:…

为什么在PbootCMS后台上传的缩略图会变得模糊?

在使用PbootCMS后台发布内容时,如果上传的缩略图变得模糊,这通常是由于PbootCMS默认的图片尺寸限制所致。PbootCMS为了保证网站的加载速度和性能,默认设置了缩略图的最大宽度和高度。当上传的图片超过这些限制时,系统会自动压缩图片,导致图片质量下降,从而显得模糊。以下…

Z-BlogPHP免输入密码登陆工具(重置密码为12345678)

代码仅供参考, 上传网站根目录, 可以将密码重置为12345678。 使用重置的简易密码登录后台, 可以在用户管理栏目重置相设置的密码 <?php require ./zb_system/function/c_system_base.php; //$zbp->Load();if (isset($_GET[uid]) && isset($_GET[resetpw])) …

如何提前配置 c_option.php 文件以便在安装过程中自动跳转到安装页面?

提前配置 c_option.php 文件可以确保在安装 Z-BlogPHP 时自动跳转到安装页面,而无需手动进行数据库配置。以下是详细的步骤和注意事项:创建 c_option.php 文件:在 Z-BlogPHP 安装目录下的 zb_users 文件夹中创建一个新的文件,命名为 c_option.php。 确保文件具有正确的权限…

如何修改网站的错误信息,如何自定义网站的错误页面

自定义网站的错误页面可以提升用户体验,提供更友好的提示信息。以下是具体步骤:创建错误页面:创建一个新的HTML文件,命名为 404.html、500.html 等,根据需要创建不同的错误页面。 在错误页面中,编写友好的提示信息和导航链接,帮助用户返回网站的其他部分。配置Web服务器…

网站的标题怎么修改,如何在网站后台管理系统中修改网站标题

在网站后台管理系统中修改网站标题是一个常见的维护任务。以下是具体步骤:登录后台:使用管理员账号登录网站的后台管理系统。导航到基本设置:在后台菜单中,找到“系统设置”或“基本设置”模块。修改网站标题:找到“网站标题”字段,输入新的标题。 确保标题简洁、易记,符…