看板 C_and_CPP 關於我們 聯絡資訊
各位好,目前在準備國考,又是個程式新手,碰到以下幾個問題想請各位指點,謝謝。 我會加入些我的想法,請指正,錯得離譜請海涵<(_ _)> 1. #include<stdio.h> int main() { int choice=1; switch(choice) { case 1: printf("*"); case 2: printf("**"); case 3: printf("***"); } return 0; } 答案:****** 我的想法:choice=1,應該是case 1的輸出吧?就是一顆而已。但是答案是六顆, 感覺像是case1到3全跑過一次!? ============================================================================== 2. (只節錄一段看不懂的部分,是條件判斷) a=10, b=5 if(!a>100 && b<6)是真還是假呢? 我的想法:b<6是真,但是a>100是假,但因為前面有個代表否定的"!"所以變成真。 因此真&&真=真。 ============================================================================== 3. #include<stdio.h> int main() { int a=64, b=1; printf("%/d", a>>(1+(b<<2))); return 0; } 答案:2 我的想法:這題真的搞不懂...抱歉。 ============================================================================== 4. #include<stdio.h> int foo1(int v) { int a=0; a+=v; return a; } int foo2(int v) { static int a=0; a+=v; return a; } int main() { foo1(10); foo2(10); printf("%d %d", foo1(5), foo(5)); return 0; } 答案:5 15 我的想法:一開始foo1和foo2的v=10,所以加進去後兩者的a=10,接著printf內再 輸入v=5,再加進a裡面,foo1應該為15,foo2的a被static,所以還是5。 輸出應該為 15 5。但是完全顛倒... ============================================================================== 以上幾題請不吝指教,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.207.206
tjjh89017:還是去找本書看看吧... 04/12 23:09
tjjh89017:key point: 1.switch 2.operator 04/12 23:10
tjjh89017:3.bitwise shift 4.static 04/12 23:11
hpps:這些題目大一好像都考過 04/13 00:38
tjjh89017:@hpps:我怎麼都沒看過這些題目啊xD 目前大一表示xD 04/13 00:54
MOONRAKER:不教switch logic op 現在大一到底在幹嘛 04/13 01:03
MOONRAKER:shift op還有一點理由不教 04/13 01:04
tjjh89017:何不問我們教授?業界導向?反正助教神速教完Java螞蟻書 04/13 01:05
diabloevagto:到底是沒教呢?還是上課沒在聽呢? 04/13 01:09
diabloevagto:話說,說不定原po不是相關科系,只是為了國考而讀 04/13 01:09
flydragon198:另外有一個方法就是,把這些程式碼丟給編譯器跑 04/13 01:15
flydragon198:這樣你印象深刻也會得到正確答案 04/13 01:16
flydragon198:然後你應該是考資料處理但是沒學過寫c++程式 04/13 01:16
flydragon198:建議有空的話還是把c++的程式書拿來練習基本比較好 04/13 01:17
tsamarfi:抱歉,我不是相關科系,本行是物理,完全是因為考試才接 04/13 01:20
tsamarfi:觸,非常感謝各位。 04/13 01:21
zetab:這些都是純C語言 找C語言的書來看就好了 不用到C++ 04/13 01:31
hakman:第二題重點是 operator 的優先度 跟為什麼先乘除後加減一 04/13 01:45
hakman:樣,是規定 04/13 01:47
KoenigseggG:如果1F上課沒在聽,那他應該也不會在這推文吧...... 04/13 07:19
KoenigseggG:(我是指他對coding的熱情~ 04/13 07:21
tjjh89017:@diabloevagto: 我有在聽喔,真的都沒有教~ 04/13 14:21
tjjh89017:@KoenigseggG:有熱情,但是沒方向Q_Q 原本以為大學能給 04/13 14:23
tjjh89017:我一點方向的,結果反而更混亂Q_Q 04/13 14:23
KoenigseggG:混亂+1啊......後來應該會改善吧XD 04/13 14:43
tjjh89017:都是教授的錯(阿不是) 想多學一點算法~比較不喜歡實作xD 04/13 14:47
leiyan:大一會河內塔陣列指標就好 其他有興趣再看 04/13 15:05
tjjh89017:可是我們都沒有教誒xD (雖然說我只要有看概念就會了xD 04/13 15:31
leiyan:那你也蠻強的 大一之前沒接觸過程式的反應幾乎都是一臉茫然 04/13 16:11
tjjh89017:感謝高中電腦老師<(_ _)> 他讓我在高中時期就對code有 04/13 16:29
tjjh89017:興趣惹w 04/13 16:29
suhorng:樓上要不要來看看 OCaml XD 非常非常有趣! 04/13 17:04
diabloevagto:tjjh89017,我不是說你== 是說原po 04/13 17:18
tjjh89017:對不起QAQ 04/13 17:25
tjjh89017:google OCaml中... 04/13 17:26
changyuheng:個人覺得考試考第二題很沒營養 04/13 22:08
changyuheng:第二題在考運算子優先順序,也就是在考括號怎麼括,但 04/13 22:11
changyuheng:一般來說,co-working 時不會像題目那樣省略括號 04/13 22:12
KoenigseggG:樓上,這就是考試啊= =常考一堆平常不可能這樣寫的 04/13 22:35
KoenigseggG:code問你output為何orz 04/13 22:35
bigpigbigpig:第1題:你沒有告訴電腦要 break,初學者常犯的錯誤:) 04/14 12:03
a27417332:第二題不一定沒營養,運算子優先程度很重要 04/14 18:48
a27417332:不過這些問題都算是基本呢,連我入門國中生都會囉…這 04/14 18:51
a27417332:些都算是語言基本吧? 04/14 19:02
azureblaze:不要期望自己或別人在半夜三點還能記得清楚優先順序 04/14 21:06
a27417332:當然能括號能力求可讀性,但不是每個人程式風格都如此優 04/14 21:10
a27417332:況且基本幾種運算優先記一下就好,如果不晦澀的都應該 04/14 21:13
a27417332:但雖然是這樣說,但我還是會縮排和括弧XDlll 04/14 21:14