//p01.c --- using variable 使用變數 #include #include double x; // (注意 1) 變數 variable; // C++ 式的註解 comment //變數種類(型別 type)有 char, short, int, long, float, double int main( ) { // 大多數 main program 都這樣開頭 printf("Give me x: "); scanf("%lf", &x); // 注意這句的寫法很特別! 變數左邊寫 & 表示取其位址 printf(" sqrt 根號 %f =%f\n ", x, sqrt(x) ); printf("Bye bye!\n"); return 0; // 告知作業系統(OS)表示我們這主程式正常結束 } // 因為 x 是 double, 用在 scanf 輸入時格式要寫 "%lf" // 若 x 是 float, 則要改用 "%f" 讓 scanf 知道 x 只有 4 bytes // 不過用在 printf 的輸出用格式, float 和 double 都用 %f 就可以! Why?? //p02.c --- 使用 fgets( ) 先讀入整列字串, 再用保證不死的 atof 轉出實數 #include #include #include // 注意是用到 atof 必須要 #include 不然它會誤以為 atof 傳回整數 ! double x; // (注意 1) 變數 variable; // C++ 式的註解 comment char buf[99]; int main( ) { // 大多數 main program 都這樣開頭 printf("Give me x: "); fgets(buf, sizeof(buf), stdin); // stdin 就是鍵盤, 要記得含入 x = atof(buf); // atof() 是宣告在 printf(" sqrt 根號 %f =%f\n ", x, sqrt(x) ); printf("Bye bye!\n"); return 0; // 告知作業系統(OS)表示我們這主程式正常結束 } //p03.c --- better version ! 這程式用了比較好的輸入方式 fgets + atof #include #include #include double x; // (注意 1) 變數 variable; // C++ 式的註解 comment double getDBL(void); // 寫成 function 比較有彈性:-) 這裡只是宣告 int main( ) { // 大多數 main program 都這樣開頭 while(38==38) { // (注意 3) 可以改用別的方法做 Loop 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 就可 :-) static char buf[99]; // a string buffer for input; why "static" ? double ans; fgets(buf, sizeof(buf), stdin); // stdin 就是鍵盤, 要記得含入 ans = atof(buf); // 從字串中讀出兩倍準的實數 (double) ////// 若是整數就把 atof 改為 atol 這也是別人寫好的函數(函式) return ans; }