This document contains numerous example programs to provide a practical aid for learning C programming language.
This program uses the scanf function.
#include <stdio.h> main() { float a , b , c; printf("Input two numbers... \n"); scanf("%f%f" , &a , &b); c = a * b ; printf("%f times %f = %f\n" , a , b , c); }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"); }
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> #includemain() { 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); } }
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"); }
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 */ }
This is a program to demonstrate the use of functions
#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.
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
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); } }
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); }
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);
}
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); }
/**********************************************************/ /* 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[program]=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"); }
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 ' '; }[program]