第十一周作业
问题 | 回答 |
---|---|
这个作业属于那个课程 | C语言程序设计 I |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/3203 |
我在这个课程的目标是 | 利用递归函数望城简单的编程题目 |
这个作业在哪个具体方面帮助我实现目标 | 了解了递归函数的思路 |
参考文献 | https://www.cnblogs.com/xqldc/p/10832331.html |
一、本周完成的作业 | |
题目1.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 hano
(int n,char x,char y,char z);
int main ()
{
int n;
char x,y,z;
scanf("%d\n",&n);
scanf("%c %c %c ",&x,&y,&z);
hano(n,x,y,z);
}
void hano(int n,char x,char y,char z)
{
if(n==1)
{
printf("%d: %c -> %c\n",n,x,y);
}
else
{
hano(n-1,x,z,y);
printf("%d: %c -> %c\n",n,x,y);
hano(n-1,z,y,x);
}
}
本题调试过程碰到问题及解决办法
题目4.预习作业:
第十二周的教学内容是:第十一章 指针进阶
请大家查阅资料,思考如下问题:
请举实例解释以下几个概念:数组指针,指针数组,指针函数,函数指针,二级指针,单向链表。(无实例不给分)
数组指针:首先要理解它是一个指针,是一个指向数组的指针
int *p=[10];
char (*q)[10];
这里的第二个才是我们说的数组指针
加上()才能保证q先于*结合
参考链接:https://blog.csdn.net/Misszhoudandan/article/details/78628662
指针数组:首先要理解它是一个数组,是一个存放指针的数组,即数组里面的元素为指针类型
int *arr1[10];
char *arr2[10];
char **arr3[10];
参考链接:https://blog.csdn.net/Misszhoudandan/article/details/78628662
函数指针:指向函数的一个指针
参考链接:https://blog.csdn.net/Misszhoudandan/article/details/78628662
二级指针:A(即B的地址)是指向指针的指针,称为二级指针,用于存放二级指针的变量称为二级指针变量.根据B的不同情况,二级指针又分为指向指针变量的指针和指向数组的指针.
参考链接:https://blog.csdn.net/ye1223/article/details/79674975
单向链表:单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点;
参考链接:https://blog.csdn.net/tech_pro/article/details/70207204
学习进度条
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑大问题 |
---|---|---|---|---|
5/5-5/10 | 13小时 | 200行 | 递归算法,编程结构 | 递归算法 |
结对编程 | ||||
1,集思广益,从更多的角度看问题 | ||||
2.占用了太多时间 |