請各位幫忙解題
這是問題的網頁
http://luckycat.kshs.kh.edu.tw/homework/q10209.htm
以下是我的程式碼
#include
#include
#include
int main()
{
double a,x,y,z;
while(scanf("%lf",&a)!=EOF)
x=a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0);
y=a*a-(0.25*a*a*2.0*acos(0.0))-2*(a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0));
z=a*a-4*(a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0))-4*(a*a-(0.25*a*a*2.0*acos(0.0))-2*(a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0)));
printf("%.3lf %.3lf %.3lf\n",z,4*y,4*x);
return 0;
}
請各位高手幫我看看哪裡有問題
謝謝
2007-01-29 07:12:07 · 3 個解答 · 發問者 羅 1 in 電腦與網際網路 ➔ 程式設計
能否請問
為什麼不適用啊
2007-02-01 10:18:58 · update #1
你的while忘了加大括號喔
你要把while下面那四行括起來
另外printf的n應該改成\n
改完以後我試過就可以AC了
另外建議你先算好pi=2.0*acos(0.0);
這樣程式碼比較乾淨
跑起來也比較快
2007-01-29 16:26:24 補充:
那個反斜線\\好像打不出來...
2007-01-31 00:37:01 補充:
樓下的部份寫法不適用於ACM喔
2007-02-02 01:54:01 補充:
其實不是什麼很大的問題
就是說ACM的輸入輸出不需要那些中文的提示
(像是"請輸入正方形邊長"等等)
另外關於輸入的問題
你的寫法應該是沒問題的
因為我傳上去試過了
我個人的話習慣是這樣寫
while(scanf("%d",&a)==1)
{
......
}
因為scanf會傳回讀到的數量
所以當讀不到東西時就會結束
2007-01-29 11:13:41 · answer #1 · answered by FlyingFree 2 · 0⤊ 0⤋
這題剛好我才寫過耶!!我打在ACM上過了喔:)
基本上,樓上的樓上講的都對,可是他說printf要n這個我看不懂,因為我用%.3lf是可以的。
樓上的用的程式比較精簡,不適用的地方在於ACM要用「!=EOF」,因為他的Sample Input跟Sample Output並沒有講明!=0時結束。
嗯,希望能幫到你囉:D
2007-02-01 22:04:27 補充:
啊,打錯,我是說,Sample Input跟Sample Output並沒有講明何時結束~
2007-02-01 17:03:04 · answer #2 · answered by unreal 1 · 0⤊ 0⤋
#include
#include
#include
int main()
{
double a,x,y,z;
double PI, a2,t3;
printf("請輸入正方形邊長 (輸入文字將離開本程式) : ");
while(scanf("%lf",&a)!=0)
/* EOF 是測試檔案是否結束
放 EOF 程式將無法停止
while(scanf("%lf",&a)!=EOF)
*/
{
PI = 2.0*acos(0.0);
a2 = a*a;
t3 = sqrt(3.0)*a2/4.0
x = a2 - a2*PI/6.0 - t3;
y = a2 - 0.25*a2*PI - 2*x;
z = a*a - 4*x - 4*y;
/*
x=a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0);
y=a*a-(0.25*a*a*2.0*acos(0.0))-2*(a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0));
z=a*a-4*(a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0))-4*(a*a-(0.25*a*a*2.0*acos(0.0))-2*(a*a-(1.0*a*a*2.0*acos(0.0)/6.0)-(sqrt(3.0)*a*a/4.0)));
*/
printf("%.3lf %.3lf %.3lf\n",z,4*y,4*x);
printf("請輸入正方形邊長 (輸入文字將離開本程式) : ");
}
return 0;
}
EOF 和 { } 是必要的修訂
其他部分就當做參考
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.
2007-01-30 06:28:06 · answer #3 · answered by JJ 7 · 0⤊ 0⤋