hdu 2011 多項式求和(c語言)
阿新 • • 發佈:2018-11-16
hdu 2011 多項式求和
題目描述
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Problem Description
多項式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + …
現在請你求出該多項式的前n項的和。
Input
輸入資料由2行組成,首先是一個正整數m(m<100),表示測試例項的個數,第二行包含m個正整數,對於每一個整數(不妨設為n,n<1000),求該多項式的前n項的和。
Output
對於每個測試例項n,要求輸出多項式前n項的和。每個測試例項的輸出佔一行,結果保留2位小數。
Sample Input
2
1 2
Sample Output
1.00
0.50
題目難點
呼叫函式,使程式分塊規範化,功能明確
問題解答
#include <stdio.h>
int Fluction(int);//宣告實現多項式 1-1/2+1/3-1/4+1/5-1/6+...的功能函式
double sum;//定義全域性變數(其實一般不推薦定義全域性變數)
int main()
{
int m,n;//m個測試例項,求前 n項和
while(scanf("%d",&m)!=EOF)
{
for(int i=1;i<= m;i++)//輸入 m個測試例項,所以迴圈 m次
{
scanf("%d",&n);
Fluction(n);//呼叫函式,傳參 n
printf("%.2lf\n",sum);//保留兩位小數輸出
}
}
}
int Fluction(int t)//函式定義,實現 1-1/2+1/3-1/4+1/5-1/6+...多項式
{
int sign=1;//定義符號
double x;
sum=0;
for(int i=1;i<=t;i++)//要求前幾項的和就迴圈幾次
{
x=(double)sign/i;//強制轉變型別
sum+=x;
sign*=-1;
}
return sum;//一定要定義它返回 sum的值,否則,函式會自動返回 0
}
筆記:
- 比較規範化的函式調動,使程式視覺化程度更高,分塊更清晰,功能更明確