页码
程 序
35 求三条边分别是3、5、7的三角形的面积
39 求许多不同圆盘的面积
40 一个由已知三边长度求三角形面积的函数
45 一个返回两个数较大的一个数的函数
45 符号函数sign
47 阶乘函数
48 求出e(自然对数的底)的n次幂
51 求圆盘面积并显示结果,增加上对错误参数(负值)的处理
52 已知二次方程三个系数,分情况求方程实根
54 摄氏与华氏温度对照输出
55 求Sinx的近似值
返回 总目录

例:求三条边分别是3、5、7的三角形的面积

#include <stdio.h>
#include <math.h>

main () {
    double s;
    s = (3 + 5 + 7) / 2.0;
    printf("Area: %f\n", sqrt(s * (s-3) * (s-5) * (s-7) ) );
}

例:求许多不同圆盘的面积

#include <stdio.h>

double c_area (double r) {
    return r * r * 3.14159265;
}

main () {
    printf("area1 = %f\n", c_area(3.24));
    printf("area2 = %f\n", c_area(2.137));
    printf("area3 = %f\n", c_area(0.865));
    printf("area4 = %f\n", c_area(3.746));
    printf("area5 = %f\n", c_area(12.3364));
    printf("area6 = %f\n", c_area(8.421));
}
 

例:定义一个由已知三边长度求三角形面积的函数

double t_area (double a, double b, double c) {
    double s = (a + b + c)/2.0;
    return (sqrt(s * (s-a) * (s-b) * (s-c)));
}

例:一个返回两个数较大的一个数的函数

double dmax (double x, double y) {
    return x > y ? x : y;
}

例:符号函数sign

double sign (double x) {
    return x > 0 ? 1 : (x == 0 ? 0 : -1);
}

例:阶乘函数

long fact (long n) {
    return n == 0 ? 1 : n * fact(n-1);
}

例:求出 e(自然对数的底)的 n 次幂

double dexp1 (int n) {
    return n == 0 ? 1 : 2.71828 * dexp1(n-1);
}

double dexp (int n) {
    return n >= 0 ? depx1(n) : 1 / dexp1(-n);
}

例:求圆盘面积并显示结果,增加上对错误参数(负值)的处理

void pc_area (double r) {
    if (r < 0)
        printf("radius incorrect: %f\n", r);
    else
        printf("radius: %f, area: %f\n", r, 3.14159265*r*r);
}

例:知二次方程三个系数, 分情况求方程实根

void root2 (double a, double b, double c) {
    double d;
    d = b*b - 4*a*c;
    if (d > 0) {
        d = sqrt(d);
        printf("Two real roots: %f, %f\n",
        (-b+d)/2/a, (-b-d)/2/a);
    }
    else if (d == 0)
        printf("One real root: %f\n", -b/2/a);
    else
        printf("No real root\n");
}

例:摄氏与华氏温度对照输出

#include <stdio.h>

main () {
    int c = 0;
    while (c <= 300) {
    printf("C = %d, F = %f\n", c, c * 9 / 5.0 + 32.0);
    c = c + 20;
}
}

例:求 Sin x 的近似值

double dsin (double x) {
    double sum = 0.0, t = x;
    int n = 0;
    while (t >= 1E-6 || t <= -1E-6) {
        sum = sum + t;
        n = n + 1;
        t = -t * x * x / (2*n) / (2*n + 1);
    }
    return sum;
}