寫一程式可從鍵盤輸入(square,cube,sqrt,cbrt)其中之一的字串, 以及三個數字n,x,y, 並在螢幕上印出該函數在(x,y)區間內的積分值, 而n表示要將該區域切成幾等份來計算. 當輸入之函數名為end時, 結束整個程式.

編譯時請用gcc -lm yours.c來編譯

-l表示要link的程式庫, m表示math(數學)程式庫, 因為sqrt和cbrt這兩個函數 定義在數學程式庫內, 因此編譯時要加上此選項, gcc才能夠正確的連結.

以下是範例程式:
#include <stdio.h>
#include <math.h>

/******************/
 * 計算平方       */
 ******************/
double square(double x) {
    return x*x;
}

/******************/
 * 計算三次方     */
 ******************/
double cube(double x) {
    return x*x*x;
}

/*********************************************/
/* 計算f()在(x,y)之間以n等份來逼近的積分數值 */
/*********************************************/
double integral(double (*f)(double p), int n, double x, double y) {
    // 請填入此處的程式, 請以(*f)(x)來表示f(x)的值
}

int main() {
    char fun[100]; // 字元陣列, 下個單元會教到
    int n;
    double x, y;
    double (*f)(double); // pointer to function, 幾個星期後會教到

    while (scanf("%99s",fun) != EOF) { // EOF定義於stdio.h內,一般系統上為-1
        if (strcmp(fun,"square")==0) {
            f = square;
        } else if (strcmp(fun,"cube")==0) {
            f = cube;
        } else if (strcmp(fun,"sqrt")==0) {
            f = sqrt;
        } else if (strcmp(fun,"cbrt")==0) {
            f = cbrt;
        } else if (strcmp(fun,"end")==0) {
            break;
        } else {
            printf("Unknown function\n");
            continue;
        }
        scanf("%d%lf%lf",&n,&x,&y);
        printf("Integral of %s from %lf to %lf is: %lf\n",fun,x,y,integral(f,n,x,y));
    }
    return 0;
}