zoukankan      html  css  js  c++  java
  • 2019春第十一周作业

    这个作业属于哪个课程 C语言程序设计II
    这个作业要求在哪里 2019春第十一周作业
    我在这个课程的目标是 理解并调用递归函数
    这个作业在那个具体方面帮助我实现目标 锻炼我的思维
    参考文献 C语言程序设计(第3版)

    单选题




    编程题

    7-1 汉诺塔问题

    汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。

    请编写程序,输入汉诺塔圆片的数量,输出移动汉诺塔的步骤。

    1)实验代码

    #include<stdio.h>
    void hanio(int n,char a,char b,char c);
    int main(void)
    { 
        int n;
        char a,b,c;
        scanf("%d
    ",&n);
        scanf("%c %c %c",&a,&b,&c);
        hanio(n,a,b,c);
    	    return 0;
    }
    void hanio(int n,char a,char b,char c)
    {
    	    if(n==1)
        printf("%d: %c -> %c
    ",n,a,b);
        else
        {
    	    hanio(n-1,a,c,b);
    	    printf("%d: %c -> %c
    ",n,a,b);
    	    hanio(n-1,c,b,a); 
        }
    }
    

    2)设计思路

    3)本题调试过程碰到问题及解决办法


    问题:不怎么理解递归的实现过程,想了解细节的实现过程。
    解决办法:问助教,后来又看了下书,书上说“不要钻到细节的实现上去”,结果我还是不懂。

    4)运行结果截图

    7-2 估值一亿的AI核心代码


    以上图片来自新浪微博。
    本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:
    无论用户说什么,首先把对方说的话在一行中原样打印出来;
    消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
    把原文中所有大写英文字母变成小写,除了 I;
    把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;
    把原文中所有独立的 I 和 me 换成 you;
    把原文中所有的问号 ? 换成惊叹号 !;
    在一行中输出替换后的句子作为 AI 的回答。

    1)实验代码

    2)设计思路

    3)本题调试过程中碰到问题及解决办法


    问题:这题主要是实现五个功能,其中有三个比较容易实现,还有两个不知道怎样实现。
    解决办法:未解决。

    4)运行结果截图

    预习作业

    请举实例解释以下几个概念:数组指针,指针数组,指针函数,函数指针,二级指针,单向链表。

    数组指针

    数组指针,指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针。
    例如:

    int (*p)[10];
    

    p即为指向数组的指针,又称数组指针。引自数组指针

    指针数组

    数组可以是任何类型,如果数组的各个元素都是指针类型,用于存放内存地址,那么这个数组就是指针数组。
    例如:

    char *color[5];
    

    该指针数组有五个元素,元素类型是字符指针,用于存放字符数据单元的地址。
    我们对它进行初始化,

    char *color[5]={"red","blue","yellow","green","black"};
    

    数组color的每个元素color[i]分别指向一个字符串,color[i]中存放的是该字符串的地址。
    用我自己的话说就是:指针数组是同一类变量地址的一个集合。

    指针函数

    指针函数是一个函数。函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。
    例如:

    int *pfun(int, int);
    

    这样是定义个一个指针函数,该函数在最后返回一个指针。引自指针函数

    函数指针

    函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针
    变量可指向整型变量、字符型、数组一样,这里是指向函数。
    例如:

    int func(int x); /* 声明一个函数 */
    int (*f) (int x); /* 声明一个函数指针 */
    f=func; /* 将func函数的首地址赋给指针f */
    

    或者使用下面的方法将函数地址赋给函数指针:

    f = &func;
    

    赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码
    的首地址。引自函数指针

    二级指针

    二级指针指的是指向指针的指针。
    例如:

    int a=10;
    int *p=&a;
    int **pp=&p;
    

    定义了三个变量a、p和pp并初始化。一级指针指向整型变量a,二级指针pp指向一级指针p,p和*pp代表同一个单元。

    单项链表

    单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是
    使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列
    表中的下一个结点;列表是由结点构成,head指针指向第一个成为表头结点,而终止于最后一个指向NULL的指针。
    例如:

    --->[p1]---->[p2]...---->[pn]---->[NULL]
    head p1->next p2->next pn->next
    

    引自单向链表

    学习进度条

    周/日 这周所花的时间 代码行数 学到的知识点简介 目前比较迷茫的问题
    3/11-3/15 6小时 57 指针的定义与调用
    3/18-3/22 8小时 80 二维数组的定义与调用
    3/25-3/29 6小时 54 调用处理字符的函数
    4/01-4/05 6小时 78 将数组名作为指针进行调用
    4/08-4/12 6小时 104 指针与数组的关系
    4/15-4/19 6小时 133 字符串处理函数
    4/22-4/26 6小时 91 结构的定义与调用
    5/06-5/10 6小时 22 递归函数、宏定义、文件包含

    学习感悟

    这周的题目有点难,这周的题目可以用到结构化程序的思想,对于函数的调用我还不是特别熟练,方法是有的,但实现起来比较难。

    结对编程队友:彭星文2019春第十一周作业

    结对过程:这周双方先进行编写,晚自习的时候进行了讨论,一是各自的问题,二是各自的思路,对于每到道题双方都讲出自己的写法,如果双方都不明白问题所在就会上网去查。
    结对编程对现阶段我们的好处:
    1、互相鼓励,不容易沮丧:团队工作能增加成员的工作积极性。因为在面对问题的时候,会有人一起分担,共同尝试新的策略。

    2、互相监督,不容易偷懒:两个人一起工作需要互相配合,如果想偷懒去干别的,就会拖延工作进度。

    3、互相学习编程技巧:在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,可以得到能力上的互补。

    自己优点:细心,认真,提出建议。缺点:不会遇难而上。
    彭星文优点:认真,有耐心,提出建议。缺点:不会往后学习

  • 相关阅读:
    纯快排
    Quick Sort(快速排序)
    归并排序 ALDS1_5_B:Merge Sort
    单调栈(POJ2559)
    Sequence
    Codeforces Round #503
    度度熊学队列
    Always Online hdu 6350
    Hills And Valleys
    Problem G. Depth-First Search
  • 原文地址:https://www.cnblogs.com/jk-liulei/p/10843378.html
Copyright © 2011-2022 走看看