Microsoft PowerPoint - The Twelve Days of Xmas.ppt

Similar documents
2013年度西藏自治区教育厅

薛 秦 高 继 宁 宋 明 锁 文 洪 梁 瑞 敏 贾 跃 进 内 蒙 古 自 治 区 (3 人 ) 琪 格 其 图 米 子 良 赵 震 生 辽 宁 省 (8 人 ) 田 素 琴 白 凤 鸣 肖 瑞 崇 黄 恩 申 白 长 川 杨 世 勇 李 敬 林 王 秀 云 吉 林 省 (5 人 ) 赵 继 福


< F20B4F2D3A1D7F7D2B5>

腊八粥的来历 南宋陆游诗云 今朝佛粥更相馈 反觉江村节 物新 说的就是腊八粥 可见 腊八节 吃 腊八 粥 的风俗 由来已久 每逢腊八这一天 不论是朝 廷 官府 寺院还是黎民百姓家都要做腊八粥 这一 天 人们还要祭祀祖先 众神并庆祝丰收 后来 逐 渐演变成吃腊八粥祝来年五谷丰登 对于腊八粥的来历说法也


Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

_汪_文前新ok[3.1].doc

Microsoft PowerPoint - 20-string-s.pptx

CC213

穨report.PDF

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 )

Downtown Minneapolis Residence Inn by Marriott 45 South 8th Street FAX: Graves 601 Hotel 601 First Avenu

发展党员材料填写参考(上网).doc

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

untitled

CC213

新・解きながら学ぶC言語

C/C++ - 字符输入输出和字符确认

撰 寫 人 :2B1 王 清 燕 書 名 : 追 風 箏 的 女 孩 條 碼 號 : 月 份 閱 讀 心 得 佳 作 我 覺 得 這 是 一 本 教 我 們 用 殘 酷 的 角 度 認 識 生 命 的 小 說 ; 與 同 儕 甚 是 摯 友 間 也 可 能 出 現 競 奪 下 的

Wuhan Textile University M. A. S Dissertation Emotional Design of Home Textile Based on the Chinese Traditional Culture Wedding Bedding for Example Ca

新・明解C言語入門編『索引』

Microsoft Word - Sing Fu

新版 明解C言語入門編

untitled

Microsoft Word - 目次範例-catalog doc

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

C 1

C/C++基礎程式設計班

PHP與MySQL 入門學習指南

校园之星

Microsoft PowerPoint - STU_C_Lang_CH05


ttian


Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

南开大学校史工作会议

Microsoft Word - ACL chapter02-5ed.docx

新・解きながら学ぶJava

untitled

第3章.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 第3章.doc

材 料 目 录 1. 党 员 发 展 及 转 正 流 程 图 2. 申 请 入 党 人 员 基 本 信 息 及 培 养 记 录 表 3. 思 想 汇 报 传 阅 及 意 见 反 馈 表 4. 入 党 积 极 分 子 培 养 考 察 表 5. 政 治 审 查 函 调 信 模 板 6. 政 治 审 查



2017ÅàÑø·½°¸


untitled

Microsoft Word - C-pgm-ws2010.doc

C

14: 6 不做清單上的事, 並不代表我們就可以隨心所欲 ; 我們不做, 是為了更深一層的原因 同樣, 也沒有人會因不受這些清單的捆綁, 就更能活出 豐盛的生命來 14: 15 8: : 17 在所有十誡中, 第十誡往往是最先遭破壞的一條 22: 37, 39 凡是使我們不能愛神與愛

untitled

校园之星

FY.DOC

Microsoft Word C-A卷.docx

Microsoft PowerPoint - Raptor-FlowChart-scy.pptx

C/C++ - 字符串与字符串函数

C/C++语言 - 分支结构

投影片 1

CC213

Microsoft Word finalSol.doc

< D313738B1F5A46CB5C4B773B1B42DB4BFA5C3B8712E706466>

C/C++ - 函数

Microsoft Word - Prog1-981.docx

致 謝 在 研 究 所 這 段 期 間 受 到 了 許 多 人 的 幫 助, 才 有 今 日 我 創 作 及 論 文 的 樣 貌 首 先 我 要 謝 謝 我 的 爸 媽, 知 道 我 自 小 就 喜 歡 塗 塗 畫 畫, 高 中 開 始 為 了 準 備 考 美 術 系 而 每 日 下 課 後 往 畫

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

三 练 四 ji 佟 n j 佾 n sh 俅 xi 佗 n 1. 坚 :( ) 决 ( ) 急 ( ) 立 ( ) 惠 b 侪 p 侪 2. 发 : 调 ( ) ( ) 水 丶 3. 友 b 佗 b 佗 : ( ) 出 ( ) 涉 zh 伽 i z 佗 q 侃 n ti 佗 o 4. 条 : 营

Transcription:

The Twelve Days of Xmas https://www.youtube.com/v/kqeobzlx Z8 丁培毅 1

On the first day of Xmas A Partridge in a Pear Tree On the second day of Xmas On the third day of Xmas On the fourth day of Xmas Lyrics On the fifth day of Xmas On the sixth day of Xmas On the seventh day of Xmas On the eighth day of Xmas 2

On the ninth day of Xmas On the tenth day of Xmas On the eleventh day of Xmas 11 Pipers Piping and a Partridge in a Pear 6 Geese Tree a Laying On the twelfth day of Xmas 12 Drummers Drumming 11 Pipers Piping 3

