精華區beta ESOE-90 關於我們 聯絡資訊
嗯, 今天的程式不難... 但是牽扯到的問題很多, 就不解釋了. 尤其是第二題... 一開始題目有錯, 照理是寫不出來的(白癡 VC 竟然給過. ) 這裡頭有兩個問題... 按助教原先預設的答案. 是違反了 ++ 的運算法則(只能作用在 lvalue 上). 此外, 還關聯到 "order of evaluation". "order of evaluation" 算是相當進階的 C common error. 很常見, 但是成因頗為複雜... 所以就... 算了. @_@ E1) 請使用者輸入兩個數字, 利用條件運算子判斷兩數的大小, 取較大值並將結果顯示在螢幕上. # include <stdio.h> # include <stdlib.h> int main() { double x1, x2; printf("Enter 2 numbers:\n"); if (scanf("%lf %lf", &x1, &x2) < 2) exit(1); printf("The larger one is %.3f.\n", x1 > x2 ? x1 : x2); return 0; } E2) 請給定 2 整數, i = 2, k = 4, 利用五個 '+' 和 i, k 構成一敘述, 如: +++i++k, 輸出一整數 7, 且運算後 i = 3, k = 5. [註] 這一題很特別, 底下的 printf() 絕對不可以合成一行. # include <stdio.h> int main() { int i = 2, k = 4; printf("i = %d, k = %d\n", i, k); printf("expression = %d\n", i++ + ++k); printf("i = %d, k = %d\n", i, k); return 0; } E3) 定義: 321 為 123 之 reverse. 請使用者輸入任意三位數整數, 利用餘數運算子 '%', 經運算輸出其 reverse. [註] 這題是常見的好題目. 應長毛的好奇心, 我寫三個, 越來越難. # include <stdio.h> # include <stdlib.h> int main() { int d, nd; printf("Enter a positive integer:\n"); if (scanf("%d", &d) < 1) exit(1); nd = d - (d / 100) * 99 + (d % 10) * 99; printf("original = %d, reversed = %d\n", d, nd); return 0; } /* -------------------------------------------------------- */ # include <stdio.h> # include <stdlib.h> int main() { int d, nd; printf("Enter a positive integer:\n"); if (scanf("%d", &d) < 1) exit(1); printf("original = %d\n", d); for (nd = 0; d; d /= 10) nd = nd * 10 + d % 10; printf("reversed = %d\n", nd); return 0; } /* -------------------------------------------------------- */ # include <stdio.h> # include <stdlib.h> int reverse(int, int); int main() { int d; printf("Enter a positive integer:\n"); if (scanf("%d", &d) < 1) exit(1); printf("original = %d, reversed = %d\n", d, reverse(d, 0)); return 0; } int reverse(int d1, int d2) { return d1 ? reverse(d1 / 10, d2 * 10 + d1 % 10) : d2; } /* -------------------------------------------------------- */ -- 新詩練習:新鮮。踩破初春裡的狗大便;不經意的滄桑,滿溢著嫩黃的喜悅。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.224.160.49 ※ 編輯: Muscovy 來自: 61.224.160.49 (03/27 15:22)