#include <stdio.h> void printManyMessages(int n); void printMessages(); int main(int argc, char *argv[]) { int n; printManyMessages(1); printf("Repeat this how many times? "); scanf("%d", &n); printManyMessages(n); return 0; } void printManyMessages(int n) { while (n > 0) { printMessages(); n = n - 1; } } void printMessages(void) { printf("C is good.\n"); printf("C is great.\n"); printf("We all love C.\n"); }
Simple example illustrating call by value
#include <stdio.h> int f(int x) { int y; // these assignments will have no effect on variables // outside the function x = x + 1; y = 3; return x * y; } int main(int argc, char *argv[]) { int x, y , z; x = 1; y = 2; z = f(y); // note the variables x & y are local to main // and are not changed by assignment to variables // of the same name in f printf("x=%d y=%d z=%d\n", x, y, z); return 0; }
Simple example illustrating passing an array to a function
#include <stdio.h> // passing an array to a function is equivalent to passing a pointer // to its first element so changes to the array in the function // will be visible outside the function // note the array size does not need to be specified // for an array parameter // but the function needs to know the array size // so it is passed as a separate parameter void exponentiate(double x, double powers[], int len) { int i; double power; power = 1; i = 0; while (i < len) { powers[i] = power; power = power * x; i = i + 1; } } #define ARRAY_SIZE 10 int main(void) { int i; double powerArray[ARRAY_SIZE]; exponentiate(42, powerArray, ARRAY_SIZE); i = 0; while (i < ARRAY_SIZE) { printf("42^%d = %lf\n", i, powerArray[i]); i = i + 1; } return 0; }
Simple recursive calculation of factorials & fibonacci numbers http://en.wikipedia.org/wiki/Factorial http://en.wikipedia.org/wiki/Fibonacci_number
Fibonacci calculation is very inefficient
#include <stdio.h> #include <stdlib.h> int fibonacci(int n) { if (n < 2) { return 1; } return fibonacci(n - 1) + fibonacci(n-2); } int factorial(int n) { if (n < 2) { return 1; } return n * factorial(n - 1); } int main(void) { int i = 1; while (i < 13) { printf("factorial(%d) = %d\n", i, factorial(i)); printf("fibonacci(%d) = %d\n", i, fibonacci(i)); i = i + 1; } return 0; }
Simplelecture example of using functions