### 4.1 An Example with Non-Integer Numbers ¶

Here’s a function that operates on and returns floating point numbers that don’t have to be integers. Floating point represents a number as a fraction together with a power of 2. (For more detail, see Floating-Point Data Types.) This example calculates the average of three floating point numbers that are passed to it as arguments:

    double
    average_of_three (double a, double b, double c)
    {
      return (a + b + c) / 3;
    }

The values of the parameter a, b and c do not have to be integers, and even when they happen to be integers, most likely their average is not an integer.

`double` is the usual data type in C for calculations on floating-point numbers.

To print a `double` with `printf`, we must use ‘`%f`’ instead of ‘`%d`’:

    printf ("Average is %f\n",
            average_of_three (1.1, 9.8, 3.62));

The code that calls `printf` must pass a `double` for printing with ‘`%f`’ and an `int` for printing with ‘`%d`’. If the argument has the wrong type, `printf` will produce meaningless output.

Here’s a complete program that computes the average of three specific numbers and prints the result:

    double
    average_of_three (double a, double b, double c)
    {
      return (a + b + c) / 3;
    }

    int
    main (void)
    {
        printf ("Average is %f\n",
                average_of_three (1.1, 9.8, 3.62));
        return 0;
    }

From now on we will not present examples of calls to `main`. Instead we encourage you to write them for yourself when you want to test executing some code.