題目 請設計一個 C 程式, 列印出聖誕歌謠 12 Days of Christmas 完整的 12 段歌詞 請運用 for 迴圈 switch 敘述 及字串陣列設計 ( 上面 switch 的運用可以用迴圈取代 ) 請注意一定要避免重複的敘述 請小心歌詞中 and 連接詞以及冠詞 A 的大小寫 範例輸出 On the first day of Christmas A Partridge in a Pear Tree On the second day of Christmas On the third day of Christmas On the twelfth day of Christmas 12 Drummers Drumming 11 Pipers Piping 4

Bizarre Obfuscated Non example main(t,_,a)char* a;{ return! 0<t? t<3?main( 79, 13,a+main( 87,1 _,main( 86, 0, a+1)+a)):1,t<_?main(t+1, _, a ):3,main( 94, 27+t, a)&&t == 2?_<13?main(2, _+1, "%s %d %d\n"):9:16:t<0?t< 72?main(_, t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+, /+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+k w'k:'+}e#';dq#'l q#'+d'k#!/+k#;q#'r}ekk#}w'r}ekk{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'k {rw' ik{;[{nl]'/w#q#n'wk nw' iwk{kk{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl' {}rw]'/+,""}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"):t< 50?_==*a?putchar(31[a]):main( 65,_,a+1):main((*a == '/') + t, _, a + 1):0<t?main(2, 2, "%s"):*a=='/' main(0,main( 61,*a, "!ek;dc i@bk'(q) [w]*%n+r3#l,{}:\nuwloca O;m.vpbks,fxntdCeghiry"),a+1); } 印出的歌詞裡有兩個地方有錯, 好想把它改過來, 可是 5

設計方法與分析 1. 由範例輸出可以看到輸出有 12 個段落, 這一定需要一個迴圈, 因為在進入迴圈之前就知道需要做 12 次, 所以用一個 for 迴圈是很合適的, 每一次迴圈內列印出 1 個段落 On xxx my and a Partridge 其中藍色部份是每次迴圈執行時都不同的 On the first day of Christmas A Partridge in a Pear Tree On the twelfth day of Christmas 12 Drummers Drumming 11 Pipers Piping 2. xxx 代表 first, second, third, fourth,, twelfth 這些字串, 如果 for 迴圈的控制變數 i 由 0 遞增到 11 的話, 需要設計一個字元的指標陣列, 例如 const char *const ordinal[] = {"first", }; 然後在迴圈內運用 printf("on %s ", ordinal[i]); 來列印 6

3. 迴圈第一次執行時印一列, 第二次印兩列,, 第十二次印十二列, 這樣的表現看起來需要第二層的迴圈, 執行的次數由第一層迴圈的控制變數去算出來, 例如 : for (i=0; i<12; i++) // 印出 12 段歌詞 { } 或是 for (j=i; j>=0; j--) 印出步驟 2 的結果印出前 i+1 列 for (j=11 i; j<=11; j++) const char *sentences[] = {"a Partridge ",, 印出最後 i+1 列 "12 Drummers "}; ( 可以像步驟 2 中一樣設計一個字元的指標陣列 const char *sentences[] = {"12 Drummers ",,"a Partridge "}; 4. 和步驟 3 等效的另一種寫法是用 switch 敘述, 你可以想一下 測試一下下面這段程式的輸出 switch (paragraph) { case 12: printf("12 "); case 11: printf("11 "); } paragraph 為 12 時是不是印出兩列? paragraph 為 11 時是不是只印出一列? 嘗試修改為我們需要的功能 7

5. 步驟 3 或是步驟 4 中我們沒有特別去處理第 1 段歌詞中是 A Partridge in a Pear Tree, 但是在第 2 段到第 12 段歌詞中是 的問題, 該怎樣不重複程式碼又能夠只修改這一點點呢? a. 第一種方法是 if (i==0) // 第 1 段 printf("a Partridge in a Pear Tree\n"); else printf("\n"); 當然這樣還是有一部份重複 b. 簡單的改一下 if (i==0) // 第 1 段 printf("a"); else printf("and a"); printf(" Partridge in a Pear Tree\n"); 反正相同的部份就不要重複就是了 8

5. c. 程式可以再改一點點, 多運用變數來改變程式的表現, char article = 'A'; if (i>0) article = 'a'; printf("%c Partridge in a Pear Tree\n", article); 至於 and 就合併到 \nand 字串的後面, 反正印出 \n 時下一列一定是 and 開頭 6. 在這個程式的設計過程裡, 你也許發現我們某種層面上盡量在避開運用 if 或是 switch 把程式裡面各種選項展開來 ( 步驟 4, 步驟 5a, 和步驟 5b), 這樣子做當然讓程式可以很快地達成我們要求的表現, 但是你可以想像如果今天不是 12 段歌詞, 而是 120 段, 那麼用 switch 就頭痛了, 像這樣的考量其實在設計很多程式時都會不斷出現, 基本上不管是 12, 120, 或是 2, 其實寫程式的人都會像這樣有兩種考量, 有時你也許接到程式的需求時是 10, 可是後來付錢的人又改成 100, 你還是需要去滿足顧客的需求的, 有錢就任性囉! 9