第十一週做業


這個做業屬於哪一個課程 C語言程序設計
這個做業的要求在哪裏 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3201
我在這個課程的目標是 會使用遞歸函數
這個做業在哪一個具體方面幫助我實現目標 理解遞歸函數
參考文獻 https://jingyan.baidu.com/article/0f5fb099d9ae7e6d8334eae1.html##1

一.基礎題

選擇題


7-1 漢諾塔問題* (10 分)

漢諾塔是一個源於印度古老傳說的益智玩具。聽說大梵天創造世界的時候作了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞着64片黃金圓盤,大梵天命令僧侶把圓盤移到另外一根柱子上,而且規定:在小圓盤上不能放大圓盤,每次只能移動一個圓盤。當全部圓盤都移到另外一根柱子上時,世界就會毀滅。html

請編寫程序,輸入漢諾塔圓片的數量,輸出移動漢諾塔的步驟。
輸入格式編程

圓盤數 起始柱 目的柱 過分柱

輸出格式數組

移動漢諾塔的步驟
每行顯示一步操做,具體格式爲:
盤片號: 起始柱 -> 目的柱
其中盤片號從 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 ta (int e,char a,char b,char c);
int main(){
    int n;char a,b,c,op;
    scanf("%d%c",&n,&op);
    scanf("%c %c %c",&a,&b,&c); 
    ta(n,a,b,c);
    return 0;
}
void ta (int e,char a,char b,char c)
{
    if(e==1)
    printf("%d: %c -> %c\n",e,a,b);
    else{
        ta(e-1,a,c,b);
        printf("%d: %c -> %c\n",e,a,b);
        ta(e-1,c,b,a);
    }
}

2)設計思路

3)本題調試過稱中遇到的問題及解決辦法

本題照着書上的例題作的因此沒有碰見困難。this

4)運行截圖

7-2 估值一億的AI核心代碼 (20 分)



以上圖片來自新浪微博。
本題要求你實現一個稍微更值錢一點的 AI 英文問答程序,規則是:
不管用戶說什麼,首先把對方說的話在一行中原樣打印出來;
消除原文中多餘空格:把相鄰單詞間的多個空格換成 1 個空格,把行首尾的空格所有刪掉,把標點符號前面的空格刪掉;
把原文中全部大寫英文字母變成小寫,除了 I;
把原文中全部獨立的 can you、could you 對應地換成 I can、I could—— 這裏「獨立」是指被空格或標點符號分隔開的單詞;
把原文中全部獨立的 I 和 me 換成 you;
把原文中全部的問號 ? 換成驚歎號 !;
在一行中輸出替換後的句子做爲 AI 的回答。
輸入格式:
輸入首先在第一行給出不超過 10 的正整數 N,隨後 N 行,每行給出一句不超過 1000 個字符的、以回車結尾的用戶的對話,對話爲非空字符串,僅包括字母、數字、空格、可見的半角標點符號。
輸出格式:
按題面要求輸出,每一個 AI 的回答前要加上 AI: 和一個空格。
輸入樣例:.net

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.javashuo.com/article/p-pkeqaqml-cg.html) 仍是不會。3d

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)目前還不太懂
2、預習題
請你們查閱資料,思考以下問題:

請舉實例解釋如下幾個概念:數組指針,指針數組,指針函數,函數指針,二級指針,單向鏈表。(無實例不給分)

1.數組指針
數組指針強調的是指針,而且這個指針指向一個數組,即指針變量存放的是數組地址。

2.指針數組
指針數組強調的是數組,而且數組元素是指針類型。
eg:int a[10],其中a是一個數組,數組元素是指針(int)。

3.指針函數
指針函數指帶有指針的函數,即其本質是一個函數,只不過這種函數返回的是一個對應類型的地址。

4.函數指針
函數指針是指向可執行代碼段或調用可執行代碼段的信息塊的指針,而不是指向某種數據的指針。函數指針是將函數當作普通數據那樣存儲和管理。
eg:void test(char* str);
void (p)(char),其中p是一個指針,而且指向一個函數,這個函數參數是char*,返回類型是void型。

5.二級指針
二級指針指的是A(即B的地址)是指向指針的指針,用於存放二級指針的變量稱爲二級指針變量.根據B的不一樣狀況,二級指針又分爲指向指針變量的指針和指向數組的指針。
eg:int i,*p,**pi;
p=&i; pi=π

6.單向鏈表
單向鏈表(單鏈表)是鏈表的一種,其特色是鏈表的連接方向是單向的,對鏈表的訪問要經過順序讀取從頭部開始。 經過指針鏈接起來,可是隻能單向遍歷的內存塊。
eg:這裏有一個單向鏈表的經典示例( https://wenku.baidu.com/view/e880d93483c4bb4cf7ecd130.html
3、學習感悟
本週學習了遞歸函數和宏定義,我課後仔細看了下書,發現對遞歸函數仍是隻知其一;不知其二不太理解遞歸的用法及使用,好迷茫啊。
在週末的時候要好好看看資料了,這周在網上買的C語言遊戲開發的書到了,今天看了幾頁感受真的好有趣啊,真的好完。
4、結對編程感想
這周題目好難,我和隊友都沒能在晚自習上得到進展。
5、學習進度條

五.學習進度條


周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
2/25-3/3 5h 39 一維數組的定義和引用及初始化 字符數組和整型數組的區別
3/4-3/10 5h 47 文件的讀取、寫入, 處理和開關;文件的打開方. 文件的分類,什麼是二進制文件;字符數組的讀取和寫入
3/11-3/17 6h 57 二維數組的定義及應用 二維數組的行和列的嵌套循環輸入和輸出
3/18-3/24 3h 33 選擇排序法、冒泡排序法和二分查找法 不清楚選擇排序法和冒泡排序法的區別
3/25-3/31 10h 40 字符數組和字符串的區別,字符串的輸入輸出方式和格式,二維數組更高級的運用。 不清楚指針在程序中的做用與使用
4/1-4/7 6h 50 變量、內存單元和地址之間的關係;指針變量的定義及初始化,指針變量的基本運算,指針、數組和地址間的關係 冒泡排序法不太明白
4/8-4/14 12h 99 掌握數組名做爲函數參數的用法,理解指針、數組和地址之間的關係,理解指針和數組能夠實現相同的操做 作基礎題第二題時發現之前的知識不少都忘記了
4/15-4/21 12h 132 掌握經常使用字符串函數以及使用指針操做字符串的方法,理解動態內存分配 各個動態內存分配函數的區別仍是不太清楚
4/22-4/28 12h 135 合理定義結構,使用結構變量與結構數組編程,掌握結構指針的操做,並應用於函數傳遞 解遞歸式的三種方法不懂
4/29-5/4 7h 0 結構數組及結構指針;如何提升本身與他人的競爭力?如何有效的記憶和學習?如何提問? 各個動態內存分配函數的使用仍是不太清楚
5/5-5/11 20h 26 可以使用遞歸函數進行編程;掌握宏的基本用法;掌握編譯預處理的概念 如何熟練使用遞歸函數

六.表格和折線圖


時間 代碼行數 博客字數
第一週 39 400
第二週 47 500
第三週 57 550
第四周 98 600
第五週 88 700
第六週 70 800
第七週 99 900
第八週 150 1500
第九周 120 2500
第十一週 26 2800

相關文章
相關標籤/搜索