zoukankan      html  css  js  c++  java
  • 第十一周编程总结

    这个作业属于的课程

    第十一周编程总结

    我在这个课程的目标是

    学习递归函数和用递归进行程序设计

    这个课程在哪个具体方面帮我实现目标

    通过汉诺塔问题学习递归在实际问题的作用

    参考文献

    <<C语言程序设计>>

     

     
    7-1 汉诺塔问题* (10 分)
     

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

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

    输入格式

    圆盘数 起始柱 目的柱 过度柱

    输出格式

    移动汉诺塔的步骤
    每行显示一步操作,具体格式为:
    盘片号: 起始柱 -> 目的柱
    其中盘片号从 1 开始由小到大顺序编号。

    输入样例

    3
    a c b
    

    输出样例

    1: a -> c
    2: a -> b
    1: c -> b
    3: a -> c
    1: b -> a
    2: b -> c
    1: a -> c


    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 %c %c %c",&n,&a,&b,&c);
        hanio (n,a,c,b);
        
        return 0;
    }
    void hanio (int n, char a, char b, char c)
    {
        if (n==1)
            printf ("1: %c -> %c
    ",a,c);
        else{
            hanio (n-1,a,c,b);        /将a柱上n-1个圆盘通过c柱过度以移到b柱上/
            printf ("%d: %c -> %c
    ",n,a,c);  /将a柱上的第n个圆盘移到c柱上/
            hanio (n-1,b,a,c);
        }
    }

    2)设计思路

    3)本题做对过程碰到问题及解决办法

     

    开始对汉诺塔问题不太明白,便看了书并参照245页的程序进行了编写,但后来发现有许多的不同,在输出格式和目的柱上出现了错误。改正之后,编程软件上输出结果正确,但pta上答案错误,耽误了许多时间,后来将hanio (n,'a','b','c')改为

    hanio (n,a,c,b)才正确。
     

    正确截图

    7-2 估值一亿的AI核心代码 (20 分)
     

    AI.jpg

    以上图片来自新浪微博。

    本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:

    • 无论用户说什么,首先把对方说的话在一行中原样打印出来;
    • 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
    • 把原文中所有大写英文字母变成小写,除了 I
    • 把原文中所有独立的 can youcould you 对应地换成 I canI could—— 这里“独立”是指被空格或标点符号分隔开的单词;
    • 把原文中所有独立的 I 和 me 换成 you
    • 把原文中所有的问号 ? 换成惊叹号 !
    • 在一行中输出替换后的句子作为 AI 的回答。

    输入格式:

    输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。

    输出格式:

    按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。

    输入样例:

    6
    Hello ?
     Good to chat   with you
    can   you speak Chinese?
    Really?
    Could you show me 5
    What Is this prime? I,don 't know
    

    输出样例:

    Hello ?
    AI: hello!
     Good to chat   with you
    AI: good to chat with you
    can   you speak Chinese?
    AI: I can speak chinese!
    Really?
    AI: really!
    Could you show me 5
    AI: I could show you 5
    What Is this prime? I,don 't know
    AI: what Is this prime! you,don't know


    本题做对过程碰到问题及解决办法

    本题没有做出来,根据题目的规则将其中的条件逐一用程序实现,再将它们组装成一个程序。用这个方法编程很复杂,我尝试编写了前面几个条件的程序,但将它们综合在一起便出现了错误,而且太多的字符也容易搞混,后来上百度查找了这题,结果也没怎么看懂,所以也就没有复制粘贴了,打算再仔细研究下,毕竟题目难在代码长和变量多,需要时间解决。

    预习作业

    第十二周的教学内容是:第十一章 指针进阶

    请大家查阅资料,思考如下问题:

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

    请用自己的理解回答。如果有引用他人的文字,请一定要标出出处(使用Markdown的链接方式)。

    数组指针:是指向数组地址的指针, 比如: int (*p)[5]; p即为指向数组的指针;

    指针数组:是数组元素为指针的数组, 如int *p[3],定义了p[0],p[1],p[2]三个指针,本质为数组。

    指针函数:是指带指针的函数,即本质是一个函数,指针函数一定有“函数返回值”,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。如float *find(float(*pionter)[4],int n);

    函数指针:函数指针是指向函数的指针变量,赋给函数指针的函数应该和函数指针所指的函数原型是一致的;int (*ptr)(intint);

    二级指针:是指向指针的指针,用于存放二级指针的变量称为二级指针变量.如int i ; int*pi=&i; int*ppi=&*pi;

    单向链表:

    1,什么叫单向循环链表。单向循环链表是指在单链表的基础上,表的最后一个元素指向链表头结点,不再是为空。

    2,由图可知,单向循环链表的判断条件不再是表为空了,而变成了是否到表头。

    3,链表的结点表示

    复制代码
    1 struct LNode
    2 {
    3     int data;
    4     struct LNode * next;
    5 };
    6 typedef struct LNode * linklist
    复制代码

    4,单向循环链表的操作集合,仍是defs.h里的操作集合,这里就不给出了。

    5,单循环链表的初始化操作。示意图

                 

    实现:

    复制代码
    1 #include"defs.h"
    2 
    3 void InitList(linklist *L) //改变尾指针
    4 {
    5     *L = (linklist)malloc(sizeof(struct LNode)); //分配头结点
    6     if (*L == NULL) //分配失败
    7         exit(0);
    8      (*L)->next = *L;  //指针域指向它本身
    9 }
    复制代码

    链接:https://www.cnblogs.com/rookiefly/p/3451310.html

    作业评价

    本周题目难度很大,在参照书上代码并与队友讨论的基础上完成了第一题,后面的一题尝试了多次还是没有做出来,更别说后面的挑战题了,题目难是事实,但自己不行是主要原因,要加油呀。

    结对编程

    本周我和结对的队员在一起进行了编程,在书上列子的基础上两个人在一起讨论第一题的解决方法,但第二题过于复杂没能解决。结对编程能使两个人沟通起来,得到1+1>2的效果,但也要在两个人相互配合,一起努力,这次还不错,希望下次有更好的表现。

    学习进度条

    这周所花的时间

    代码行

    学到的知识点

    遇到的问题

    第二周

    8h

    51

    文件指针的定义

    指针的具体用法

    第三周

    12h

    74

    二维数组的定义和用其编程

    如何使用指针对二维数组进行处理。

    第四周

    12h

    98

    利用数组对一组数进行排序

    把一些简单的问题复杂化,不能找到最佳的方法。

    第五周

    10h

    125

    综合利用指针和数组解决问题

    指针在编程中的作用

    第六周

    12h

    150

    学习指针的定义和作用

    指针在问题中如何体现出简便

    第七周

    10h

    128

    学习指针和数组的关系

    什么时候该用指针

    第八周

    13h

    167

    学习字符指针和字符串处理函数

    内存动态分配的用法

    第九周

    12h

    135

    学习结构的使用

    如何综合使用结构和指针

    第十一周

    12h

    148

    学习递归函数

    如何利用递归函数进行程序设计

  • 相关阅读:
    Delphi程序设计之惯用法
    有关ADO专题
    钓子程序代源
    delphi函数大集合
    2012暑期川西旅游之第四天(丹巴甲居藏寨小金达维日隆)
    主流F2.8标准变焦镜头信息
    2012暑期川西旅游之第一天(成都海螺沟)
    2012暑期川西旅游之第五天(四姑娘山之双桥沟)
    宾得最小饼干DA 40mm F2.8 Limited[转]
    主流F2.8标准变焦镜头信息
  • 原文地址:https://www.cnblogs.com/198266qq/p/10846681.html
Copyright © 2011-2022 走看看