第十一周作业 以你之姓@ 2022-01-06 16:51 305阅读 0赞 第十一周作业 <table> <thead> <tr> <th>这个作业属于哪个课程</th> <th style="text-align:left;">C语言程序设计ll</th> </tr> </thead> <tbody> <tr> <td>这个作业要求在哪里</td> <td style="text-align:left;"><a href="https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3201" rel="nofollow">https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3201</a></td> </tr> <tr> <td>我在这个课程的目标是</td> <td style="text-align:left;">熟练运用递归函数</td> </tr> <tr> <td>这个作业在哪个具体方面帮助我实现目标</td> <td style="text-align:left;">第一个编程使我对递归函数的运用熟练了许多</td> </tr> <tr> <td>参考文献</td> <td style="text-align:left;">C语言程序设计II</td> </tr> </tbody> </table> # 选择题 # ![1581754-20190510160659969-185108351.png][] ![1581754-20190510160710709-1087543557.png][] # 编程题 # # 7-1 汉诺塔问题\* (10 分) # 汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。 ![1581754-20190510160856233-580082773.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 a,char w,char j,char k); int main(void) { int a; char w,j,k; scanf("%d\n",&a); scanf("%c %c %c",&w,&j,&k); hanio(a,w,j,k); return 0; } void hanio(int a,char w,char j,char k) { if(a==1) printf("%d: %c -> %c\n",a,w,j); else { hanio(a-1,w,k,j); printf("%d: %c -> %c\n",a,w,j); hanio(a-1,k,j,w); } } ## 2.思路总结 ## ![1581754-20190510212216879-587835866.png][] ## 3.本题遇到的问题及解决办法 ## 问题:代码运行时出现答案错误 解决办法:重新检查代码,发现自己给定义的变量多加了‘ ’符号,改正后答案正确 ## 4.正确截图 ## ![1581754-20190510161423862-623737855.png][] # 7-2 估值一亿的AI核心代码 (20 分) # ![1581754-20190510161557163-597508892.jpg][] 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来; 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉; 把原文中所有大写英文字母变成小写,除了 I; 把原文中所有独立的 can you、could you 对应地换成 I can、I 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 ## 1.代码 ## 本题不会做,百度搜索到了这位博主的代码([http://www.pianshen.com/article/5255311811/][http_www.pianshen.com_article_5255311811]),但还是不怎么懂 # 7-3 \*\*\*八皇后问题 (20 分) # 在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 1848 年提出著名的八皇后问题:即在 8 × 8 的棋盘上摆放八个皇后,使其不能互相攻击 —— 即任意两个皇后都不能处于同一行、同一列或同一条斜线上。 现在我们把棋盘扩展到 n × n 的棋盘上摆放 n 个皇后,请问该怎么摆?请编写程序,输入正整数 n,输出全部摆法(棋盘格子空白处显示句点“.”,皇后处显示字母“Q”,每两格之间空一格)。 ## 输入格式 ## 正整数 n (0 < n ≤ 12) ## 输出格式 ## 若问题有解,则输出全部摆法(两种摆法之间空一行),否则输出 None。 要求:试探的顺序逐行从左往右的顺序进行,请参看输出样例2。 ## 输入样例1 ## 3 ## 输出样例1 ## None ## 输入样例2 ## 6 ## 输出样例2 ## . Q . . . . . . . Q . . . . . . . Q Q . . . . . . . Q . . . . . . . Q . . . Q . . . . . . . . Q . Q . . . . . . . . Q . Q . . . . . . . . Q . . . . . Q . . Q . . . . . . . . . Q . . Q . . . . . . . . . Q . . Q . . . . . . . Q . . . Q . . . Q . . . . . . . . . . Q . . . Q . . . Q . . . . ## 1.代码 ## 本题也不会做,故百度搜索了这位博主的代码([http://www.cnblogs.com/cnnnnnn/p/8506883.html][http_www.cnblogs.com_cnnnnnn_p_8506883.html]),还是不大理解 # 预习题 # ## 请大家查阅资料,思考如下问题: ## 请举实例解释以下几个概念:数组指针,指针数组,指针函数,函数指针,二级指针,单向链表。(无实例不给分) 请用自己的理解回答。如果有引用他人的文字,请一定要标出出处(使用Markdown的链接方式)。 ### 1. 数组指针:一个指向一维或者多维数组的指针。 ### 比如:int * b=new int[10];指向一维数组的指针b ; 注意,这个时候释放空间一定要delete [] ,否则会造成内存泄露,b 就成为了空悬指针。 int (*b2)[10]=new int[10][10]; 注意,这里的b2指向了一个二维int型数组的首地址。 注意:在这里,b2等效于二维数组名,但没有指出其边界,即最高维的元素数量,但是它的最低维数的元素数量必须要指定!就像指向字符的指针,即等效一个字符串,不要把指向字符的指针说成指向字符串的指针。这与数组的嵌套定义相一致。 int(*b3) [30] [20]; //三级指针――>指向三维数组的指针; int (*b2) [20]; //二级指针; b3=new int [1] [20] [30]; b2=new int [30] [20]; 两个数组都是由600个整数组成,前者是只有一个元素的三维数组,每个元素为30行20列的二维数组,而另一个是有30个元素的二维数组,每个元素为20个元素的一维数组。 删除这两个动态数组可用下式: delete [] b3; //删除(释放)三维数组; delete [] b2; //删除(释放)二维数组; 再次重申:这里的b2的类型是int (*) ,这样表示一个指向二维数组的指针。b3表示一个指向(指向二维数组的指针)的指针,也就是三级指针. ### 2. 指针数组:一个数组里存放的都是同一个类型的指针,通常我们把他叫做指针数组。 ### 比如 int * a[10];它里边放了10个int * 型变量,由于它是一个数组,已经在栈区分配了10个(int * )的空间,也就是32位机上是40个byte,每个空间都可以存放一个int型变量的地址,这个时候你可以为这个数组的每一个元素初始化,或者单独做个循环去初始化它。 举例:声明一个指针数组如下所示,可理解为:首先,其为一个3维数组,数组里存放的是返回int型的指针。 [cpp] view plain copy int *p[3]; p[0] = new int[4]; p[1] = new int[5]; p[2] = new int[6]; delete p[0]; delete p[1]; delete p[2]; ([http://www.cnblogs.com/findumars/p/6417941.html][http_www.cnblogs.com_findumars_p_6417941.html]) ### 3.指针函数 ### 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。 格式: 类型说明符 \* 函数名(参数) 当然了,由于返回的是一个地址,所以类型说明符一般都是int。 例如: int *GetDate(); int * aaa(int,int); 函数返回的是一个地址值,经常使用在返回数组的某一元素地址上。 int * GetDate(int wk,int dy); main() { int wk,dy; do { printf("Enter week(1-5)day(1-7)\n"); scanf("%d%d",&wk,&dy); } while(wk<1||wk>5||dy<1||dy>7); printf("%d\n",*GetDate(wk,dy)); } int * GetDate(int wk,int dy) { static int calendar[5][7]= { {1,2,3,4,5,6,7}, {8,9,10,11,12,13,14}, {15,16,17,18,19,20,21}, {22,23,24,25,26,27,28}, {29,30,31,-1} }; return &calendar[wk-1][dy-1]; } 程序应该是很好理解的,子函数返回的是数组某元素的地址。输出的是这个地址里的值。 ### 4.函数指针 ### 指向函数的指针包含了函数的地址,可以通过它来调用函数。声明格式如下: 类型说明符 (\*函数名)(参数) 其实这里不能称为函数名,应该叫做指针的变量名。这个特殊的指针指向一个返回整型值的函数。指针的声明笔削和它指向函数的声明保持一致。 指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。 例如: void (*fptr)(); 把函数的地址赋值给函数指针,可以采用下面两种形式: fptr=&Function; fptr=Function; 取地址运算符&不是必需的,因为单单一个函数标识符就标号表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。可以采用如下两种方式来通过指针调用函数: x=(*fptr)(); x=fptr(); 第二种格式看上去和函数调用无异。但是有些程序员倾向于使用第一种格式,因为它明确指出是通过指针而非函数名来调用函数的。下面举一个例子: void (*funcp)(); void FileFunc(),EditFunc(); main() { funcp=FileFunc; (*funcp)(); funcp=EditFunc; (*funcp)(); } void FileFunc() { printf("FileFunc\n"); } void EditFunc() { printf("EditFunc\n"); } 程序输出为: FileFunc EditFunc ([http://sh.qihoo.com/pc/933e96e05c5457ab8?cota=4&tj\_url=xz&sign=360\_e39369d1&refer\_scene=so\_1][http_sh.qihoo.com_pc_933e96e05c5457ab8_cota_4_tj_url_xz_sign_360_e39369d1_refer_scene_so_1]) ### 5.二级指针:指向指针的指针。 ### 一级指针与二级指针的比较:一级指针的值为地址,地址需要空间来存放,是空间就具有地址 ,二级指针就是为了获取这一空间的地址。一级指针所关联的是其值(一个地址)名下空间里 的数据,这个数据可以是任意类型并做任意用途,但二级指针所关联的数据只有一个类型一个 用途,就是地址。 指针的用途:提供目标的读取或改写,而二级指针就是对于内存地址的读取和改写。 二级指针分为指向指针变量的指针和指向数组的指针。 例1、(简单的指向指针变量的指针) int main() { int k,*p,**pp; k=8; p=&k; pp=&p; printf(“k=%d,p=%d,p=%d\n”,**pp,*pp,p); return 0; } 例2、(指向数组的指针) include ([https://blog.csdn.net/sunberryl/article/details/51125870][https_blog.csdn.net_sunberryl_article_details_51125870]) ### 6.单向链表 ### 单向链表是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。链表是使用指针进行构造的列表,并且是由一个个结点组装起来的,因此又称为结点列表。其中每个结点都有指针成员变量指向列表中的下一个结点,head指针指向第一个结点称为表头,而终止于最后一个指向nuLL的指针。 结点的数据结构 typedef struct _LINK_NODE { int data; struct _LINK_NODE* next; }LINK_NODE; ([https://blog.csdn.net/silent123go/article/details/52693735][https_blog.csdn.net_silent123go_article_details_52693735]) # 结对编程感想 # 本周结对编程依旧和之前一样,我们都是先自己独立思考做题,然后遇到什么问题了,我再向我的搭档寻求帮助,下周要再接再厉 # 本周学习感悟 # 我觉得本周布置的作业很难,后面两个编程题看了别人的代码及解说也还是不怎么懂,所以以后要更加努力,加油。 # 学习进度条 # <table> <thead> <tr> <th>周/日期</th> <th style="text-align:left;">这周所花时间</th> <th style="text-align:left;">代码行数</th> <th style="text-align:left;">知识点简介</th> <th style="text-align:left;">目前比较迷惑的问题</th> </tr> </thead> <tbody> <tr> <td>3/4-3/10</td> <td style="text-align:left;">五个多小时</td> <td style="text-align:left;">30</td> <td style="text-align:left;">编写程序时处理文件</td> <td style="text-align:left;">fprintf语句和fscanf语句的运用有些地方还有稍许疑惑</td> </tr> <tr> <td>3/11-3/15</td> <td style="text-align:left;">四天</td> <td style="text-align:left;">65</td> <td style="text-align:left;">二维数组的运用</td> <td style="text-align:left;">二维数组的运用还存在稍许疑惑</td> </tr> <tr> <td>3/17-3/22</td> <td style="text-align:left;">三天</td> <td style="text-align:left;">108</td> <td style="text-align:left;">二维数组的定义及运用,选择排序法和冒泡排序法的运用</td> <td style="text-align:left;">冒泡排序法的运用还存在稍许问题</td> </tr> <tr> <td>3/25-3/29</td> <td style="text-align:left;">五天</td> <td style="text-align:left;">72</td> <td style="text-align:left;">学习了判断回文,使用字符串编程以及一维数组的灵活使用</td> <td style="text-align:left;">对于一维数组的使用还有稍许疑惑</td> </tr> <tr> <td>4/1-4/5</td> <td style="text-align:left;">五天</td> <td style="text-align:left;">78</td> <td style="text-align:left;">学习了指针的基本运用,以及如何使用指针实现函数调用返回多个值等</td> <td style="text-align:left;">对指针的运用仍有点不熟练</td> </tr> <tr> <td>4/6-4/10</td> <td style="text-align:left;">五天</td> <td style="text-align:left;">76</td> <td style="text-align:left;">对指针和二维数组相关知识点的巩固与运用</td> <td style="text-align:left;">对布置的预习作业存在些许疑惑</td> </tr> <tr> <td>4/15-4/18</td> <td style="text-align:left;">四天</td> <td style="text-align:left;">104</td> <td style="text-align:left;">动态内存分配的运用,指针的拓展运用</td> <td style="text-align:left;">对于动态内存分配的运用仍有些许疑惑</td> </tr> <tr> <td>4/22-4/26</td> <td style="text-align:left;">五天</td> <td style="text-align:left;">74</td> <td style="text-align:left;">结构数组,结构变量以及结构指针的运用</td> <td style="text-align:left;">对于结构体的运用还有稍许疑惑</td> </tr> <tr> <td>4/29-5/3</td> <td style="text-align:left;">四天</td> <td style="text-align:left;">0</td> <td style="text-align:left;">巩固有关结构体的知识点</td> <td style="text-align:left;">暂无</td> </tr> <tr> <td>5/6-5/10</td> <td style="text-align:left;">五天</td> <td style="text-align:left;">22</td> <td style="text-align:left;">递归函数的运用及其相关知识</td> <td style="text-align:left;">对作业后面的几个编程题存在疑惑,不会做</td> </tr> </tbody> </table> # 表格和折线图 # <table> <thead> <tr> <th>时间</th> <th style="text-align:right;">代码行数</th> <th style="text-align:right;">博客字数</th> </tr> </thead> <tbody> <tr> <td>第一周</td> <td style="text-align:right;">0</td> <td style="text-align:right;">0</td> </tr> <tr> <td>第二周</td> <td style="text-align:right;">30</td> <td style="text-align:right;">318</td> </tr> <tr> <td>第三周</td> <td style="text-align:right;">65</td> <td style="text-align:right;">840</td> </tr> <tr> <td>第四周</td> <td style="text-align:right;">108</td> <td style="text-align:right;">1200</td> </tr> <tr> <td>第五周</td> <td style="text-align:right;">72</td> <td style="text-align:right;">1337</td> </tr> <tr> <td>第六周</td> <td style="text-align:right;">78</td> <td style="text-align:right;">1635</td> </tr> <tr> <td>第七周</td> <td style="text-align:right;">76</td> <td style="text-align:right;">1513</td> </tr> <tr> <td>第八周</td> <td style="text-align:right;">104</td> <td style="text-align:right;">1429</td> </tr> <tr> <td>第九周</td> <td style="text-align:right;">74</td> <td style="text-align:right;">1635</td> </tr> <tr> <td>第十周</td> <td style="text-align:right;">0</td> <td style="text-align:right;">1865</td> </tr> <tr> <td>第十一周</td> <td style="text-align:right;">22</td> <td style="text-align:right;">1688</td> </tr> </tbody> </table> ![1581754-20190510170157777-1233374082.png][] 转载于:https://www.cnblogs.com/linkedashewaixueyuan/p/10845374.html [1581754-20190510160659969-185108351.png]: /images/20211227/cfbd50955d464a8aa03dd59442403b5b.png [1581754-20190510160710709-1087543557.png]: /images/20211227/7a34e5c868844c0cb810648051b40701.png [1581754-20190510160856233-580082773.jpg]: /images/20211227/26f1c1d902d0406681f5da8203e3eef6.png [1581754-20190510212216879-587835866.png]: /images/20211227/c11ab555bc2f44e5b3c735301ebe4525.png [1581754-20190510161423862-623737855.png]: /images/20211227/91115e46661a431c9c51a2c51c1f68e1.png [1581754-20190510161557163-597508892.jpg]: /images/20211227/b54168534a8045f6a11e4e24fc8646b6.png [http_www.pianshen.com_article_5255311811]: http://www.pianshen.com/article/5255311811/ [http_www.cnblogs.com_cnnnnnn_p_8506883.html]: http://www.cnblogs.com/cnnnnnn/p/8506883.html [http_www.cnblogs.com_findumars_p_6417941.html]: http://www.cnblogs.com/findumars/p/6417941.html [http_sh.qihoo.com_pc_933e96e05c5457ab8_cota_4_tj_url_xz_sign_360_e39369d1_refer_scene_so_1]: http://sh.qihoo.com/pc/933e96e05c5457ab8?cota=4&tj_url=xz&sign=360_e39369d1&refer_scene=so_1 [https_blog.csdn.net_sunberryl_article_details_51125870]: https://blog.csdn.net/sunberryl/article/details/51125870 [https_blog.csdn.net_silent123go_article_details_52693735]: https://blog.csdn.net/silent123go/article/details/52693735 [1581754-20190510170157777-1233374082.png]: /images/20211227/1b831151a44146219713c4db541597f2.png
相关 第十周作业 > 1、 简述DNS服务,并搭建DNS服务器,实现主从,子域授权 答:在slave服务器上 vim /etc/named.rfc1912 zone “kil 矫情吗;*/ 2022年01月12日 20:43/ 0 赞/ 232 阅读
相关 第十二周作业 <table> <thead> <tr> <th>这个作业属于那个课程</th> <th>C语言程序设计II</th> </tr> </th 淡淡的烟草味﹌/ 2022年01月11日 06:23/ 0 赞/ 315 阅读
相关 第十周作业 第十周作业 <table> <thead> <tr> <th>这个作业属于那个课程</th> <th>C语言程序设计II</th> </t 灰太狼/ 2022年01月09日 06:43/ 0 赞/ 261 阅读
相关 第十二周作业 本周作业头 <table> <thead> <tr> <th style="text-align:left;">这个作业属于那个课程</th> 深藏阁楼爱情的钟/ 2022年01月07日 04:57/ 0 赞/ 279 阅读
相关 第十一周作业 第十一周作业 <table> <thead> <tr> <th>这个作业属于哪个课程</th> <th style="text-align:left 以你之姓@/ 2022年01月06日 16:51/ 0 赞/ 306 阅读
相关 第十一周作业 ?挺开心的一周 <table> <tbody> <tr> <td style="text-align:left;">这个作业’属于那个课程</td> 末蓝、/ 2022年01月06日 16:41/ 0 赞/ 310 阅读
相关 第十一周作业 <table> <thead> <tr> <th>这个作业属于那个课程</th> <th>C语言程序设计II</th> </tr> </th Myth丶恋晨/ 2021年12月23日 11:49/ 0 赞/ 366 阅读
相关 第十二周作业 本周作业头 <table> <thead> <tr> <th>这次作业属于哪个课程</th> <th style="text-align:rig 我不是女神ヾ/ 2021年12月20日 11:34/ 0 赞/ 421 阅读
相关 2019春第十一周作业 <table> <thead> <tr> <th> </th> <th> </th> </tr> </thead> 朴灿烈づ我的快乐病毒、/ 2021年12月17日 12:17/ 0 赞/ 352 阅读
相关 2019春第十一周作业 <table> <tbody> <tr> <td>这个作业属于那个课程</td> <td>C语言程序设计2</td> </tr> <tr> àì夳堔傛蜴生んèń/ 2021年12月13日 01:51/ 0 赞/ 304 阅读
还没有评论,来说两句吧...