題目:輸入N,實現N個規律數求和,如1/1+2/3+3/5+4/7+4/9+……
代碼:
int main()
{
int N,i;
double sum,temp;
sum=0;
printf("please input the numberN\n");
scanf("%d",&N);
for(i=1;i<=N;i++)
{
temp=i*1.0/(2*i-1); //注意i*1.0
printf("%lf ",temp);
sum=sum+temp;
}
printf("the result is:%lf",sum);
return 0;
}
碰到的坑:
因爲我定義的i是整形變量,temp是 double型變量
所以在計算時 如果直接 i/(2*i-1) 會出錯 。
如果i是整型數,則兩式結果不同
如果i是符點數,則兩式結果相同.
i是整型,則1/(i*i) 完成的是整除運算,其結果是個整數 如:1/(2*2)= 0
而1.0/(i*i)完成的是除法運算,結果是個小數 如:1.0/(2*2)= 0.25
參考地址:https://www.zybang.com/question/13de25861d04ad55fee04dbb1498bd07.html