2019春第十一周作业

本周作业头

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/3203
我在这个课程的目标是 学会使用递归函数编程,知道宏的意义与编译预处理的含义
这个作业在那个具体方面帮助我实现目标 让我进一步了解了递归函数的应用
参考文献 C语言程序设计II第十章

基础作业

PTA: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 han(int n,char x,char z,char y);
int main (void)
{
    int n;
    char x,y,z;
    scanf("%d
",&n);
    scanf("%c %c %c ",&x,&y,&z);
    han(n,x,y,z);
    return 0;
}
void han(int n,char x,char y,char z){
	 if(n==1)
    {
        printf("%d: %c -> %c
",n,x,y);
    }
    
    else
    {
        han(n-1,x,z,y);
        printf("%d: %c -> %c
",n,x,y);
        han(n-1,z,y,x);
    }
    return; 
}

2)流程图

主函数:
自定义函数:

3)本题调试过程碰到问题及解决办法

遇到问题:写题目时一直是编译错误,段错误,答案错误,前面两个比较好解决,但答案错误我觉得代码没错,但就是答案错误。
解决办法:通过查阅书籍,询问同学,借鉴同学代码,然后改正了。但在pta上是答案正确后我在编译器上却不能输出,其他同学的代码也不能输出,原因还在寻找中。

4)运行截图

5)自我评价

评价:对于这个题目还是有许多疑惑地,有许多的测试点我感觉有点问题。
用时:2h。
2.编程题:估值一亿的AI核心代码

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


以上图片来自新浪微博。
本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:

  • 无论用户说什么,首先把对方说的话在一行中原样打印出来;
  • 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
  • 把原文中所有大写英文字母变成小写,除了I
  • 把原文中所有独立的 can youcould you 对应地换成 I canI could—— 这里“独立”是指被空格或标点符号分隔开的单词;
  • 把原文中所有独立的 Ime 换成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)[100];

指针数组:数组的各个元素都是指针类型的就叫指针数组,如char*a[10]

指针函数:首先它是一个函数,但返回值是地址,如int *pfun(int, int);

函数指针:将函数名定义一个指针变量,接收函数地址让它指向函数,就是函数指针,如int (*funptr)(int,int)

二级指针:就是指向指针的指针,如int * *pp=&p;

单向链表:它是由若干个同一结构类型的结点依次串接而成的,如struct stud_node*create_stu_Doc();

学习进度条

日期 这周所花时间 代码行数 学到的知识点简介
5/1~5/10 6h 100 递归函数的应用,宏的定义,编译预处理的意思

累计代码行数和博客字数

时间 博客字数 代码行数
第一周 0 60
第二周 120 100
第三周 220 160
第四周 260 200
第五周 300 360
第六周 600 580
第七周 820 700
第八周 1130 920
第九周 1300 1100
第十周 1600 1100
第十一周 1850 1200

折线图

学习感悟:对于这周的知识点,自己还是把握的不是很好,有点生疏,不太熟稔,希望自己能更快吸收这些知识点。

结对编程

照片:
过程:当时和结对对象在宿舍一起讨论题目,对于第一题都各自发表了自己的意见,也都写出来了,而第二题我们两个的思路都不对,讨论了许久还是没写出来。
优点:
  • 提高解题效率,使解题更加快速。
  • 从对方身上学到其他的东西。
  • 解题更加有意思,不那么枯燥。

缺点:

  • 做题不够仔细,两个人喜欢谈些其他的问题。
原文地址:https://www.cnblogs.com/lcbxhda/p/10846821.html