2022-2023-1 20221304 《计算机基础与程序设计》第七周学习总结

2022-2023-1 20221304 《计算机基础与程序设计》第七周学习总结

作业信息

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07
这个作业的目标 自学教材《计算机科学概论》第8章并完成云班课测试,自学教材《C语言程序设计》第6章并完成云班课测试
作业正文 https://www.cnblogs.com/liu-221304-yi-tong/p/16777307.html

教材学习内容总结

在《计算机科学概论》第8章中,我学会了区分基于数组的实现和链式实现、区分数组和列表、区分无序列表和有序列表、区分栈和列表的行为、区分二叉树和二叉检索树、如何把一系列项目插入二叉检索树,理解了树与图的区别,了解了子程序和参数的概念。在《C语言程序设计》第6章中,我学到了计数控制的循环、条件控制的循环、嵌套循环、for语句、while语句、do-while语句、continue语句、break语句,了解了结构化程序设计的基本思想以及程序调试与试错。

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

  • 问题1:数组和列表有什么异同?
  • 问题1解决方案:查阅资料后得知:数组中的元素只能是同种数据类型;列表中的元素可以不是同一种数据类型。列表是一种数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合,在这种数据结构上进行的基本操作包括对元素的的查找,插入,和删除。列表的两种主要表现形式是数组和链表,栈和队列是两种特殊类型的列表。由此可见列表和数组的本质区别。列表是数据集合的统称,而数组是列表在结构上的具体表现形式。
  • 问题2:树与图具体有什么区别?
  • 问题2解决方案:一、图数据结构:图从数学领域进化而来,主要被用来描述一个从一个位置到另一个位置的路线的模型。一个图包含一系列的点和一系列的边。边用来把点连接起来。路线是用来描述共用一条边的点的轨迹的术语。二、树数据结构:树,和图一样也是一系列点的集合。有一个根节点。这个根节点有一些子节点。子节点也有它们自己的孙子节点。不断重复直到所有的数据都被用树的数据结构表示。树是没有环的图(在图里面,环的路线是开始和结束都是一样的点)一个子节点只有一个父节点,所以树不是一个递归的数据结构。
  • 问题3:结构化程序设计的基本思想具体有哪些?
  • 问题3解决方案:结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。它的原则有“自顶向下、逐步求精”的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。结构化程序设计的原则可表示为:程序=(算法)+(数据结构)。算法是一个独立的整体,数据结构(包含数据类型与数据)也是一个独立的整体。两者分开设计,以算法(函数或过程)为主。随着计算机技术的发展,软件工程师越来越注重于系统整体关系的表述,于是出现了数据模型技术(把数据结构与算法看做一个独立功能模块),这便是面向对象程序设计的雏形。

代码调试中的问题和解决过程

  • 问题1:不知道如何忽略数字中的负号。
  • 问题1解决方案:方法一:用条件语句判断,若为正数则直接执行后面的语句;若为负数,先乘(-1)再执行后面的语句。方法二:使用C库函数——fabs()

  • 问题2:求阶乘的方法?
  • 问题2解决方案:可以用for语句或while语句,但是查资料后发现,还有专用的函数fact可以用来求阶乘。
  • 问题3:不知道c语言中主函数main(int argc, char *argv[ ])的含义。
  • 问题3解决方案:经过查询资料得知:
    argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
    argv[ ]: 指针数组,用来存放指向你的字符串参数的指针,每一个元素指向一个参数
    argv[0] 指向程序运行的全路径名
    argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
    argv[2] 指向执行程序名后的第二个字符串
    ...
    argv[argc]为NULL。
  • 问题3:不明白c语言中数组的使用方法。
  • 问题3解决方案:通过查阅资料得知,数组是具有相同类型的集合,数组的大小(即所占字节数)由元素个数乘以单个元素的大小。数组只能够整体初始化,不能被整体赋值。只能使用循环从第一个逐个遍历赋值。初始化时,数组的维度或元素个数可忽略 ,编译器会根据花括号中元素个数初始化数组元素的个数。当花括号中用于初始化值的个数不足数组元素大小时,数组剩下的元素依次用0初始化。字符型数组在计算机内部用的时对应的ascii码值进行存储的。一般用”“引起的字符串,不用数组保存时,一般都被直接编译到字符常量区,并且不可被修改。
  • 问题4:不理解C语言中scanf()!EOF的意义。
  • 问题4解决方案:通过查阅资料得知,EOF是文件结尾标志,EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。EOF 与 scanf 函数的关系:(1)EOF (End Of File)名称是文件结束标志,定义为 -1(不是ASCII码值为-1),可以通过 Ctrl+Z 直接键入。(2)scanf 函数是有返回值的。一般来说,它的返回值是成功读取的元素个数。但当遭遇读取失败时,它的返回值便是-1(也就是它自己返回一个EOF)。而若是一个元素都还没成功读入的时候就遇到了读取失败或EOF,那它直接就会返回-1,不管后面再输入了什么。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3000行 30篇 200小时
第一周 50/50 2/2 15/15
第二周 100/150 2/4 15/30
第三周 150/350 3/7 20/50
第四周 150/500 3/10 20/70
第五周 150/650 2/12 20/90
第六周 150/800 4/16 20/110
第七周 150/800 1/17 20/130
  • 计划学习时间:20小时

  • 实际学习时间:20小时

posted @ 2022-10-16 08:30  20221304刘奕彤  阅读(24)  评论(0编辑  收藏  举报