Basic Programs in C
Basic Programs in C
Recursion: A function is called 'recursive 'if a statement within the body of a function calls
the same function. It is also called 'circular definition '. Recursion is thus a process of
defining something in terms of itself.
Program: To calculate the factorial value using recursion.
#include
int fact(int n);
int main(){
int x, i;
printf("En ter a value for x: \n");
scanf("%d" ,&x);
i = fact(x);
printf("\n Factorial of %d is %d", x, i);
return 0;
}int fact(int n){
/* n=0 indicates a terminatin g condition */
if (n
return (1);
}else{
/* function calling itself */
return (n * fact(n - 1));
/*n*fact(n -1) is a recursive expression */
}
}
Output:
Enter a value for x:4
Factorial of 4 is 24
Explanation:
fact(n) = n * fact(n-1)
If n=4
fact(4) = 4 * fact(3) there is a call to fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1 * fact(0)
fact(0) = 1
fact(1) = 1 * 1 = 1
fact(2) = 2 * 1 = 2
fact(3) = 3 * 2 = 6
Thus fact(4) = 4 * 6 = 24
Terminating condition( n )infinite loop.
2. Write a program to check whether the given number is even or odd.
Program:
#include
int main(){
int a;
printf("En ter a: \n");
scanf("%d" ,&a);
/* logic */
if (a % 2 == 0){
printf("Th e given number is EVEN\n");
}
else{
printf("Th e given number is ODD\n");
}
return 0;
}
Output:
Enter a: 2
The given number is EVEN
Logic:
step1: temp=x;
step2: x=y;
step3: y=temp;
Example:
if x=5 and y=8, consider a temporary variable temp.
step1: temp=x=5;
step2: x=y=8;
step3: y=temp=5;
Thus the values of the variables x and y are interchanged.
Program:
#include
int main(){
int a, b, temp;
printf ("Enter the value of a and b: \n");
scanf ("%d %d",&a,&b);
printf ("Be fore swapping a=%d, b=%d \n", a, b);
/*Swapping logic */
temp = a;
a = b;
b = temp;
printf ("After swapping a=%d, b=%d", a, b);
return 0;
}
Output:
Enter the values of a and b: 2 3
Before swapping a=2, b=3
After swapping a=3, b=2
3. Write a program to swap two numbers without using a temporary variable.
Swapping interchanges the values of two given variables.
Logic:
step1: x=x+y;
step2: y=x-y;
step3: x=x-y;
Example:
if x=7 and y=4
step1: x=7+4=11;
step2: y=11-4=7;
step3: x=11-7=4;
Thus the values of the variables x and y are interchanged.
Program:
#include
int main(){
int a, b;
printf("Enter values of a and b: \n");
scanf("%d %d",&a,&b);
printf("Be fore swapping a=%d, b=%d\n", a,b);
/*Swapping logic */
a = a + b;
b = a - b;
a = a - b;
printf("After swapping a=%d b=%d\n", a, b);
return 0;
}
Output:
Enter values of a and b: 2 3
Before swapping a=2, b=3
The values after swapping are a=3 b=2
4. Write a program to swap two numbers using bitwise operators.
Program:
#include
int main(){
int i = 65;
int k = 120;
printf("\n value of i=%d k=%d before swapping", i, k);
i = i ^ k;
k = i ^ k;
i = i ^ k;
printf("\n value of i=%d k=%d after swapping", i, k);
return 0;
}
Explanation:
i = 65; binary equivalent of 65 is 0100 0001
k = 120; binary equivalent of 120 is 0111 1000
i = i^k;
i...0100 0001
k...0111 1000
val of i = 0011 1001
k = i^k
i...0011 1001
k...0111 1000
---------
val of k = 0100 0001 binary equivalent of this is 65--( that is the initial value of i)
i = i^k
i...0011 1001
k...0100 0001
val of i = 0111 1000 binary equivalent of this is 120-- (that is the initial value of k)
5. Write a program to find the greatest of three numbers.
Program:
#include
int main(){
int a, b, c;
printf("En ter a,b,c: \n");
scanf("%d %d %d",&a,&b,&c);
if (a>b&&a>c){
printf("a is Greater than b and c");
}
else if (b>a&&b>c){
printf("b is Greater than a and c");
}
else if (c>a&&c>b){
printf("c is Greater than a and b");
}
else{
printf("al l are equal or any two values are equal");
}
return 0;
}
Output:
Enter a,b,c: 3 5 8
c is Greater than a and b
A prime number is a natural number that has only one and itself as factors. Examples: 2, 3, 13
are prime numbers.
Program:
#include
main(){
int n, i, c = 0;
printf("En ter any number n: \n");
scanf("%d" ,&n);
/*logic*/
for (i = 1; i
if (n % i == 0){
c++;
}
}
if (c == 2){
printf("n is a Prime number");
}
else{
printf("n is not a Prime number");
}
return 0;
}
Output:
1st iteration: i=1; I here i is incremente d i.e. i value for next iteration is 2
now if(n%i==0) then c is incremented i.e. if(5%1 ==0) then c is incremented, here 5%1=0 thus c is
incremented. now c=1;
2nd iteration: i=2; I here i is incremente d i.e. i value for next iteration is 3
now if(n%i==0) then c is incremented i.e. if (5%2 ==0) then c is incremente d, but 5%2!=0 and so
c is not incremented, c remains 1, c=1;
3rd iteration: i=3;I here i is incremented i.e. i value for next iteration is 4
now if(n%i==0) then c is incremented i.e. if(5%3 ==0) then c ic incremented, but 5%3!=0 and so c
is not incremente d, c remains 1, c=1;
4th iteration: i=4; I here i is incremented i.e. i value for next iteration is 5
now if(n%i==0) then c is incremented i.e. if (5%4==0) then c is incremented, but 5%4!=0 and so c
is not incremente d, c remains 1, c=1;
5th iteration: i=5;I here i is incremented i.e. i value for next iteration is 6
now if(n%i==0) then c is incremented i.e. if(5%5==0) then c is incremented, 5%5=0 and so c is
incremented. i.e. c=2
6th iteration: i=6;I here i value is 6 and now if(c==2) then n is a prime number
we have c=2 from the 5th iteration and thus n=5 is a Prime number.
If a number, which when read in both forward and backward way is same, then such a number is
called a palindrome number.
Program:
#include
int main(){
int n, n1, rev = 0, rem;
printf("En ter any number: \n");
scanf("%d" ,&n);
n1 = n;
/* logic */
while (n>0){
rem = n % 10;
rev = rev * 10 + rem;
n = n / 10;
}
if (n1 == rev){
printf("Gi ven number is a palindromi c number");
}
else{
printf("Gi ven number is not a palindromi c number");
}
return 0;
}
Output:
Enter any number: 121
Given number is a palindrome
Explanation with an example:
Consider a number n=121, reverse=0, remainder;
number=121
now the while loop is executed /* the condition (n>0) is satisfied */
/* calculate remainder */
remainder of 121 divided by 10=(121%10 )=1;
now reverse=(reverse*10) +remainder=(0*10)+1 / * we have initialized reverse=0 */=1
number=number/10 =121/10 =12
now the number is 12, greater than 0. The above process is repeated for number=12.
remainder= 12%10=2;
reverse=(1 *10)+2=12;
number=12/ 10=1;
now the number is 1, greater than 0. The above process is repeated for number=1.
remainder= 1%10=1;
reverse=(1 2*10)+1=12 1;
number=1/ 10 / * the condition n>0 is not satisfied,co ntrol leaves the while loop */
Program stops here. The given number=121 equals the reverse of the number. Thus the given
number is a palindrome number.
Program:
#include
#include
int main(){
char string1[20 ];
int i, length;
int flag = 0;
printf("En ter a string: \n");
scanf("%s" , string1);
length = strlen(str ing1);
for(i=0;i<length ;i++){
if(string1 [i] != string1[le ngth-i-1]) {
flag = 1;
break;
}
}
if (flag){
printf("%s is not a palindrome \n", string1);
}
else{
printf("%s is a palindrome \n", string1);
}
return 0;
}
Output:
Fibonacci series: Any number in the series is obtained by adding the previous two
numbers of the series.
Let f(n) be n'th term.
f(0)=0;
f(1)=1;
f(n)=f(n-1 )+f(n-2); (for n>=2)
Series is as follows
011
(1+0)
2 (1+1)
3 (1+2)
5 (2+3)
8 (3+5)
13 (5+8)
21 (8+13)
34 (13+21)
...and so on
Output:
The fibonacci series is as follows
0 1 1 2 3 5 8 13 21 34
Explanatio n:
The first two elements are initialize d to 0, 1 respective ly. Other elements in the series
are generated by looping and adding previous two numbes. These numbers are stored in
an array and ten elements of the series are printed as output.
11.Write a program to display the multiplica tion table of a given number.
#include
int main(){
int num, i = 1;
printf("\n Enter any Number:");
scanf("%d" ,&num);
printf("Mu ltiplicati on table of %d: \n", num);
while (i
printf("\n %d x %d = %d", num, i, num * i);
i++;
}
return 0;
}
Output:
Enter any Number:5
5x1=5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
Explanation:
We need to multiply the given number (i.e. the number for which we want the multiplica tion
table) with value of'i'which increments from 1 to 10.
12.Count the Total Number of 7 coming between 1 to 100.
/* I made this code in a way that u can give Upper limit i.e. 100,Lower limit i.e. 1 and the
specific number u wants to count in between i.e. 7 */
#include
#include
void main()
{
int i,j,U=100, L=1,count= 0,r=1,n;
clrscr();
printf("\n Enter the number u wants to count\n:");
scanf("%d" ,&n);
printf("\n Enter the lower limit\n:");
scanf("%d" ,&L);
printf("\n Enter the upper limit\n:");
scanf("%d" ,&U);
for (i=L;i
{
j=i;
while(j)
{
r=j%10;
if (r==n)
{
count++;
}
j=j/10;
}
}
if(n==0&&L ==0)
count++;
printf("\n Total Number of %d between %d and %d = %d",n,L,U, count);
getch();
}
Definition of perfect number or What is perfect number?
Perfect number is a positive number which sum of all positive divisors excluding that number is
equal to that number. For example 6 is perfect number since divisor of 6 are 1, 2 and 3. Sum of
its divisor is
1 + 2+ 3 =6
Note: 6 is the smallest perfect number.
Next perfect number is 28 since 1+ 2 + 4 + 7 + 14 = 28
Some more perfect numbers: 496, 8128
Sample output:
Enter a number: 6
6 is a perfect number
#include<stdio.h>
int main(){
int n,i,sum;
printf("Perfect numbers are: ");
for(n=1;n<=100;n++){
i=1;
sum = 0;
while(i<n){
if(n%i==0)
sum=sum+i;
i++;
}
if(sum==n)
printf("%d ",n);
}
return 0;
}
Output:
Perfect numbers are: 6 & 28
Sample output:
Enter a number: 153
153 is an Armstrong number