首页 > 编程语言 >2024-2025-1 20241413 《计算机基础与程序设计》第七周学习总结

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

时间:2024-11-09 13:08:32浏览次数:4  
标签:10 20241413 while 2024 2025 Kimi 循环 User main

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07
作业目标 数组与链表 基于数组和基于链表实现数据结构 无序表与有序表 树 图 子程序与参数
---- ----
作业正文 https://www.cnblogs.com/yuanzhengqi/p/18536664

教材学习内容总结
《计算机科学概论》第八章
数组与链表:

数组:一种线性数据结构,用于存储固定大小的相同类型的元素。数组中的元素可以通过索引直接访问,这使得访问元素非常快速。但是,数组的大小在创建时就固定了,因此在需要动态调整大小时不太灵活。
链表:另一种线性数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。链表的大小可以动态调整,插入和删除操作也相对简单,但访问特定元素需要从头开始遍历链表,因此访问速度较慢。
基于数组和基于链表实现数据结构:

基于数组的数据结构:如动态数组(例如C++中的vector或Java中的ArrayList),允许在数组中动态添加或删除元素,通常通过重新分配内存来实现。
基于链表的数据结构:如单链表、双向链表和循环链表,它们通过指针连接元素,使得插入和删除操作更加灵活。
无序表与有序表:

无序表:元素没有特定的顺序,常见的实现包括哈希表和无序链表。
有序表:元素按照特定的顺序排列,如升序或降序。常见的实现包括有序数组、二叉搜索树和跳表。
树:

树是一种层次结构的数据结构,由节点组成,每个节点有零个或多个子节点。树的常见类型包括二叉树、平衡树(如AVL树)、B树和B+树等。树结构在表示层次关系和进行快速搜索方面非常有用。
图:

图是一种复杂的数据结构,用于表示元素之间的一对多关系。图可以是无向的或有向的,并且可以是加权的或无权的。图的常见类型包括邻接矩阵和邻接表。图的应用包括网络分析、路径查找(如Dijkstra算法和A*搜索算法)和图论问题。
子程序与参数:

子程序:也称为函数或方法,是一段可以重复使用的代码,用于执行特定的任务。子程序可以接收输入(参数),执行一些操作,并返回结果。
参数:传递给子程序的值,可以是输入参数(子程序使用这些值进行计算)或输出参数(子程序将结果存储在这些值中)。
子程序的调用通常涉及参数的传递,可以是按值传递或按引用传递。按值传递意味着传递给子程序的是参数的副本,而按引用传递意味着子程序可以直接修改原始数据。

《C语言程序设计》第六章
条件语句:

if语句:用于基于条件执行不同的代码块。基本形式包括if、if-else和if-else if-else结构。
switch语句:用于基于变量值执行不同的代码块,适用于有多个条件的情况。
循环结构:

for循环:用于在给定条件下重复执行代码块,通常用于已知迭代次数的情况。
while循环:在条件为真时重复执行代码块,适用于迭代次数未知的情况。
do-while循环:至少执行一次代码块,然后在条件为真时重复执行,与while循环的主要区别在于条件检查的位置。
循环控制语句:

break语句:用于立即退出循环,无论循环条件如何。
continue语句:用于跳过当前迭代的剩余部分,直接开始下一次迭代。
goto语句:允许程序跳转到程序中的另一个标签位置,通常不推荐使用,因为它可能导致代码难以理解和维护。
嵌套控制结构:

控制结构可以嵌套使用,即在一个循环或条件语句内部使用另一个控制结构,这增加了程序的复杂性和灵活性。
控制结构的实践应用:

学习如何将控制结构应用于解决实际问题,如计算数学表达式、处理用户输入、模拟游戏逻辑等。
调试技巧:

学习如何使用调试工具来识别和修复控制结构中的错误,如无限循环、逻辑错误和运行时错误。
控制结构的效率:

讨论不同控制结构的效率,以及如何优化代码以提高性能,例如通过减少不必要的迭代或使用更高效的算法。
控制结构与函数的结合:

学习如何将控制结构与函数结合使用,以创建模块化和可重用的代码。

教材学习中的问题与解决过程
问题一:C语言中+=什么意思?
AI:复合赋值运算符还有其他几种形式,例如:

-=:减等于,等价于 - 和 = 的组合。
*=:乘等于,等价于 * 和 = 的组合。
/=:除等于,等价于 / 和 = 的组合。
%=:取模等于,等价于 % 和 = 的组合。
&=:按位与等于。
|=:按位或等于。
^=:按位异或等于。
<<=:左移等于。

=:右移等于。
这些复合赋值运算符通常用于简化代码,使代码更加简洁和易于阅读

问题二:int main和void main有什么区别?
AI:在C语言中,int main 和 void main 主要区别在于它们指定的返回类型和隐含的返回值。

