zoukankan      html  css  js  c++  java
  • 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,a,b);
        }
        else{
            hanio(n-1,a,c,b);
            printf("%d: %c -> %c
    ",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行 函数结构,递归函数 感觉自己越学越懵

    学习感受

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

    结对编程:

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

  • 相关阅读:
    js数据类型转换
    html5的onhashchange和history历史管理
    Javascript语言精粹-毒瘤和糟粕
    [夏天Object]运行时程序执行的上下文堆栈(一)
    [Object]继承(经典版)(五)封装
    [Object]继承(经典版)(四)多重继承和组合继承
    flex 弹性布局的大坑!!
    带视觉差的轮播图
    不用循环的数组求和
    CSS3盒模型display:box简述
  • 原文地址:https://www.cnblogs.com/mozzieqzw/p/10846786.html
Copyright © 2011-2022 走看看