|第十一周 |五道题 |
|作业属于课程 |C语言程序设计 |
|作业要求 |https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/3205|
|课程目标 |学会将多个函数组织起来,学会使用递归函数解决问题|
|在哪方面帮我实现目标 |知道了什么是递归及其复杂性 |
|参考文献 |https://i.cnblogs.com/EditPosts.aspx?opt=1|
一、基础作业
第一题
汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。
题图1.jpg
请编写程序,输入汉诺塔圆片的数量,输出移动汉诺塔的步骤。
实验代码
#include<stdio.h>
void Hanot(int n,char a,char c,char b);
int main(void)
{
int n;
char a,c,b;
scanf("%d %c %c %c",&n,&a,&c,&b);
Hanot(n,a,c,b);
return 0;
}
void Hanot(int n,char a,char c,char b)
{
if(n==1)
printf("1: %c -> %c
",a,c);
else{
Hanot(n-1,a,b,c);
printf("%d: %c -> %c
",n,a,c);
Hanot(n-1,b,c,a);
}
}
设计思路
第一步:编译头文件
第二步:汉诺塔函数声明
第三步:定义各种变量,输入n
第四步:a为起始柱,c为目的柱,b为过渡柱
第五步:定义汉诺塔函数
第六步:完成步骤
本题调试遇到的问题及解决方法
错误:格式出现错误
解决方法:读题认真
流程图
运行结果截图
后面几题不会难度太大,所以我并未写。
预习题
1、指针数组
例:
char *a[5];(字符指针数组)
数组的每个元素都是指针类型,用于存放内存地址。
2、数组指针
例:
int a[4]={1,2,3,4};
int *p;
p=a;
3、指针函数
定义一个指针变量,接收函数的入口地址,让它指向函数,这就是函数指针通过指针调用函数。
一般格式:(函数指针名) (参数表)
例:
fun函数
(funptr)(3,5)
4、函数指针
一般格式:类型名(变量名)(参数类型名)
例:int (funptr)(int int);
5、二级指针
一般定义:
类型名 * *变量名
例:
int a=10,b=20,
int pa=&a,pb=&b;
int * ppa=&pa; ppb=&pb;
所以 ppa=10, *ppb=20;
6、单向链表 (https://baike.sogou.com/v10718780.htm?fromTitle=单向链表)
单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 通过指针连接起来,但是只能单向遍历的内存块。由于它是单向的,或者说不可逆的,所以我们可以把它比作我们的人生:小学->中学->大学->工作->养老。
二、学习进度条
三、描述结对编程的过程和结对编程的优缺点
优缺点:在我思考问题时,编程对象会主动提出帮助,我写代码,他输入代码,合作愉快,互帮互助。
四、学习感悟
1、看书很重要,明白怎样运用知识来写代码。
2、团结协作很重要,大家一起思考,共同完成作业。
3、好好学习,天天向上。