這個做業屬於哪一個課程 | C語言程序設計 |
這個做業的要求在哪裏 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3201 |
我在這個課程的目標是 | 會使用遞歸函數 |
這個做業在哪一個具體方面幫助我實現目標 | 理解遞歸函數 |
參考文獻 | https://jingyan.baidu.com/article/0f5fb099d9ae7e6d8334eae1.html##1 |
漢諾塔是一個源於印度古老傳說的益智玩具。聽說大梵天創造世界的時候作了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞着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
#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); } }
本題照着書上的例題作的因此沒有碰見困難。this
以上圖片來自新浪微博。
本題要求你實現一個稍微更值錢一點的 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
本題不會了看了下網上的(http://www.javashuo.com/article/p-pkeqaqml-cg.html) 仍是不會。3d
在國際象棋中,皇后是最厲害的棋子,能夠橫走、直走,還能夠斜走。棋手馬克斯·貝瑟爾 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 . . . .
看了該博主的代碼(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 |