/*** asqrt.c --- sample program by tsaiwn@cs.nctu.edu.tw * 練習: 簡易輸入 + 簡易輸出 + 使用 Library 程式庫 + 簡易 while Loop * Description: 寫個程式, 讀入 x, 印出根號 x (可以用 Library function) * Note: 要一直做到 輸入負數(例如輸入 -1 ) 才停止! 記得要印出 Bye bye! *** *** **************************/ #include #include double x; // (注意 1) 變數 variable; // C++ 式的註解 comment double getDBL(void); // 寫成 function 比較有彈性:-) int main( ) { // 大多數 main program 都這樣開頭 while(38==38) { // (注意 3) 可以改用別的方法 printf("Give me x: "); x = getDBL( ); // 寫成函數 (function; 函式) 是個很好的習慣 if( x < 0 ) break; // (注意 3) 可以改用別的方法 printf(" sqrt 根號 %f =%f\n ", x, sqrt(x) ); // (注意 4) 可以問 user 要不要繼續? } // while printf("Bye bye!\n"); return 0; // 告知作業系統(OS)表示我們這主程式正常結束 } double getDBL( ) { // 以後要改輸入的方法只要改這 function 就可 :-) double ans; scanf("%lf", &ans); // (注意 5) 可以不要用 scanf 改用 fgets 和 atof return ans; } /*** 每個 (注意 ? ) 都是一個小小練習題: (注意 1) 執行時故意輸入亂打如 abcd 會如何? (注意 2) 改用 float 看看要如何配合修改? (注意 3) 要如何改為不須用到 if ... break 的 while Loop ? (注意 4) 每次問 user 要不要繼續, y或 Y 表示要, 其他表示不要? 如何讀入答案? 讀入到文字變數? ("%c" ? "%c ") <== 注意後者有空格 多測試看會遇到哪些奇怪的問題? scanf 時用 "%f" 與 "%f ", 以及用 "%lf" 與 "%lf " 的差別? (注意 5) 可以不要用 scanf, 改用 fgets 和 atof (比較不會出問題) 如何使用 fgets 和 atof? 可以上網查 :-) 當然有書查也可以啦 :-) *** 每個人可以 post 很多次( 註明版本編號:-) *** 注意 Subject: 要包括學號姓名與第幾版 **********/ // /// /// TCC 是命令模式(在CMD下); TC 是IDE 整合模式 /*** 使用 gcc 或 TC++3.0前 常用命令: path c:\dev-cpp\bin;c:\tc\bin;%path% 備用網址: http://www.csie.nctu.edu.tw/~tsaiwn/introcs/ **/// 在 TC++ 的 IDE 整合環境內(TC), /// 經常需要按 ALT_F5 (兩鍵同時按 ) 以便看執行結果 /// 在 TC++ 的 IDE 整合環境內(TC), /// 隨時可以按 Control_F1 (兩鍵同時按 ) 以便看說明書 /******* C:\testc> path C:\Dev-Cpp\bin;C:\TC\BIN;%path% C:\testc> gcc asqrt.c C:\testc> a.exe Give me x: 2 sqrt 根號 2.000000 =1.414214 Give me x: 3 sqrt 根號 3.000000 =1.732051 Give me x: 5 sqrt 根號 5.000000 =2.236068 Give me x: 100 sqrt 根號 100.000000 =10.000000 Give me x: 9 sqrt 根號 9.000000 =3.000000 Give me x: -1 Bye bye! **********************/