目錄
題幹
題目描述
輸入一個正整數 repeat (0
輸入
見sample
輸出
見sample
樣例輸入
1
1E-4
樣例輸出
0.785348
源代碼
#include<stdio.h>
int main()
{
int repeat;
scanf("%d",&repeat);
while(repeat--)
{
double eps; //定義一個雙精度浮點型變量
scanf("%lf",&eps); //輸入
double now=1.0,ans=0; //初始化
int i=1,j=0; //初始化too
while(now>=eps) //如果eps比now大,輸出會有問題
{
if(j%2==0) //這個if else是來判斷分數前面的符號的奇數爲正,偶數爲負
ans=ans+now;
else
ans=ans-now;
i=i+2; //這種運算方式叫自加
j=j+1;
now=1.0/i; //因爲i是整型變量,而1除任何一個整數都是零,所以在分子處用1.0,
// 1.0是浮點數,整個分數就也爲浮點數
}
printf("%.6f\n",ans); //保留六位小數並輸出
}
return 0;
}
//ENDING
解題思路
終於有一道還算複雜的題了(雖然也還好)
自加有兩種寫法
i=i+2;
和
i+=2;
這兩種是一樣的
當然還有一種特殊的
i++; //這是 i=i+1 的意思
當然還有自減,自乘 等等
這裏順便提一下
i++;
與
++i;
的區別
它們的區別就在於是先調用變量 i ,還是先自加
#include<stdio.h>
int main()
{
int i=0;
printf("%d ",i++);
printf("%d",++i);
}
這樣輸出 2 0 ,而
#include<stdio.h>
int main()
{
int i=0;
printf("%d ",++i);
printf("%d",i++);
}
這樣輸出 1 1 。
不知道你明白了沒有
希望你喜歡這道題目還有我的解題思路!!!
如有問題請留言,謝謝!!!