2023-2024-1 20231309 《计算机基础与程序设计》第九周学习总结
2023-2024-1 20231309 《计算机基础与程序设计》第九周学习总结
作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2023-2024-1计算机基础与程序设计第九周作业 |
这个作业的目标 | ![]() |
作业正文 | 2023-2024-1 20231309 《计算机基础与程序设计》第九周学习总结 |
教材学习内容总结
下图分别为《C语言程序设计》第8章梳理和《计算机科学概论》第10、11章梳理
基于AI的学习
(以下为导出的对话记录)
来自你的消息:
今天我学习了C语言程序设计中的数组,请你以苏格拉底的方式对我进行提问,一次一个问题
来自AI的消息:
好的,非常棒!那我们来使用苏格拉底的方法,一步一步地探索C语言中的数组。首先,我想问你:
- 什么是数组,在程序设计中它有什么作用?
来自你的消息:
数组就是多个数据的集合
来自AI的消息:
没错!数组是C语言中最基本的数据结构之一,是一组连续的内存单元。数组可以存储多个同类型元素,可以是字符、整数、浮点数等等。数组在程序设计中的作用是非常重要的,经常用于存储、处理和组织大量数据。下一个问题是:
- 如何定义数组?你能举一个范例说明吗?
来自你的消息:
int happy[100]; char str[666];
来自AI的消息:
很好!你已经知道了如何定义一个数组。在C语言中,我们可以使用类似上述格式的语句来定义数组,其中,int表示数据类型,happy是数组的名称,[100]表示数组的大小,即元素的数量。同样,char str[666]也是一个定义了大小为666的字符型数组。你的回答已经非常精准和简洁了!下一个问题是:
- 在使用数组时,怎样访问数组中的元素呢?可以举一个简单的例子说明一下吗?
来自你的消息:
通过索引,如str[6] = 'a';代表str第七位字符为a
来自AI的消息:
非常好!你已经掌握了访问数组元素的方法。在C语言中,我们可以使用方括号和索引来访问数组中的特定元素。例如,str[6] = 'a'; 表示将字符'a'赋值给数组str的第七个元素。这是因为数组的索引从0开始。你的回答非常准确!下一个问题是:
- 在C语言中,数组的大小是否可以在运行时动态确定?为什么?
来自你的消息:
不可以,数组大小必须定义时确定
来自AI的消息:
非常好!你回答得很准确!在C语言中,数组的大小必须在定义时确定,并且是固定的。这是因为在内存中为数组分配空间时,需要知道数组的大小以便准确地分配连续的内存空间。由于数组在内存中是连续存储的,所以数组的大小必须是已知的,并且在运行时不可更改。如果需要动态大小的数据结构,可以使用指针和动态内存分配来实现,例如使用malloc函数在运行时分配内存。非常感谢你的回答!如果还有其他问题,请随时提问。
来自你的消息:
那你认为我掌握C语言程序设计中的数组了吗
来自AI的消息:
根据你现在的回答,我认为你对C语言程序设计中的数组有一定的了解。你知道如何定义数组、访问数组元素,并且还了解到数组的大小必须在定义时确定。这是掌握数组基础知识的重要部分。然而,C语言中的数组还有更多的用法和功能,比如多维数组、数组的初始化、数组的传递等等。如果你感兴趣,可以继续学习更多关于数组的知识,以更全面地掌握C语言程序设计中的数组概念和用法。如果你有其他关于C语言或其他主题的问题,我会很乐意帮助你。
来自你的消息:
那请你对我的回答进行总结评价,谢谢
来自AI的消息:
当我向你提出问题时,你表现出了积极的学习态度,并且回答了我提出的问题。你展示了你对C语言程序设计中数组的基础知识有一定的了解,你知道如何定义数组,访问数组中的元素,并且了解到数组的大小必须在定义时确定。您对C语言的学习态度非常好,并且您已经掌握了基础知识,我相信如果您继续保持这种态度,您的学习会得到更大的进步。
来自你的消息:
今天我还学习了文件系统和目录,请你以苏格拉底的方式对我进行提问,一次一个问题
来自AI的消息:
好的,让我们开始吧!请告诉我,什么是文件系统?
来自你的消息:
操作系统管理的、可进行各种文件读写处理操作的文件管理系统
来自AI的消息:
很好!那么接下来,请问文件系统和目录之间有什么关系呢?
来自你的消息:
目录是文件的集合,文件系统通过目录组织文件
来自AI的消息:
非常好!那么下一个问题是,什么是绝对路径?
来自你的消息:
绝对路径即从所在磁盘开始一个目录一个目录追踪到目标文件的路径
来自AI的消息:
没错!现在我想问你,相对路径和绝对路径有什么不同之处?
来自你的消息:
相对路径则是从所在目录开始追踪到目标文件的路径,是多变的,比相对固定不变的绝对路径更灵活
来自AI的消息:
非常好!你的回答很准确。相对路径和绝对路径的主要区别在于,相对路径基于当前工作目录,而绝对路径基于文件系统根目录。相对路径相对于绝对路径更具灵活性,并且在不同的环境中可以使用相对路径来访问同一文件或目录,而无需更改路径。
那么,还有什么问题我可以回答吗?
来自你的消息:
那你认为我掌握文件系统和目录了吗
来自AI的消息:
从你的回答来看,我认为你对于文件系统和目录有一定的了解。但是文件系统涉及的知识非常广泛,还有很多细节需要深入理解,包括文件的权限、文件系统的挂载等等。如果你还有其他问题,我很乐意回答。
来自你的消息:
那请你对我的回答进行总结评价,谢谢
来自AI的消息:
你在回答关于绝对路径和相对路径的问题时给出了正确的定义和区别。你正确地指出了绝对路径是从磁盘的根目录开始追踪到目标文件的路径,而相对路径则是从当前工作目录开始追踪到目标文件的路径。你还提到了相对路径相对于绝对路径更具灵活性的特点。
总之,你对文件系统和目录的理解是准确的,你的回答表明你在这方面有一定的知识基础。希望这次评价对你有帮助!如果你还有其他问题,我随时可以回答。
代码调试中的问题和解决过程
-
问题1:进行函数间参数传递时出现错误
-
解决方案:明确变量的作用域与标识符,不同函数间少耦合,尽量互不干扰。
-
问题2:进行排序时忘记交换排序与选择排序
-
解决方案:按照自己的理解写排序方法(即进行循环,只要不符合大小关系就交换,直到循环一遍未进行任何交换为止)
-
问题3:排序时出现混乱
-
解决方案:发现进行排序的交换时只交换了部分数据(成绩)而非全部数据,补上学号交换便解决了。
-
问题4:第二次学号排序输出时输出了成绩排序结果。
-
解决方案:了解到成绩排序时数组被永久改变而非临时改变便再次编写学号排序函数代码
-
问题5:输出百分数时“%”输出失败
-
解决方案:经过查询得知需要进行转义,用“%%”
上周考试错题总结
- 错题1:
- 原因:误解题意,没有正确理解题目说的是强转是一种将高级程序输入计算机的机制,而实际上强转是对数据类型的强制转换。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 2/2 | 12/12 | ||
第二周 | 10/10 | 1/3 | 7/19 | |
第三周 | 60/70 | 4/7 | 12/31 | |
第四周 | 120/190 | 3/10 | 12/43 | 学习冯诺依曼体系结构 |
第五周 | 260/450 | 2/12 | 16/59 | 学习机器语言、汇编语言、伪代码 |
第六周 | 250/700 | 4/16 | 12/71 | 学习选择控制结构 |
第七周 | 400/1100 | 1/17 | 14/85 | 学习程序编写规范 |
第八周 | 400/1500 | 2/19 | 10/95 | 学习模块化编程 |
第九周 | 500/2000 | 1/20 | 7/102 | 学习指针的使用 |
-
计划学习时间:12小时
-
实际学习时间:7小时
-
改进情况:本周计划水平有所退步