2022-2023-1计算机基础与程序设计第七周学习总结 20221407 姚博茗

学期(2022-2023-1) 学号(如:20221407) 《计算机基础与程序设计》第七周学习总结

作业信息

这个作业属于哪个课程 2022-2023-1-计算机基础与程序设计
这个作业要求在哪里 2022-2023-1计算机基础与程序设计第一周作业
这个作业的目标 数组与链表 基于数组和基于链表实现数据结构 无序表与有序表 树 图 子程序与参数
作业正文 ... 本博客链接

教材学习内容总结

  • 《计算机科学概论》:
    这一章讲述了几种抽象数据类型:栈,队列,列表几种一对一的情况,树这种一对多的情况以及图这种多对多的情况并介绍了应用几种结构的伪代码。最后介绍了子程序与参数;
  • 《C语言程序设计》:
    第三章讲述了算法中中的一大结构:循环控制结构以及递归,穷举等重要思想。

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

  • 链式表与数组有区别吗?
    通过听娄老师周末上的课,我发现它们是有区别的。数组中的数据是存放在一个连续的内存空间而链式表虽然也是连续的但却在内存中并不是存储在连续的一段空间中,它可以将一个单元分成两份一份用于存储数据一份用于存放下一个单元格的地址,从而可以将结构连起来。数组便于查找而链式表便于插入。
  • 深度优先搜索与广度优先搜索到底有什么区别?教材内容抽象……
    解答
    广度优先搜索:

    深度优先搜索:

    前者显示横向使用了队列,后者则是先尽量深入使用了栈。
    引用作者的图片。
  • 看到了这一章中关于参数的论述,我想起了《C语言程序设计》中的一个问题:为什么直接使用实参的值赋给形参就无法改变形参,而数组明确可以?
    通过阅读这一章中的内容我知道数组使用了引用参数而直接复制则是使用了直接参数,一个是地址一个则是一个副本。

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

  • 为什么在调试时我本来预想的控制变量的最终值总是比我预想的要小或多一点?

    后来我开始仔细看书,发现这是因为for语句中的增一运算是在语句最后进行的,所以虽然设计是5次但它最后还是会加上一。因为这个原因我在许多代码中都出现了逻辑错误,如果这些情况下一定要用for语句那就要把控制变量减去一或者直接用while语句。
  • 关于制作一个空心正多边形。
点击查看代码
#include<stdio.h>
int main(void)
{
    int n;
    printf("Enter length:",n);
    scanf("%d",&n);
    int a;
    char z = '*';
    char y = ' ';
    /*第一行*/
    for(a = 1;a<=n-1;a++)
    {
        printf("%c",y);

    }
    for(a = 1;a<=n;a++)
    {
        printf("%c",z);

    }
    /*第二行*/
    int b, x;
    for(b = 2;b<=n;b++)
    {
        printf("\n");
        for(x = n-b-1;x>=0;x--)
        {
            printf("%c",y);
        }
        printf("%c",z);
    }
    /*第三行*/
    int c;
    for(c = 2;c<=n;c++)
    {
        printf("\n");
        for(x = 1;x<=c-1;x++)
        {
            printf("%c",y);
        }
        printf("%c",z);
    }
    /*第四行*/
    for(a = 1;a<=n-1;a++)
    {
        printf("%c",z);

    }
    /*右边开始*/
    /*第二行*/
    int d, e;
    for(e = 2; e<=n; e++)
    {
        for(d = 1; d<=n+n-1; d++)
        {
            printf("%c",y);
        }

    }

    return 0;



}

这个代码看起来很成功但却完全失败了,因为要重新打我只想到做左侧的图形但忘记了想右边的方法导致一个做了半个自习的代码废掉了。最初的设计果然是最重要的一步。 (现在,我想可以给右边部分整体加上空格……) * 我在练习循环时出现了明明设置了增一,但循环还是成了无限循环? (代码实在找不到了……)

后来我通过调试发现,增一语句的位置很有讲究,有时放在内层循环就真的会出现上图的情况……
调试也是学习的好方法。

上周考试错题总结

1.A record is a named heterogeneous collection of items in which individual items are accessed by position.
正确答案: 错误
你的作答: 正确
记录是项目的命名异构集合,其中单个项目按位置访问。
不知道记录也是用位置区分的
2.During top-down design, a concrete step is one that needs to be expanded further.
正确答案: 错误
你的作答: 正确
在自顶向下的设计中,具体步骤需要进一步扩展。

其他

1.写代码就像写文章,高手能写出简洁凝练的文章,而我的文章还总是支离破碎,晦涩难懂。(我总是在中间定义一个变量,且不能使用最简单的算法,经常套一堆循环……还需要好好听听汪老师的课)
2.我第一次看计算机科学概论时是粗读,完全没看懂本章说了啥。这一次,我反复看了好几遍才勉强弄懂一点。书读百遍其意自见。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第……周 500/1000 3/7 22/60
第七周 210/1300 1/9 30/90 学到了集中重要ADT
——姚博茗
posted @ 2022-10-15 22:22  北寒带  阅读(37)  评论(0编辑  收藏  举报