[請益] 沒有想像中簡單的小問題

看板Programming作者 (我愛三筒小叮噹~~)時間16年前 (2009/03/10 16:39), 編輯推噓7(708)
留言15則, 9人參與, 最新討論串1/34 (看更多)
這次某個公營考試的程式題目 列印出如下格式: 3 345 34567 345 3 當初一看到題目 覺得很簡單啊 就跳下去寫了 後來發現~ 唔 要左拼拼 右湊湊 才能搞定 挺多狀況的 上來討解答很白目 我是自己寫出來後 才想請問各位高手 有沒有比較直覺的想法還有解法 或是迴圈數更少的做作 看有些比較有經驗的版本的解答 應該可以加強下次寫此類題目的邏輯推演 小弟先將自己的版本放上來 謝謝各位分享 :) //_____________程式開始 ________________ #include<stdio.h> void main(void) { int i,j; int step1=0; // 這二個步進值 分別控制 從三開始印到何時停止 int step2=1; // for (i=1;i<=5;i++) { // 外層迴圈跑五次 列印五行 if(i<=3) { // 先寫上半段 到 34567 這個部份 for(j=1;j<=5;j++) { // 此迴圈是控制 每一行的五個數字 if(abs(j-3)<=step1) printf("%d\t",j+i-1); else printf("%s","\t"); } step1++; } if(i>3) { // 再寫下半段 for(j=1;j<=5;j++) { if(abs(j-3)<=step2) printf("%d\t",j-i+5); else printf("%s","\t"); } step2--; } printf("\n"); } } // 程式結束 ___________________________________ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.16.176

03/11 08:02, , 1F
用recursion,想到怎麼用後就搞定
03/11 08:02, 1F

03/11 09:01, , 2F
請問樓上同學 是否有更進一步的提示@@'
03/11 09:01, 2F

03/11 09:01, , 3F
我有點抓不到recursion的條件和感覺 謝謝
03/11 09:01, 3F

03/11 09:48, , 4F
為什麼只用一個if印五行 題目有規定嗎
03/11 09:48, 4F

03/11 09:49, , 5F
還是寫得越短有加分?
03/11 09:49, 5F

03/11 10:12, , 6F
不要在for裡面再用if分段
03/11 10:12, 6F

03/11 10:12, , 7F
直接寫成兩個for 每個for只做一件事情
03/11 10:12, 7F

03/11 10:13, , 8F
這樣才比較容易看懂和除錯
03/11 10:13, 8F

03/11 10:13, , 9F
(難怪這可以當考題)
03/11 10:13, 9F

03/11 12:16, , 10F
lol
03/11 12:16, 10F

03/11 14:04, , 11F
這題目應該是為了考 stack 的觀念
03/11 14:04, 11F

03/11 16:08, , 12F
不知道用賴皮的寫法可以拿幾分XD
03/11 16:08, 12F

03/11 20:41, , 13F
printf(" 3\n 345\n34567\n 345\n 3");
03/11 20:41, 13F

03/12 19:48, , 14F
樓上專業
03/12 19:48, 14F

03/17 06:23, , 15F
yoco GJ!
03/17 06:23, 15F
文章代碼(AID): #19jfVR-y (Programming)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 34 篇):
文章代碼(AID): #19jfVR-y (Programming)