//sqrtxxx.c -- by tsaiwn@csie.nctu.edu.tw
// 一直求平方根, 直到輸入的是負數才停
// C++ 式的註解 comment , 但現在大多數的 C compiler 也可以用!
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double x;  //  (注意 1, 注意 2) 兩倍準的變數 variable;  
double getDBL(void);  // 負責讀取一個實數, 寫成 function 比較有彈性:-)
   // 在各個 *.h 檔案內的大多是類似這樣的宣告
int main( ) {   // 大多數 main program 都這樣開頭
     // 以下這招 Loop forever 很好用, 
     // 在 Loop 中間可以用 if ( 條件式 ) break;  離開 Loop
     for( ; ; ) {   //  Loop forever
         printf("Give me x: ");
         x = getDBL( );    // 寫成函數 (function; 函式) 是個很好的習慣
         if( feof(stdin) ) break;  // 如果已經 EOF 檔案結束就離開
         if( x < 0 ) break;     //   (注意 3) 可以改用別的方法
         printf(" sqrt 根號 %f = %f\n ", x,   sqrt(x) );
             //  (注意 4) 可以問 user 要不要繼續?
     } // while  
     printf("Bye bye!\n Hit ENTER key...");  getchar( );
     return  0;    //   告知作業系統(OS)表示我們這主程式正常結束
}// main( 
double getDBL( ) {    // 以後要改輸入的方法只要改這 function 就可 :-)
    static char buf[999];
    fgets(buf, sizeof buf, stdin);  // 從鍵盤讀取一整列字串
    return atof( buf);  // 直接把 atof( ) 傳給我們的答案回傳給老闆!
} // getDBZ(   // 注意 atof( ) 宣告在  <stdlib.h>
/***********
D:\test> path C:\Dev-Cpp\bin;%path%

D:\test> gcc sqrtxxx.c 

D:\test> a.exe
Give me x: 2
 sqrt 根號 2.000000 =1.414214
 Give me x: 5
 sqrt 根號 5.000000 =2.236068
 Give me x: 8
 sqrt 根號 8.000000 =2.828427
 Give me x: 9
 sqrt 根號 9.000000 =3.000000
 Give me x: 100
 sqrt 根號 100.000000 =10.000000
 Give me x: -1
Bye bye!
 Hit ENTER key...

D:\test>
*******************************************/
