学期 2024-2025-1 学号 20241311 《计算机基础与程序设计》第十四周学习总结
作业信息
这个作业属于哪个课程 | <班级的链接> 2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>2024-2025-1计算机基础与程序设计第一周作业 |
这个作业的目标 | <写上具体方面> |
作业正文 | ... 本博客链接 |
教材学习内容总结
《C语言程序设计》第十三章的学习总结:
1. 结构体和数据结构基础
- 从基本数据类型到抽象数据类型:介绍了为什么需要从基本数据类型转向抽象数据类型,以及它们的重要性。
- 结构体的定义:
- 为什么要定义结构体类型。
- 结构体变量的定义方法。
- 使用
typedef
定义数据类型。 - 结构体变量的初始化。
- 嵌套结构体的使用。
- 结构体变量的引用。
- 结构体所占内存的字节数。
- 结构体数组的定义和初始化:
- 结构体数组的定义。
- 结构体数组的初始化。
- 结构体指针的定义和初始化:
- 指向结构体变量的指针。
- 指向结构体数组的指针。
- 向函数传递结构体:介绍了如何将结构体作为参数传递给函数。
- 共用体:介绍了共用体的概念和使用方法。
- 枚举数据类型:介绍了枚举类型的定义和使用。
- 动态数据结构单向链表:
- 问题的提出。
- 链表的定义。
- 单向链表的建立。
- 单向链表的删除操作。
- 单向链表的插入操作。
- 本章扩充内容:
- 栈和队列。
- 树和图。
- 数据的逻辑结构和存储结构。
2. 嵌套结构体的定义和使用
- 定义嵌套结构体:首先定义两个结构体,其中一个包含另一个结构体的成员。
- 创建嵌套结构体变量:创建一个员工结构体变量和一个部门结构体变量,并使员工的
department
成员指向部门。 - 使用动态内存分配:在实际应用中,我们经常需要动态地创建多个结构体实例。以下是如何使用动态内存分配来嵌套使用结构体。
3. 其他重要概念
- 强制类型转换:将变量转换成不同的数据类型,例如
(double)a
将a
转换成double
型。 - 赋值运算:如果赋值运算符两侧的类型不一致,但都是基本类型时,在赋值时要进行类型转换。
- scanf函数:
scanf(格式控制,地址表列);
用于从标准输入读取格式化输入。
《计算机科学概论》第十三章人工智能的学习总结:
第13章:人工智能
-
人工智能基础:
- 人工智能是研究如何使计算机模拟人类智能的领域,包括思考、推理、学习和解决问题的能力。
-
图灵测试:
- 图灵测试是评估机器是否能够展现出与人类相似智能行为的方法。通过模拟人类对话来测试机器是否能够像人一样思考。
-
知识表示:
- 知识表示的不同方式包括语义网和检索树等,这些都是AI领域中用于组织和存储信息的方法。语义网以图形化方式表示知识,捕捉对象间的真实关系;检索树用于表示对抗性移动等知识,如在比赛中的应用。
-
专家系统:
- 专家系统是一种模拟人类专家决策过程的软件系统。它们通常用于解决特定领域的复杂问题,并能够提供解决方案或建议。
-
神经网络:
- 生物神经网络介绍了大脑中神经元的工作方式。人工神经网络(ANN)是受生物神经网络启发的计算模型,旨在模拟人脑处理信息的方式。它们由大量相互连接的节点(称为神经元)组成,这些节点可以处理和传递信息。
-
自然语言处理:
- 自然语言处理(NLP)包括语音合成、语音识别和自然语言理解。这些技术使计算机能够理解和生成人类语言。
-
机器人学:
- 机器人学的基本概念,包括感知—规划—执行范型、包孕体系结构和物理部件。机器人学是AI的一个重要分支,涉及设计和制造能够自主执行任务的机器人。
教材学习中的问题和解决过程(先问 AI)
(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )
- 问题1:什么是图灵测试,它如何评估机器的智能?
- 问题1解决方案:图灵测试是一种评估机器是否展现出与人类相似智能行为的方法。由艾伦·图灵提出,测试包括一个人类评判员通过键盘和显示屏与两个隐藏的对话者(一个是人类,另一个是机器)进行交流。如果评判员无法一致地判断出哪个对话者是机器,那么机器就可以说通过了图灵测试,表明它具有类似人类的智能。
- 问题2:专家系统在人工智能中扮演什么角色?
- 问题2解决方案:专家系统是一种模拟人类专家决策过程的软件系统。它们通常集成了大量的专门知识,并能够模拟专家的推理过程来解决特定领域的复杂问题。专家系统在医疗诊断、法律咨询、金融分析等领域有广泛应用,它们能够提供解决方案或建议,辅助人类专家的工作。
- ...
基于AI的学习
我正在学习结构体的知识点请你以苏格拉底的方式对我进行提问,一次一个问题

