• 第十一周编程总结


    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/MS/homework/3206
    我在这个课程的目标是 学好c语言并会运用
    这个作业在那个具体方面帮助我实现目标 知道了递归函数的运用
    参考文献 c语言程序设计



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

    题图1.jpg

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

    输入格式
    圆盘数 起始柱 目的柱 过度柱

    输出格式
    移动汉诺塔的步骤
    每行显示一步操作,具体格式为:
    盘片号: 起始柱 -> 目的柱
    其中盘片号从 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,&c,&b);
        hanio(n,a,c,b);
        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)本次调试过程中遇到的问题

    问题:格式错误主要是我没看清输出格式,在输出%c前加空格。

    4)运行结果截图

    预习作业

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

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

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

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

    数组指针:

    是指向数组地址的指针。例:int (*p)[10]; p即为指向数组的指针,又称数组指针。
    

    指针数组:

    数组元素全为指针的数组称为指针数组。例如二维指针数组的定义为:char *ptr_array[][3]={"asdx","qwer","fdsfaf"}。
    

    指针函数:

    指针函数是指带指针的函数,即本质是一个函数。例如float *find(float(*pionter)[4],int n)。
    

    函数指针:

    函数指针只能指向具有特定特征的函数。因而所有被同一指针运用的函数必须具有相同的参数和返回类型。例如定义一个函数指针typedef int (*fun_ptr)(int,int);
    

    二级指针:

    A(即B的地址)是指向指针的指针,称为二级指针。例如int i ; int*pi=&i; int*ppi=&*pi;
    

    单向链表:

    单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。
     例如#include <stdio.h>
    #include<stdlib.h>
    #define  LEN  sizeof(struct node)
    struct node
    {
    int data;
    struct node  *next;
    };
    main()
    {     struct  node  *p, *pl,* head;
              head=p=(struct node * )malloc(LEN);
              scanf("%d",&p->data);/*头结点的数据成员*/
              while(p->data!=0)   /*给出0结束条件,退出循环*/
              {    pl=p;
                   p=(struct node * )malloc(LEN);
                      scanf("%d",&p->data);/*中间结点数据成员*/
                      pl->next=p;/*中间结点的指针成员值*/
              }
              p-> next=NULL;/*尾结点的指针成员值*/
              p=head;/*链表显示*/
              printf("链表数据成员是:");
              while(p->next!=NULL)
              {
              printf("%d",p->data);
              p=p->next;
              }
              printf("%d
    ",p->data);
    }
    

    https://blog.csdn.net/21aspnet/article/details/160019

    学习感悟:
    在这周编程中可能就基础题第一题还算容易,不过搬盘子这段代码我还是不怎么清楚,而且网上也没有对这段代码的解释,所以总体来说本周题目太难,第二个题花了一天的时间也没有写出来,写题过程中让我痛不欲生,思路也不是很清晰,所以花了大量时间作了没用功,也有点小沮丧,不过对题目就理解的更清晰了。

    结对编程的过程及优缺点:
    在星期三的晚自习结对编程中我们把基础题第一题写出来了,是按照书上的一个例题来写的,不过还是需要改一些地方的,所以做的还是很轻松,不过基础题第二题就让我们苦不堪言,因为题目要求太多了,我们讨论了一节课还是没有一点思路。
    优点:做题更快,节约时间,可以更好的吃透知识点。
    缺点:没有太多时间在一起结对编程,所以大部分时间还是自己在做题。

  • 相关阅读:
    10 个深恶痛绝的 Java 异常。。
    为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
    推荐一款代码神器,代码量至少省一半!
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
    hdu 3853 LOOPS(概率 dp 期望)
    hdu 5245 Joyful(期望的计算,好题)
    hdu 4336 Card Collector(期望 dp 状态压缩)
    hdu 4405 Aeroplane chess(概率+dp)
    hdu 5036 Explosion(概率期望+bitset)
    hdu 5033 Building (单调栈 或 暴力枚举 )
  • 原文地址:https://www.cnblogs.com/tzmad/p/10844810.html
Copyright © 2020-2023  润新知