2019春第十一周作业

这个作业属于哪个课程 C语言程序设计Ⅱ
这个作业的要求在哪里 2019春第十一周作业
我在这个课程的目标是 程序的多函数结构;能够使用递归函数进行编程;掌握宏的基本用法;掌握编译预处理的概念。
参考文献 书本第十章的知识以及百度查阅的知识

第十一周作业

基础作业:

题目一:编程题:汉诺塔问题*

汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着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

实验代码

#include<stdio.h>
void hanio (int n, char a, char b, char c);
   int main(void)
{
    int n;
    char a,b,c;
    scanf("%d",&n);
    scanf(" %c %c %c ",&a,&b,&c);
    hanio(n, a, b, c);
    return 0;
}
void hanio(int n,char a,char b,char c){
    if(n==1){
        printf("%d: %c -> %c\n",n,a,b);
    }
    else{
        hanio(n-1,a,c,b);
        printf("%d: %c -> %c\n",n,a,b);
        hanio(n-1,c,b,a);
    }
}

运行结果截图

变成流程图

题目二:编程题:估值一亿的AI核心代码


以上图片来自新浪微博。

本题要求你实现一个稍微更值钱一点的 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

设计思路

没有一点思路

本题调试过程碰到问题及解决方法

感觉全是问题

题目三:编程题:***八皇后问题

在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 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 、数组指针

数组指针,指的是数组名的指针,即数组首元素地址的指针,即是指向数组的指针,数组指针只是一个指针变量,它占有内存中一个指针的存储空间

int a[10][20];
int (*p)[10];  

2 、指针数组

指针数组中的每一个元素均为指针,即有诸形如“ptr_array[i]”的指针。由于数组元素均为指针,因此ptr_array[i]是指第i+1个元素的指针,指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间

int *p[10];
int a[10][20];

3 、指针函数

首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有“函数返回值”,而且,在主调函数中,函数返回值必须赋给同类型的指针变量

float *fun();
float *p;
p = fun(a);

4 、函数指针

返回类型(*函数名)(参数表)

char (*pFun)(int); 
char glFun(int a){ return;} 
void main() 
{ 
    pFun = glFun; 
    (*pFun)(2); 
}

函数指针使用方法

5 、二级指针

二级指针作为函数参数的作用:在函数外部定义一个指针p,在函数内给指针赋值,函数结束后对指针p生效,那么我们就需要二级指针。
二级指针操作:

#include<iostream>
using namespace std;
int a= 10;
int b = 100;
int *q;

void func(int **p)
{
	cout<<"func:&p="<<&p<<",p="<<p<<endl;
	*p = &b;  //3
	cout<<"func:&p="<<&p<<",p="<<p<<endl;
}
int main()
{
	cout<<"&a="<<&a<<",&b="<<&b<<",&q="<<&q<<endl;
	q = &a;
	cout<<"*q="<<*q<<",q="<<q<<",&q="<<&q<<endl;
	func(&q); 
	cout<<"*q="<<*q<<",q="<<q<<",&q="<<&q<<endl;
	system("pause");

	return 0;
}

二级指针的作用详解

6 、单向链表

一步一步写算法(之单向链表)

有的时候,处于内存中的数据并不是连续的。那么这时候,我们就需要在数据结构中添加一个属性,这个属性会记录下面一个数据的地址。有了这个地址之后,所有的数据就像一条链子一样串起来了,那么这个地址属性就起到了穿线连结的作用。
    相比较普通的线性结构,链表结构的优势是什么呢?我们可以总结一下:
    (1)单个节点创建非常方便,普通的线性内存通常在创建的时候就需要设定数据的大小
    (2)节点的删除非常方便,不需要像线性结构那样移动剩下的数据
    (3)节点的访问方便,可以通过循环或者递归的方法访问到任意数据,但是平均的访问效率低于线性表
    那么在实际应用中,链表是怎么设计的呢?我们可以以int数据类型作为基础,设计一个简单的int链表

学习学习进度统计&学习感悟

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
3/4-3/9 6个小时 35行 学到了文件的创建,读取,输入 就是在读入文件的时候有点无法读取,输入文件的数据不正确
3/10-3/15 8个小时 48行 学习了一点二维数组 二维数组还有点不太明白
3/16-3/22 10个小时 38行 学习了数组的排序 对冒泡排序不是很懂
3/23-3/29 5个小时 46行 学习了一点strcpy函数 目前没有
3/30-4/5 6个小时 35行 学习了指针,以及一些函数的定义返回 对指针的用法有何意义不是很懂
4/6-4/12 8小时 55行 学习了数组与指针间的关系以及运用 暂无
4/13-4/19 5小时 33行 指针的进阶与动态内存分配 动态内存分配还不是很懂
4/20-4/26 3小时 22行 了解和学习结构的概念与定义,结构变量的使用以及结构数组和指针的使用 结构指针不太会
5/4-5/10 3小时 21行 函数结构,递归函数 感觉自己越学越懵

学习感受

这一周老师教的东西感觉开始不了解了,更加深奥了,我已经开始有点听不懂了

结对编程:

这一周依旧没有结对编程,我的编程对象她仿佛学的比我懂一些,而我感觉开始落后她了

posted @ 2019-05-10 21:15  Mozzie邱治文  阅读(207)  评论(0编辑  收藏  举报