当然可以,让我们以苏格拉底式的提问法来探讨结构体的概念。
问题1: 你能告诉我什么是结构体吗?
(等待你的回答,然后根据你的回答提出下一个问题。)

将多个不同数据类型结合成一个数据类型的数据类型

问题2: 那么,为什么我们需要将多个不同的数据类型结合成一个数据类型呢?这样做有什么好处?
(等待你的回答,然后根据你的回答提出下一个问题。)

方便处理复杂的数据

问题3: 既然你说这样做方便处理复杂的数据,你能具体说明一下,在哪些情况下,使用结构体比单独使用基本数据类型更加方便吗?
(等待你的回答,然后根据你的回答提出下一个问题。)

学生成绩登记,记录学生成绩,学号,姓名

问题4: 很好,学生成绩登记是一个典型的应用场景。那么,如果我们不使用结构体,而是单独使用基本数据类型来记录学生的成绩、学号和姓名,你觉得会遇到哪些问题或不便?
(等待你的回答,然后根据你的回答提出下一个问题。)

不好将这些数据整合起来

问题5: 你提到了不使用结构体时,数据整合会遇到困难。那么,具体来说,当我们尝试将这些数据整合起来时,会遇到哪些具体的困难或挑战呢?
(等待你的回答,然后根据你的回答提出下一个问题。)

容易将每个数据对错

问题6: 确实,将数据对错是一个严重的问题。那么,你能进一步解释一下,为什么在没有结构体的情况下,数据容易对错?是因为数据之间的关联性丢失了吗?
(等待你的回答,然后根据你的回答提出下一个问题。)

是的,数据之间没有关联性

问题7: 既然数据之间缺乏关联性会导致数据对错,那么使用结构体来创建一个包含学号、姓名和成绩的学生记录,是如何帮助我们保持这些数据之间的关联性的呢?
(等待你的回答,然后根据你的回答提出下一个问题。)

将不同的数据类型整合到一个数据类型里

问题8: 你提到将不同的数据类型整合到一个数据类型里,这确实是一种保持数据关联性的方法。那么,具体来说,当我们创建一个结构体来整合这些数据时,我们是如何确保每个部分都正确地对应到它应该表示的属性,比如学号、姓名和成绩的?
(等待你的回答,然后根据你的回答提出下一个问题。)

不知道请你解答

好的,我来解释一下。
当我们创建一个结构体来整合学生信息时,我们实际上是在定义一个新的数据类型,这个数据类型包含了多个不同的字段,每个字段对应一个特定的数据属性。例如,我们可以定义一个名为Student的结构体,它包含三个字段:student_id(学号)、name(姓名)和score(成绩)。这样,每个Student类型的变量都会包含这三个属性,它们之间自然就有了关联性。
以下是用C语言定义这样一个结构体的例子:
c
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
float score; // 成绩
} Student;
在这个结构体中,每个字段都有一个明确的名称和类型,这样当我们创建一个Student类型的变量时,就可以通过字段名来访问和操作这些数据:
c
Student student1;
student1
.student_id = 12345;
strcpy(student1.name, "张三");
student1
.score = 89.5;
通过这种方式,我们确保了数据的整合性和关联性,因为每个Student变量都包含了一个学生的所有相关信息,而且这些信息都是组织在一起的。这样,当我们处理学生信息时,就不容易将数据对错,因为每个学生的所有信息都是作为一个整体来处理的。这也使得数据的管理和操作变得更加直观和方便。
代码调试中的问题和解决过程
- 问题1:交换字符时,应该使用 str[n-1-i] 而不是 str[n-i]
- 问题1解决方案:字符串的索引是从 0 开始的
- 问题2:gets函数在读取输入时,它不会检查输入缓冲区的大小,容易导致缓冲区溢出。这可能会引起未定义行为,并且可能会影响后续对输入字符串的比较操作。
- 问题2解决方案:应该使用fgets函数来代替gets函数。
- ...
其他(感悟、思考等,可选)
菜就多练
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 600/1200 | 2/2 | 20/20 | |
第六周 | 900/1500 | 2/4 | 18/38 | |
第七周 | 1000/1000 | 3/7 | 22/60 | |
第八周 | 900/1300 | 2/9 | 30/90 | |
第九周 | 800/1200 | 2/2 | 20/20 | |
第十周 | 1300/1500 | 2/4 | 18/38 | |
第十一周 | 900/1000 | 3/7 | 22/60 | |
第十二周 | 800/1300 | 2/9 | 30/90 | |
第十三周 | 900/1200 | 2/2 | 20/20 | |
第十四周 | 1000/1500 | 2/4 | 18/38 |