2024-2025-1 20241417 《计算机基础与程序设计》第十三周学习总结
2024-2025-1 20241417 《计算机基础与程序设计》第十三周学习总结
作业信息
这个作业属于哪个课程 | <班级的链接>(如2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>2024-2025-1计算机基础与程序设计第十三周作业 |
这个作业的目标 | <复习前面所学,完成云班课作业> |
作业正文 | https://www.cnblogs.com/lry666666/p/18620853 |
教材学习内容总结
结构体的基础概念
- 结构体是C语言里用户自定义的数据类型,能将不同类型数据成员组合,用于描述复杂实体,是处理多样化数据、构建复杂数据结构的重要基础。
结构体的核心操作
- 定义与声明操作:
- 用
struct
关键字定义结构体,写明结构体名及成员变量与类型,声明变量可紧跟定义或单独进行。
- 用
- 成员访问操作:
- 普通结构体变量用
.
访问成员,结构体指针则用->
访问成员。
- 普通结构体变量用
- 结构体数组操作:
- 定义类似普通数组但元素为结构体类型,初始化可部分或全部赋值,通过
.
或->
结合下标访问成员。
- 定义类似普通数组但元素为结构体类型,初始化可部分或全部赋值,通过
结构体与函数的交互
- 结构体作为函数参数传递:
- 传结构体变量是值传递,传结构体指针是地址传递,按需选择传递方式。
- 函数返回结构体类型:
- 函数可返回结构体类型,但要考虑复杂程度与效率,选择合适返回形式。
数据结构基础相关内容
- 数据结构引入意义:
- 处理复杂数据时需合理数据结构来提高操作效率,结构体是构建数据结构的基础元素。
- 常见简单数据结构提及:
- 介绍线性表、栈、队列等简单数据结构概念,为后续深入学习打基础。
结构体与数据结构基础的学习拓展与应用方向
- 掌握这部分内容利于后续学习复杂数据结构及项目开发,在多领域有广泛应用,可优化程序性能与提高代码质量。
教材学习中的问题和解决过程(先问 AI)
- 问题 1:结构体变量在函数传递时数据修改异常
- 问题 1 解决方案:当结构体变量作为函数参数传递时,默认是值传递。这意味着在函数内部操作的是结构体变量的副本,对副本的修改不会影响到原始结构体变量。如果需要在函数内修改原始结构体变量,应传递结构体指针。例如,有结构体 struct Student { char name[20]; int age; }; ,定义函数 void modifyStudent(struct Student *s) { s->age = 20; } ,在主函数中 struct Student stu = {"张三", 18}; modifyStudent(&stu); ,这样就能正确修改原始结构体变量 stu 的成员 age 。若错误地写成 void wrongModifyStudent(struct Student s) { s.age = 20; } 并在主函数中调用 wrongModifyStudent(stu); ,则不会改变原始 stu 的 age 值。
- 问题 2:结构体数组初始化后部分成员值异常
- 问题 2 解决方案:结构体数组初始化时,如果没有对所有成员进行初始化,数值型成员默认初始化为 0,字符型成员默认初始化为空字符。但如果初始化格式不正确,可能导致部分成员值异常。比如 struct Book { char title[50]; int page_num; }; struct Book library[2] = {{"C 语言教程"}}; ,这里只初始化了第一个结构体元素的 title 成员,第二个结构体元素的 page_num 会被初始化为 0,但 title 成员是未定义的值。正确的做法应该是 struct Book library[2] = {{"C 语言教程", 0}, {""}}; ,确保每个结构体元素的每个成员都有合适的初始化值或者明确的默认值设定。
- 问题 3:结构体嵌套时成员访问出现混乱
- 问题 3 解决方案:当存在结构体嵌套时,需要正确使用成员访问运算符来访问嵌套结构体的成员。例如有 struct Date { int year; int month; int day; }; struct Student { char name[20]; struct Date birthday; }; ,要访问学生结构体中的生日年份,应使用 student.birthday.year (这里 student 是 Student 类型结构体变量)。如果错误地写成 student.year 就会出现访问错误。在编写代码时,要仔细理清结构体的嵌套层次关系,确保成员访问的准确性。
基于AI的学习
代码调试中的问题和解决过程
- 问题1:定义字符数组时忘记给'\0'分配位置,导致编译错误
- 问题1解决方案:回顾并检查课本中字符数组定义
- 问题2:使用有关字符串的函数时,忘记添加string的头文件
- 问题2解决方案:提前加好
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 0/2 | 18/38 | |
第三周 | 500/1000 | 1/3 | 22/60 | |
第四周 | 300/1300 | 1/4 | 30/90 | |
第五周 | 300/1600 | 1/5 | 30/120 | |
第六周 | 300/1900 | 1/6 | 30/150 | |
第七周 | 300/2200 | 1/7 | 30/180 | |
第八周 | 300/2500 | 1/8 | 30/210 | |
第九周 | 300/2800 | 1/9 | 30/240 | |
第十周 | 300/3100 | 1/10 | 30/270 | |
第十一周 | 300/3400 | 1/11 | 30/300 | |
第十二周 | 300/3700 | 1/12 | 30/330 | |
第十三周 | 300/4000 | 1/13 | 30/360 |