int main:

这是标准和推荐的方式定义 main 函数。
int 表示 main 函数返回一个整数值。
根据C语言标准,main 函数应该返回一个整数值给操作系统,其中 0 通常表示程序成功结束,非零值表示程序异常结束。
如果 int main 没有显式返回值,编译器通常会在函数末尾隐式添加 return 0;,表示程序正常结束。
void main:

void 表示 main 函数不返回任何值。
使用 void main 并不是标准C语言的做法,尽管一些编译器可能接受它,但这样做可能会导致可移植性问题。
如果 main 被定义为 void 类型,程序结束时不会返回任何值给操作系统,这在大多数系统上可能被视为异常退出。
总结:

推荐使用 int main,因为它符合C语言标准,并且明确表示程序结束时返回一个整数值。
避免使用 void main,因为它不是标准做法,可能会导致不可预测的行为,特别是在不同的编译器或操作系统上。
此外,int main 还可以接受命令行参数,其完整定义形式为 int main(int argc, char *argv[]),其中 argc 是参数个数,argv 是参数数组。这对于创建需要接受用户输入或命令行选项的程序非常有用。而 void main 则不支持这种形式。

基于AI的学习
User: 我正在学习《C语言程序设计》第六章的内容,请你以苏格拉底的方式向我提问一次一个问题

Kimi: 当然可以。让我们开始吧。

你已经学习了《C语言程序设计》第六章的内容,对吗?

User: 对

Kimi: 那么,你能告诉我这一章主要讨论了什么内容吗?

User: 各种结构

Kimi: 了解了,那么“各种结构”具体指的是哪些结构呢?你能列举一些吗?

User: 循环结构如for语句

Kimi: 很好,你提到了循环结构,特别是for语句。那么,你能描述一下for语句的基本结构是怎样的吗?

User: for(i的范围;i++)

Kimi: 你提到了for循环的基本形式,但是似乎有一点简化了。for循环通常有三个部分,你能详细说明一下这三个部分分别是什么吗?

User: 变量的初始值,范围和变化量

Kimi: 非常好,你已经正确地指出了for循环的三个组成部分。那么,让我们进一步探讨。你能给我一个具体的例子,展示如何使用for循环来执行一个任务吗?比如,打印从1到10的数字。

User: for(i=1;i<=10;i++)

Kimi: 接近了,但还有一点小错误。在C语言中,for循环的语法需要用分号;来分隔每个部分,而不是逗号,。让我来帮你纠正一下:

for (i = 1; i <= 10; i++)

现在,你能告诉我这个for循环做了什么吗?它从1开始,直到10结束,每次循环i的值会增加多少?

User: 加一

Kimi: 完全正确,每次循环i的值会增加1。那么,这个循环会执行多少次呢?你能告诉我循环的迭代次数吗?

User: 10次

Kimi: 实际上,这个循环会执行10次,因为i从1开始,每次增加1,直到10。所以,循环体中的代码会执行10次。

现在,让我们稍微改变一下问题。如果我们要打印从10到1的数字,我们应该如何修改for循环呢?

User: i初始值改为10,i++改为i--

Kimi: 你的思路是正确的,但是需要更精确地表达。如果我们想要打印从10到1的数字,我们需要将i的初始值设置为10,并且每次循环后i的值需要减少1。正确的for循环应该是这样的:

for (i = 10; i >= 1; i--)

这个循环从10开始,每次循环i的值减少1,直到1。所以,循环体中的代码也会执行10次。

现在,让我们考虑一个更复杂的问题。如果我们想要打印一个数字的平方,我们应该使用哪种循环结构?你能给我一个例子吗?

User: 你的回答呢

Kimi: 抱歉,我刚才的回复中断了。对于打印一个数字的平方,我们通常不需要使用循环结构,因为这是一个简单的数学运算。但如果我们要打印一系列数字的平方,比如从1到10的平方,我们可以使用for循环来实现。

例如,下面的for循环将会计算并打印从1到10每个数字的平方:

#include <stdio.h>

int main() {
    int i;
    for (i = 1; i <= 10; i++) {
        printf("%d 的平方是 %d\n", i, i * i);
    }
    return 0;
}

在这个例子中,for循环用于迭代1到10的每个数字,循环体内的printf函数用于输出每个数字及其平方。

现在,让我们回到你的问题。如果我们只是打印一个特定数字的平方,我们不需要循环。例如,如果我们想打印数字5的平方,我们只需要执行一次乘法运算:

#include <stdio.h>

int main() {
    int number = 5;
    int square = number * number;
    printf("%d 的平方是 %d\n", number, square);
    return 0;
}

在这个例子中,我们直接计算了数字5的平方,并没有使用循环。

