1. 程式人生 > >hdu 2011 多項式求和(c語言)

hdu 2011 多項式求和(c語言)

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 }

筆記:

  1. 比較規範化的函式調動,使程式視覺化程度更高,分塊更清晰,功能更明確