C Example Programs
This document contains numerous example programs to provide a practical aid for learning C programming
language.
Input and Output programs
This program combines printf and scanf whereby printf displays the input from scanf.
#include <stdio.h>
main()
{
int i;
printf("%c\n",scanf("%i",i));
}
This program demonstrates the use of getchar and putchar.
#include <stdio.h>
main()
{
char ch;
printf("Enter some text (type a period to quit)...\n");
do {
ch = getchar();
putchar(ch+1);
} while (ch != '.');
printf("\n\n");
printf("Enter some text (type a period to quit)...\n");
while ( (ch = getchar()) != '.') putchar(ch-1);
printf("\n\n");
Control Loop programs
This section contains example programs demonstrating the loop construction.
Program using char data type and simple for loop:
#include <stdio.h> /* library header */
main()
{
char ch;
for (ch = 'A' ; ch <= 'z' ; ch++) printf("%c\n" , ch);
}
This program demonstrates the while loop.
#include <stdio.h>
main()
{
int lower , upper , step;
float fahr , celsius;
lower = 0 ;
upper = 300;
step = 20 ;
fahr = lower;
while ( fahr <= upper ) {
celsius = (5.0 / 9.0) * (fahr - 32.0);
printf("%4.0f %6.1f\n" , fahr , celsius);
fahr = fahr + step;
}
}
This program uses do-while and for loop constructions and standard library mathematical functions.
#include <stdio.h>
#include <math.h>
main()
{
int i , j , k;
double a=10.0 , b=.0;
do {
printf("%f\n" , pow(a,b)); /* standard function */
b++;
} while (b<100);
i = 2;
for (j=2 ; j<100 ; j=j+2) {
i=i*j ;
printf("%d\n" , i);
}
}
Conditional Execution programs
This section contains example programs demonstrating if else and select statements (also break and
continue statements).
This program demonstrates the if else statement.
#include <stdio.h>
main()
{
int a , b;
printf("Enter two numbers: ");
scanf("%d%d" , &a , &b);
if (b) printf("%d\n" , a/b);
else printf("... cannot divide by zero\n");
}
Another example of if else statement.
#include <stdio>
#include <conio>
main()
{
int a,b;
char ch;
printf("Do you want to: \n");
printf"Add, subtract, Multiply, or Divide?\n");
/* force user to enter valid response */
do {
printf("Enter first letter: ");
ch=getchar();
printf("\n");
} while (ch!='A' && ch!='S' && ch!='M' && ch!='D');
printf("Enter first number: ");
scanf("%d", &a);
printf("Enter second number: ");
scanf("%d", &b);
if (ch=='A') printf("%d", a+b);
else if (ch=='S') printf("%d", a-b);
else if (ch=='M') printf("%d", a*b);
else if (ch=='D' && b!=0) printf("%d", a/b);
}
The switch statement is often used to process menu commands.
#include <stdio.h>
#include <conio.h>
main()
{
int a,b;
char ch;
printf("Do you want to:\n");
printf("Add, Subtract, Multipy, or Divide\n");
/* force user to enter valid response */
do (
printf("Enter first letter: ");
ch =getchar();
printf("\n");
} while (ch!='A' && ch!='S' && ch!='M' && ch!='D');
printf("Enter first number: ");
scanf("%d", &a);
printf("Enter second number: ");
scanf("%d", &b);
switch (ch) {
case 'A' : printf("%d", a+b);
break;
case 'S' : printf("%d", a-b);
break;
case 'M' : printf("%d", a*b);
break;
case 'D' : if (b!=0) printf("%d", a/b);
break;
}
}
The statement sequence associated with a case may be empty allowing two or more cases to share a common
statement sequence.
#include <stdio.h>
#include <conio.h>
main()
{
char ch;
printf("Enter the letter: ");
ch=getchar();
switch(ch) {
case 'a' :
case 'e' :
case 'i' :
case 'o' :
case 'u' :
printf(" is a vowel \n");
break;
default:
printf(" is a consonant");
}
}
A simple program to show the use of the continue statement.
#include <stdio.h>
main()
{
int x ;
for ( x=0 ; x<=100 ; x++) {
if (x%2) continue; /* using modulus operation */
printf("%d\n" , x);
}
This program jumps out of an infinite loop using the break statement.
#include <stdio.h>
main()
{
int t ;
for ( ; ; ) {
scanf("%d" , &t) ;
if ( t==10 ) break ;
}
printf("End of an infinite loop...\n");
Structure and Nesting programs
This section contains example programs demonstrating nested block structures.
This program uses nested for loop construction.
#include <stdio.h>
main()
{
int i , j;
for (i=2 ; i<1000 ; i++) {
for (j=2 ; j<= i/2 ; j++)
if (!(i%j)) break;
if (j>i/2) printf("%d is a prime\n" , i);
}
}
This example program uses a do-while and nested if else construction.
#include <stdio.h>
main()
{
int a , b;
do {
printf("Enter first number: ");
scanf("%d" , &a);
printf("Enter second number: ");
scanf("%d" , &b);
if (a<b)
printf("First number is less than second\n\n");
if (b<a)
printf("Second number is less than first\n\n");
} while (a < 999);
}
This program uses nested for loop and if else construction.
#include <stdio.h>
#include <conio.h>
main()
{
int answer, count, chances, right;
for (count=1; count<11; count++) {
printf("What is %d + %d?", count, count);
scanf("%d", &answer);
if (answer == count+count) printf("Right!\n");
else {
printf("Sorry, you're wrong \n");
printf("Try again\n");
right = 0;
/* nested for *?
for (chances=0; chances<3 && ! right; chances++){
printf("\nWhat is %d + %d?",count, count);
scanf("%d", &answer);
if (answer == count+count){
printf("Right!\n");
right=1;
}
}
/* if answer still wrong, tell user */
if (!right)
printf("the answer is %d.\n", count+count);
} /* end of else part */
} /* end of outter for loop */
}
Functions and Prototype programs
This section contains example programs to demonstrate the use of functions.
This is a program to demonstrate the use of functions
1. with no parameters
2. with parameters
#include <stdio.h>
main()
{
int number;
prompt(); /*function call no parameters */
scanf( "%d" , &number );
factor(number); /* function call with parameters */
}
prompt() /* function */
{
printf("Input a number... ");
}
factor(int t) /* function */
{
int sum = 1;
int i ;
for (i = 1 ; i <= t ; i++)
sum = sum*i;
printf("Factorial %d is %d\n" , t , sum);
}
Here is a volume computing program using a function prototype.
#include <stdio.h>
/* this is volume()'s prototype */
double volume(double s1, double s2, double s3);
void main()
{
double vol;
vol = volume(12.2, 5.67. 9.03);
printf("Volume: %f", vol);
}
/* compute the volume of a cube. */
double volume(double s1, doublbe s2, double s3)
{
return s1*s2*s3;
}
Recursion when applied to a computer language means that a function can call itself. An example follows:
#include <stdio.h>
void recurse(int i);
void main(void)
{
recurse(0);
}
void recurse(int i)
{
if (i<10) {
recurse(i+1);
printf("%d ",i);
}
}
This program prints
9876543210
on the screen.
Array programs
This section contains example programs demonstrating the use of arrays.
A simple program to demonstrate the definition and use of an array.
#include <stdio.h>
main()
{
int i[10],j;
for ( j=0 ; j<10 ; j++)
i[j] = j ;
for ( j=0 ; j<10 ; j++)
printf("%d\n" , i[j]) ;
}
A program to demonstrate the use of an array.
#include <stdio.h>
#include <stdlib.h>
main()
{
int i , min_value , max_value ;
int list[10] ;
for ( i=0 ; i<10 ; i++)
list[i] = rand() ;
/* Find the minimum value */
min_value = 32767 ;
for ( i=0 ; i<10 ; i++)
if (list[i]<min_value)
min_value=list[i] ;
printf("Minimum value generated is %d\n" , min_value) ;
/* Find the maximum value */
max_value = 0 ;
for ( i=0 ; i<10 ; i++)
if (list[i]>max_value)
max_value=list[i];
printf("Maximum value generated is %d\n" , max_value) ;
}
This program uses a bubble sort.
#include <stdio.h>
include <stdlib.h>
main()
{
int item[100];
int a,b,t;
int count;
/* read in numbers */
printf("How many numbers ?");
scanf("%d", &count);
for (a=0;a<count;a++) scanf("%d", &item[a]);
/* now sort using bubble sort */
for (a=1; a<count; a++)
for (b=count-1; b>=a; --b) {
/* compare adjacent elements */
if (item[b-1] > item[b]) {
/* exchange elements */
t= item[b-1];
item[b-1] - item[b];
item[b] = t;
}
}
/* display sorted list */
for (t=0; t<count; t++) printf("%d ", item[t]);
}
An example program using a two-dimensional array now follows.
#include <stdio.h>
main()
{
int twod[4][5];
int i,j;
for(i=0; i<4; i++)
for(j=0; j<5; j++)
twod[i][j] = i*j;
for (i=0; i<4; i++) {
for (j=0; j<5; j++)
printf("%d !, twod[i][j]);
printf("\n");
}
}
The program output looks like this:
00000
01234
02468
036912
Pointer programs
This section contains example programs demonstrating the use of pointers.
An example program using simple pointers.
#include <stdio.h>
main()
{
int balance;
int *address;
int value;
balance = 5000;
address = &balance;
value = *address;
printf("Balance is : %d\n" , value);
}
Another example using pointers.
#include <stdio.h>
main()
{
int *p , num;
p = #
*p = 100;
printf("%d\n" , num);
(*p)++;
printf("%d\n" , num);
(*p)--;
printf("%d\n" , num);
}
An example program demonstrating pointer Arithmetic.
#include <stdio.h>
main()
{
char *c , ch[10];
int *i , j[10];
float *f , g[10];
int x;
c = ch;
i = j;
f = g;
for ( x=0 ; x<10 ; x++ )
printf("%p %p %p\n" , c+x , i+x , f+x);
}
An example program using pointers and arrays.
#include <stdio.h>
main()
{
char str[80];
char token[10];
char *p , *q;
printf("Enter a sentence: ");
gets(str);
p = str;
while (*p) {
q = token;
while (*p != ' ' && *p) {
*q = *p;
q++ ; p++;
}
if (*p) p++;
*q = '\0';
printf("%s\n" , token);
}
}
String programs
This section contains example programs to demonstrate the use of strings.
A simple string example.
#include <stdio.h>
main()
{
char str[80] ;
printf("Enter a string: ") ;
gets(str) ;
printf("%s" , str);
printf("\n");
}
The follow program requests the input of two strings, then demonstrates the four string functions with them.
#include <string.h>
#include <stdio.h>
main()
{
char str1[80], str2[80];
int i;
printf("Enter the first string: ");
getstr(str1);
printf("Enter the second string: ");
getstr(str2);
/* see how long the strings are */
printf("%s is %d chars long\n", str1, strlen(str1));
printf("%s is %d chars long\n", str2, strlen(str2));
/* compare the strings */
i= strcmp(str1, str2);
if (!i) printf("The strings are equal.\n");
else if (i<0) printf ("%s is less than %s\n", str1,str2);
else printf("%s is greater than %s\n", str1, str2);
/* concatenate str2 to end of str1 if there is enough room*/
if (strlen(str1)+ strlen(str2) < 80) {
strcat(str1, str2);
printf("%s\n", str1);
}
/* copy str2 to str1 */
strcpy(str1, str1);
printf("%s %s\n", str1, str2);
}
Structure programs
This section contains example programs to demonstrate the use of structures.
This program stores data in a structure and displays the values.
#include <stdio.h>
void main(void)
{
struct s_type {
int i;
int j;
} s;
int i;
i=10;
s.i=100;
s.j=101;
printf("%d %d %d", i, s.i, s.j);
}
The variable i and the structure element i have no relationship to each other.
A function may return a structure to the calling procedure.
#include <stdio.h>
struct s_type {
int i;
double d;
} var1;
struct s-type f(void);
void main(void)
{
var1=f();
printf("%d %1f", var1.i, var1.d);
}
struct s_type f(void)
{
struct s_type temp;
temp.i=100;
temp.d = 123.23;
return temp;
}
This program passes a structure to a function.
#include <stdio.h>
struct s_type {
int i;
double d;
} var1;
void f(struct s_type temp);
void main(void)
{
var1.i=99;
var1.d = 98.6;
f(var1);
}
void f(struct s_type temp)
{
printf("%d %1f", temp.i, temp.d);
}
The following program illustrates how to use a pointer to a structure.
#include <stdio.h>
#include <string.h>
strct s_type {
int i;
char str[80];
} s, *p;
void main(void)
{
p= &s;
s.i = 10; /* this is functionally the same */
p ->i=10; /* as this */
strcpy(p->str, "I like structures");
printf("%d %d %s", s.i, p->1, p->str);
}
File Handling programs
This section contains programs demonstrating file handling and command line arguments.
The following program reads a text file and counts how many times each letter from 'A' to 'Z' occurs and displays
the results.
#include <stdio.h>
#include <stdlib>
#include <ctype.h>
int count[26];
void main(int argc, char *argv[])
{
FILE *fp;
char ch;
int i;
/* see if file name is specified */
if (argc!=2) {
printf("File name missing");
exit(1);
}
if ((fp= fopen(agv[1], "r")) == NULL) {
printf("cannot open file");
exit(1);
}
while ((ch=fgetchar(fp)) !=EOF) {
ch = toupper(ch);
if (ch>='A' && ch<='Z') count[ch-'A']++;
}
for (i=0; i<26; i++)
printf("%c occurred %d times\n", i+'A', count[i]);
fclose(fp);
}
This program uses command line arguments to read and display the contents of a file supplied as an argument.
#include <stdio.h>
#define CLEARS 12 /* constant */
main(int argc , char *argv[])
{
FILE *fp , *fopen();
int c;
putchar(CLEARS);
while ( --argc > 0 )
if ((fp=fopen(argv[1], "r"))==NULL)
{
printf("I can't open %s\n", argv[1]);
break;
}
else
{
while ((c= getc(fp)) !=EOF)
putc(c,stdout); /* display to the screen */
fclose(fp);
}
}
This program gives a further example of the use of argc & argv
#include <stdio.h>
#include <stdlib.h>
main(int argc , char *argv[])
{
double a , b;
if (argc != 3) {
printf("Usage: add number number ...\n");
exit(1);
}
a = atof(argv[1]);
b = atof(argv[2]);
printf("%lf\n" , a + b);
}
Complex programs combining sections
This example program creates and accesses a simple database.
/**********************************************************/
/* A simple Data Base Program */
/**********************************************************/
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# define MAX 100 /* constant*/
struct addr { /*struct called list*/
char name[30] ;
char street[40] ;
char town[20] ;
char county[20] ;
char code[10] ;
} list[MAX]; /* 100 records*/
main()
{
int choice;
init_list(); /* initialze the list */
for(;;) {
choice = menu_select(); /* get user's selection*/
switch(choice) {
case 1: enter(); /* enter a new entry */
break;
case 2: del(); /* delete an entry */
break;
case 3: show_list(); /* display the list */
break;
case 4: search(); /* find an entry */
break;
case 5: save(); /* save to disk */
break;
case 6: load(); /* read from disk */
break;
case 7: exit(0);
}
}
}
/*********************************************************/
/* Function del */
/*********************************************************/
del()
{
int i;
char str[255];
inputs("enter name: " , str , 30);
i = find(str);
if (i>=0) *list[i].name = '\0' ;
else printf("not found\n") ;
}
/**********************************************************/
/* Function display */
/**********************************************************/
display(int i)
{
printf("%s\n" , list[i].name);
printf("%s\n" , list[i].street);
printf("%s\n" , list[i].town);
printf("%s\n" , list[i].county);
printf("%s\n" , list[i].code);
}
/**********************************************************/
/* Function enter */
/**********************************************************/
enter()
{
int i;
for(;;) {
i = find_free(); /* find a free structure */
if(i<0) {
printf("list full\n");
return;
}
inputs("enter name: ", list[i].name,30); if(!*list[i].name)
break; /* stop entering */
inputs("enter street: ", list[i].street, 40);
inputs("enter town: ", list[i].town, 20);
inputs("enter county: ", list[i].county, 20);
inputs("enter Postal code: ", list[i].code, 10);
}
}
/**********************************************************/
/* Function find */
/**********************************************************/
find(char *name)
{
int i;
for(i=0 ; i<MAX ; i++)
if(!strcmp(name ,list[i].name)) break;
if(i==MAX) return
else return i;
}
/**********************************************************/
/* Function find_free */
/**********************************************************/
find_free()
{
register int i;
for(i=0; i<MAX; i++)
if(!*list[i].name) return i;
return
}
/**********************************************************/
/* Function init_list */
/**********************************************************/
init_list()
{
register int i;
for (i=0 ; i<MAX ; i++)
*list[i].name = '\0'
}
/**********************************************************/
/* Function inputs */
/**********************************************************/
inputs( char *prompt , char *s , int count)
{
char str[255];
do {
printf(prompt);
gets(str);
if(strlen(str) 1; 1; ;>=count) printf("\ntoo long\n");
} while(strlen(str)>=count);
strcpy(s , str);
}
/**********************************************************/
/* Function load */
/**********************************************************/
load()
{
FILE *fp;
if ( (fp=fopen("mlist" , "rb")) == NULL) {
printf("cannot open file\n");
return;
}
printf("\nloading file\n");
fread(list , sizeof list , 1 , fp);
if (ferror(fp))
printf("An error occurred while reading file.\n");
fclose(fp);
}
/**********************************************************/
/* Function menu_select */
/**********************************************************/
menu_select()
{
char s[80];
int c;
printf("1. Enter a name\n") ;
printf("2. Delete a name\n") ;
printf("3. List the File \n");
printf("4. Search\n") ;
printf("5. Save the file\n") ;
printf("6. Load the file\n") ;
printf("7. Quit\n") ;
do {
printf("\nEnter your choice: ");
gets(s);
c = atoi(s);
} while(c<0 || c>7);
return c;
}
/**********************************************************/
/* Function save */
/**********************************************************/
save()
{
FILE *fp;
if ( (fp=fopen("mlist" , "wb")) == NULL) {
printf("cannot open file\n");
return;
}
printf("\nsaving file\n");
fwrite(list , sizeof list , 1 , fp);
if (ferror(fp))
printf("An error occurred while writing file.\n");
fclose(fp);
}
/**********************************************************/
/* Function search */
/**********************************************************/
search()
{
int i;
char name[30];
inputs("enter name to find: " , name , 30);
if ((i=find(name))<0)
printf("not found\n");
else display(i);
}
/**********************************************************/
/* Function show_list */
/**********************************************************/
show_list()
{
int i;
for(i=0 ; i<MAX ; i++) {
if(*list[i].name) {
display(i);
printf("\n\n");
}
}
printf("\n\n");
}
[program]
The second example program uses functions to play a simple game of tic tac toe.
#include <stdio.h>
#include <stdlib.h>
char matrix[3][3];
main()
{
char done;
printf("This is the game of tic tac toe...\n");
printf("You will be playing against the computer.\n") ;
done = ' ';
init_matrix();
do {
disp_matrix();
get_player_move();
done = check();
if (done != ' ') break;
get_computer_move();
done = check();
} while (done == ' ');
if (done == 'X') printf("\n\nYou won!!!\n");
else printf("I won!!!\n");
disp_matrix();
}
/**********************************************************/
/* fuction to initialise matrix */
/**********************************************************/
init_matrix()
{
int i , j ;
for (i=0 ; i<3 ; i++)
for (j=0 ; j<3 ; j++)
matrix[i][j] = ' ';
}
/**********************************************************/
/* fuction to get players move */
/**********************************************************/
get_player_move()
{
int x , y ;
printf("Enter coordinates of your X: ");
scanf("%d%d" , &x , &y);
x--; y--;
if (matrix[x][y] != ' ') {
printf("Invalid move, try again...\n");
get_player_move();
}
else matrix[x][y] = 'X';
}
/**********************************************************/
/* fuction to get computer move */
/**********************************************************/
get_computer_move()
{
int i , j ;
for (i=0 ; i<3 ; i++) {
for (j=0 ; j<3 ; j++)
if(matrix[i][j]==' ') break;
if (matrix[i][j] == ' ') break;
}
if (i*j == 9) {
printf("draw....\n");
exit(0);
}
else matrix[i][j] = 'O';
}
/**********************************************************/
/* fuction to display matrix */
/**********************************************************/
disp_matrix()
{
int t ;
printf(" 1 2 3\n");
for (t=0 ; t<3 ; t++) {
printf(" %c | %c | %c %d" , matrix[t][0],
matrix[t][1], matrix[t][2] , t+1);
if (t!=2) printf("\n---|---|---\n");
}
printf("\n");
}
/**********************************************************/
/* fuction to check matrix */
/**********************************************************/
check()
{
int i ;
for (i=0 ; i<3 ; i++)
if(matrix[i][0] == matrix[i][1] && matrix[i][0] == matrix[i][2])
return matrix[i][0];
for (i=0 ; i<3 ; i++)
if(matrix[0][i] == matrix[1][i] && matrix[0][i] == matrix[2][i])
return matrix[0][i];
if(matrix[0][0] == matrix[1][1] && matrix[1][1] == matrix[2][2])
return matrix[0][0];
if(matrix[0][2] == matrix[1][1] && matrix[1][1] == matrix[2][0])
return matrix[0][2];
return ' ';
}