现在,让我们回到你正在学习的内容。在第六章中,除了for循环,还介绍了哪些其他的循环结构呢?

User: do while循环

Kimi: 很好,你提到了do-while循环。这是一种后测试循环,意味着循环体至少执行一次,然后根据条件判断是否继续执行循环。

那么,你能描述一下do-while循环的基本结构吗?

User: do 指令while条件

Kimi: 是的,do-while循环的基本结构是这样的:

do {
    // 循环体中的指令
} while (条件);

在这个结构中,do后面跟着的是循环体,至少执行一次,然后程序会检查while后面的条件。如果条件为真(非零),循环体将再次执行;如果条件为假(零),循环将结束。

现在,让我问你一个具体的问题:do-while循环和for循环的主要区别是什么?你能给出一个例子来说明do-while循环的用法吗?

User: 前者在条件内循环,后者在次数内循环

Kimi: 这个描述有一点不准确。实际上,do-while循环和for循环都可以基于条件来控制循环的执行,但它们在检查条件的时机上有区别。

for循环是在每次迭代开始之前检查条件,这意味着如果条件一开始就不满足,循环体可能一次都不会执行。

do-while循环则是在每次迭代结束之后检查条件,这意味着循环体至少会执行一次,无论条件是否满足。

学习进度表
代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 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
第五周 900/1300 2/9 30/90
第六周 1000/1300 2/9 30/90
第七周 1000/1300 2/9 30/90

标签:10,20241413,while,2024,2025,Kimi,循环,User,main
From: https://www.cnblogs.com/yuanzhengqi/p/18536664

相关文章

  • 【RStudio 2024 软件下载与安装教程】
    1、安装包  RStudio2024:链接:https://pan.quark.cn/s/9c0b51619c36提取码:acvGRStudio2022:链接:https://pan.quark.cn/s/2e59b185b557提取码:MHdf2、安装教程1)       双击R-4.4.2-win.exe安装,弹窗安装对话框  2)       选择语言,点击确定  ......
  • 20222305 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    网络攻防实验报告姓名:田青学号:20222305实验日期:2024/11/01—2024/11/10实验名称:恶意代码分析实践指导教师:王志强1.学习内容1.指令集合:二进制执行代码,脚本,宏,指令流。2.恶意代码命名规则:前缀+名称+后缀3.BIOS->MDR->分区引导记录->操作系统(电脑启动)4.逆向工程:程序结构C......
  • 20222313 2024-2025-1 《网络与系统攻防技术》 实验四报告
    1.实验内容一、恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件......
  • 8章13节:网络图(知识图谱)绘制的深度解析(更新20241109)
    网络图是一种广泛应用于数据分析的可视化工具,能够有效展示事物之间的关系。在医药行业,网络图被用来分析复杂的关系,例如药物与疾病之间的关联、患者与医疗服务的互动等。通过网络图,研究人员和决策者能够直观地理解数据中的结构模式,发现潜在的规律和趋势,进而做出更为精准的判断......
  • 2024-2025-1 20241423 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里2024-2025-1计算机基础与程序设计第七周作业这个作业的目标数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、树、图、子程序与参数作业正文本博......
  • PH热榜 | 2024-11-08
    DevNow是一个精简的开源技术博客项目模版,支持Vercel一键部署,支持评论、搜索等功能,欢迎大家体验。在线预览1.Quorini标语:几分钟内设计并运行无服务器云API介绍:Quorini提供了一套可视化的工具,可以用来设计数据模型,并且运行着一个全托管的无服务器后端。使用Quori......
  • 华为OD机试2024年真题题库(A卷+B卷+C卷+D卷+E卷)
    文章目录一、什么是华为OD,什么是华为OD机试?二、华为OD面试流程?三、华为OD机试通过率高吗?四、华为OD薪资待遇?五、大家比较关注问题的FAQ......
  • 2024 CSP 游记
    游记逆转时空的公式就是珍惜当下。DAY-38初赛,不会的我都蒙了A和B。DAY-0.4白天在学校十分有干劲,晚上九点半下课到家十点半,收拾物件到十一点多倒头就睡。DAY0火车上正在酣睡中,@Kenma@lichenxi111俩人在旁边大力敲击键盘开卷,本人只能强制开机跟他们一起开打。和@......
  • 2024-2025-1 20241311 《计算机基础与程序设计》第七周学习总结
    学期2024-2025-1学号20241311《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里<作业要求的链接>(2024-2025-1计算机......
  • 20222312 2024-2025-2 《网络与系统攻防技术》实验四报告
    一、恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者(1).通过kali中的file命令查看文件格式和可运行平台,即exe文件,Win32平台通过PEID查壳文件发现使用UPX壳二、使用IDAPro静态或动态分析crackm......