Friday, 10 January 2014

C Program to Add digits of the number using single statement

Add Digits of the Number Using Single Statement :
#include<stdio.h>
void main()
{
int number=12354;
int sum=0;
for(;number > 0;sum+=number%10,number/=10);
printf("nSum of the Digits : %d",sum);
}
Output :
15
How ?
for(initialization ; conditional ; increment)
{
  //body
}
  • In ‘For Loop‘ Condition is first tested and then body is executed.
  • Carefully Look at Semicolon at the end of ‘For Loop’ , which tells us two Things -
    • For Loop is Bodyless.
    • Only Condition and Increment Statements will be executed.

C Program to Reverse the digits of a number in 3 Steps

C program to reverse the digits of a number ? [ In 3 Steps ]

Problem Statement : Reversing the digits of number without using mod (%) Operator ?

Prerequisite :
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
 int num1, num2;
 char str[10];
 clrscr();

    printf("nEnte the Number : ");
    scanf("%d",&num1);

    sprintf(str,"%d",num1);

    strrev(str);

    num2 = atoi(str);

    printf("nReversed Number : ");
    printf("%dn",num2);
    getch();
}
Output :
Enter the Number : 123
Reversed Number : 321

Explain Logic :
Step 1 : Store Number in the Form of String
  • Sprintf function sends formatted output to string variable specified
  • Number will be stored in String variable “str”
sprintf(str,"%d",num1);
Step 2 : Reverse the String Using Strrev Function
  • Strrev will reverse String
  • eg “1234″ will be reversed as “4321″
strrev(str);
Step 3 : Convert String to Number
  • [A to I ] =  [ Alphabet to Integer ] = atoi
  • Atoi function Converts String to Integer
num2 = atoi(str);

C Program to Add reversed number with Original Number

C program to add reversed number with Original Number ?


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
int num1, num2;
char str[10];
clrscr();

printf("nEnte the Number : ");
scanf("%d",&num1);

sprintf(str,"%d",num1);

strrev(str);

num2 = atoi(str);

printf("nReversed Number + Original Number = %d ",num1 + num2 );
getch();
}
Output:
Ente the Number : 123Reversed Number + Original Number = 444

C Program to Demonstrate Printf inside Another Printf Statement

Printf inside printf in C : Example 1

#include<stdio.h>
#include<conio.h>
void main()
{
int num=1342;
clrscr();
printf("%d",printf("%d",printf("%d",num)));
getch();
}

Output :
134241

How ?
  1. Firstly Inner printf is executed which results in printing 1324 
  2. This Printf Returns total number of Digits i.e  4 and second inner printf will looks like
  3. printf("%d",printf("%d",4));
  4. It prints 4 and Returns the total number of digits i.e 1 (4 is single digit number )
  5. printf("%d",1);
  6. It prints simply 1 and output will looks like 132441

Rule :
Inner printf returns Length of string printed on screen to the outer printf

C Program to Demonstrate Nested Printf Statements

nested Printf statements : Example 1

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
printf("%d",printf("abcdefghijklmnopqrstuvwxyz"));
getch();
}

Output :
abcdefghijklmnopqrstuvwxyz26

How ?
  1. “abcdefghijklmnopqrstuvwxyz” will be first Printed while executing inner printf
  2. Total Length of the “abcdefghijklmnopqrstuvwxyz” is 26
  3. So printf will return total length of string
  4. It returns 26 to outer printf
  5. This outer printf will print 26

C Program to Print Hello word without using semicolon

Part 1 : Printf Hello word in C without using semicolon [only ones ]

#include<stdio.h>
void main()
{
   if(printf("Hello"))
   {
   }
}

Output :
Hello

Part 2 : Printf Hello word in C without using semicolon [infinite times]

#include<stdio.h>
void main()
{
   while(printf("Hello"))
   {
   }
}

Part 3 : Printf Hello [Using Switch]

#include<stdio.h>
void main()
{
   switch(printf("Hello"))
   {
   }
}

Part 4 : Using Else-if Ladder

#include<stdio.h>
void main()
{
   if(printf(""))
      {
      }
   else if (printf("Hello"))
      {
      }
   else
      {
      }
}

Part 5 : Printf Hello [Using While and Not]

#include<stdio.h>
void main()
{
    while(!printf("Hello"))
    {
    }
}

Part 6 : Using #define

#include<stdio.h>
#define PRINT printf("Hello")
void main()
{
    if(PRINT)
    {
    }
}

C Program to Accept Paragraph using scanf

Accept Paragraph using scanf in C
#include<stdio.h>
void main()
{
char para[100];
printf("Enter Paragraph : ");
scanf("%[^t]",para);
printf("%s",para);
}

Output :[Press Tab to Stop Accepting Characters ]
Enter Paragraph : C Programming is very easy to understand
C
Language
is backbone of
C++
Language

How ?
scanf("%[^t]",para);
  1. Here scanf will accept Characters entered with spaces.
  2. It also accepts the Words , new line characters .
  3. [^t]  represent that all characters are accepted except tab(t) , whenever t will encountered then the process of accepting characters will be terminated.
Drawbacks :
  1. Paragraph Size cannot be estimated at Compile Time
  2. It’s vulnerable to buffer overflows.
How to Specify Maximum Size to Avoid Overflow ?
//------------------------------------
// Accepts only 100 Characters
//------------------------------------
scanf("%100[^t]",para);

C Program to Write inline assembly language code in C Program

Add Two Numbers Using Inline Assembly Language ???
#include<stdio.h>
void main()
{
int a=3,b=3,c;

   asm {
       mov ax,a
       mov bx,a
       add ax,bx
       mov c,ax
      }

printf("%d",c);
}

  1. Assembly Language can be Written in C .
  2. C Supports Assembly as well as Higher Language Features so called “Middle Level Language”.
  3. As shown in above Program , “asm” Keyword is written to indicate that “next followed instruction is from Assembly Language”.
asm mov ax,a
  1. Opening Curly brace after “asm” keyword tells that it is the “Start of Multiple Line Assembly Statements”  i.e “We want to Write Multiple Instructions”
  2. Above Program Without “Opening and Closing Brace” can be written as – ["asm" keyword before every Instruction ]
asm mov ax,a
asm mov bx,a
asm add ax,bx
asm mov c,ax

What above Program Actually Does ?
  1. In 8086 Assembly Program for Storing Values AX,BX,CX,DX registers are used called General Purpose Registers .
asm mov ax,a
  1. Move Instruction Copies content of Variable “a” into Register “AX”
  2. Add Instruction adds Content of two specified Registers and Stores Result in “ax” in above example.
  3. Copy Result into Variable “c”

C Program to Input Password for Validation of User name

How to Input Password in C ?
#include< stdio.h>
#include< conio.h>

void main()
{
char password[25],ch;
int i;

clrscr();
puts("Enter password : ");

while(1)
    {
    if(i<0)
         i=0;
    ch=getch();

    if(ch==13)
        break;

    if(ch==8) /*ASCII value of BACKSPACE*/
        {
        putch('b');
        putch(NULL);
        putch('b');
        i--;
        continue;
        }

   password[i++]=ch;
   ch='*';
   putch(ch);
   }

password[i]='';
printf("nPassword Entered : %s",password);
getch();
}
Output :
Enter password : ******
Password Entered : rakesh

Explain ?
ch=getch();
  • Accept Character without Echo [ without displaying on Screen ]
  • getch will accept character and store it in “ch”
if(ch==13)
        break;
  • ASCII Value of “Enter Key” is 13
  • Stop Accepting Password Characters after “Enter” Key.
if(ch==8) /*ASCII value of BACKSPACE*/
        {
        putch('b');
        putch(NULL);
        putch('b');
        i--;
        continue;
        }
  • ASCII Value of “BACKSPACE” is 8
  • After hitting “backspace”following actions should be carried out -
    • Cursor Should be moved 1 character back.
    • Overwrite that character by “NULL”.
    • After Writing NULL again cursor is moved 1 character ahead so again move cursor 1 character back .
    • Decrement Current Track of Character. [i]
password[i++]=ch;
   ch='*';
  • Store Accepted Character in String array .
  • Instead of Displaying Character , display Asterisk (*)

C Program to Count number of digits in number without using mod operator

Problem Statement : Write a C Program to Find the Number of Digits in an entered number ?

#include<stdio.h>
#include<string.h>
void main()
{
int num,digits;
char ch[10];

printf("nEnter the Number : ");
scanf("%d",&num);

sprintf(ch,"%d",num);

digits = strlen(ch);

printf("nNumber of Digits : %d",digits);

getch();
}

Output:
Enter the Number : 1234
Number of Digits : 4

C Program to Swap two no’s without using third variable

Program to show swap of two no’s without using third variable

#include<stdio.h>
#include<conio.h>

void main()
{
int a,b;

clrscr();

printf("nEnter value for num1 & num2 : ");
scanf("%d %d",&a,&b);

a=a+b;
b=a-b;
a=a-b;

printf("nAfter swapping value of a : %d",a);
printf("nAfter swapping value of b : %d",b);

getch();
}
Output :
Enter value for num1 & num2 : 10 20

After swapping value of a : 20
After swapping value of b : 10

C Program to Implement Calender Program to display Day of the month

Calender Program in C Programming Language : Display Day of the month

Calender Program in C Programming Language :

Program will accept Year,Month and Date from the user and will display the day of the month.
#include<stdio.h>
#include<conio.h>
#include<math.h>

int isdatevalid(int month, int day, int year)
{
  if (day <= 0) return 0 ;
  switch( month )
    {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12: if (day > 31) return 0 ; else return 1 ;
      case 4:
      case 6:
      case 9:
      case 11: if (day > 30) return 0 ; else return 1 ;
      case 2:
        if ( day > 29 ) return 0 ;
        if ( day < 29 ) return 1 ;

    else return 0 ;
    }
  return 0 ;
}
//------------------------------------------------
int fm(int date, int month,int year)
{
int fmonth,leap;

//leap function 1 for leap & 0 for non-leap

if((year%100==0) && (year%400!=0))
    leap=0;
else if(year%4==0)
    leap=1;
else
    leap=0;

fmonth=3+(2-leap)*((month+2)/(2*month))+(5*month+month/9)/2;
//f(m) formula

fmonth = fmonth % 7; //bring it in range of 0 to 6

return fmonth;
}

//----------------------------------------------
int day_of_week(int date, int month, int year)
{
int dow; //day of week

int YY = year % 100;
int century = year / 100;

printf("nDate: %d/%d/%dnn",date,month,year);

dow = 1.25 *  YY + fm(date,month,year) + date - 2*( century % 4);
//function of weekday for Gregorian

dow = dow % 7; //remainder on division by 7

switch (dow)
    {
    case 0:
        printf("weekday = Saturday");
        break;
    case 1:
        printf("weekday = Sunday");
        break;
    case 2:
        printf("weekday = Monday");
        break;
    case 3:
        printf("weekday = Tuesday");
        break;
    case 4:
        printf("weekday = Wednesday");
        break;
    case 5:
        printf("weekday = Thursday");
        break;
    case 6:
        printf("weekday = Friday");
        break;
    default:
        printf("Incorrect data");
    }
return 0;
}
//------------------------------------------
void main()
{
int date,month,year;
clrscr();

printf("Enter the year ");
scanf("%d",&year);

printf("Enter the month ");
scanf("%d",&month);

printf("Enter the date ");
scanf("%d",&date);

day_of_week(date,month,year);

getch();
}

Output :

Enter the year 2012
Enter the month 02
Enter the date 29

Date: 29/2/2012

weekday = Wednesday

Index : Pyramid Programs in C Programming

 No Program View
1 .
View
2
View
3
View
4
View
5
View
6
View
7
View
8
View
9
View
10
View
11
View
12
View
13
2
2  4
2  4  6
2  4  6  8
View

C Programs : Number System Conversion in C

Programs : Number System Conversion in C

No Program Program Link
1 Decimal to Binary Conversion C Program
2 Decimal to Octal Conversion C Program
3 Decimal to Hexadecimal Conversion C Program
4 Binary to Decimal C Program
5 Decimal to Binary using Bitwise Operator C Program

Program to Print All ASCII Value Table in C Programming

Program to Print All ASCII Values in C Programming
Program :
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0;
char ch;
clrscr();
for(i=0;i<256;i++)
  {
    printf("%c ",ch);
    ch = ch + 1;
  }
}

Program to Check Whether Number is Perfect Or Not

Program to Check Whether Given Number is Perfect Or Not ?
#include<stdio.h>
int main()
{
int n,i=1,sum=0;
  printf("nEnter a number: ");
  scanf("%d",&n);
  while(i<n){
      if(n%i==0)
           sum=sum+i;
          i++;
  }
  if(sum==n)
      printf("n%d is a Perfect Number",i);
  else
      printf("n%d is Non Perfect Number",i);
  return 0;
}

Programs : Check for Armstrong Number in C

Armstrong Number : When Sum of Cubes of Digits Of Number Equal to Same Given Number then the number is called as Armstrong Number.
#include<stdio.h>
int main()
{
int num,temp,sum=0,rem;

printf("nEnter Number For Checking Armstrong : ");
scanf("%d",&num);

temp = num;

 while (num != 0)
 {
  rem = num % 10;
  sum = sum + (rem*rem*rem);
  num = num / 10;
 }

if(temp == sum)
    printf("n%d is Amstrong Number",temp);
else
    printf("n%d is Amstrong Number",temp);
return(0);
}

Output :
Enter Number For Checking Armstrong : 153
153 is Amstrong Number
Explanation :
153 = [1*1*1] + [5*5*5] + [3*3*3]
    = 1 + 125 + 27
    = 153

Check Whether Number is Prime or not

#include<stdio.h>
int main()
{
    int num,i,count=0;
    printf("nEnter a number:");
    scanf("%d",&num);
    for(i=2;i<=num/2;i++){
        if(num%i==0){
         count++;
            break;
        }
    }
   if(count==0)
        printf("%d is a prime number",num);
   else
      printf("%d is not a prime number",num);
   return 0;
}

Check Whether Given Number is Palindrome or Not ????

Check Whether Given Number is Palindrome or Not ????
#include<stdio.h>
#include<string.h>
int main()
{
int num,i,count=0;
char str1[10],str2[10];

printf("nEnter a number:");
scanf("%d",&num);

sprintf(str1,"%d",num); // Convert Number to String

strcpy(str2,str1); // Copy String into Other
strrev(str2); // Reverse 2nd Number

count = strcmp(str1,str2);

if(count==0)
     printf("%d is a prime number",num);
else
     printf("%d is not a prime number",num);
return 0;
}

C Program to print Tower of Hanoi using recursion !!

#include<stdio.h>
#include<conio.h>
void TOH(int n,char x,char y,char z);
void main()
{
 int n;
 printf("nEnter number of plates:");
 scanf("%d",&n);
 TOH(n-1,'A','B','C');
 getch();
}
void TOH(int n,char x,char y,char z)
{
 if(n>0)
 {
  TOH(n-1,x,z,y);
  printf("n%c -> %c",x,y);
  TOH(n-1,z,y,x);
 }
}
Following Image will explain you more about tower of hanoi :

Find Sum of Digits of the Number using Recursive Function in C Programming

#include<stdio.h>
 int rem,sum; 
int calsum(int n)
 {if(n!=0){ rem=n%10; sum=sum+rem; calsum(n/10);}
  return sum;}//------------------------------------------------intmain(){int num,val; clrscr();printf("nEnter a number: ");scanf("%d",&num); val=calsum(num);printf("nSum of the digits of %d is: %d",num,x);return0;}
Output :
Enter a number: 123
Sum of the digits of 123 is : 6

C Program To Print First 10 Natural Numbers

C Program to print first 10 Natural Numbers without using Conditional Loop
Using For Loop
#include<stdio.h>
#include<conio.h>
void main()
{
int i=1;
clrscr();
for(i=1;i<=10;i++)
  printf("%d",i);
getch();
}

Using While Loop
#include<stdio.h>
#include<conio.h>
void main()
{
int i=1;
clrscr();
while(i<=10)
  {
  printf("%d",i);
  i++;
  }
getch();
}

Using Do-While Loop
#include<stdio.h>
#include<conio.h>
void main()
{
int i=1;
clrscr();
do{
  printf("%d",i);
  i++;
  }while(i<=10);
getch();
}

C Program to generate the Fibonacci Series starting from any two numbers

#include<stdio.h>
#include<conio.h>

int main()
{
int first,second,sum,num,counter=0;
clrscr();

printf("Enter the term : ");
scanf("%d",&num);

printf("nEnter First Number : ");
scanf("%d",&first);

printf("nEnter Second Number : ");
scanf("%d",&second);

printf("nFibonacci Series : %d  %d  ",first,second);

while(counter< num)
    {
    sum=first+second;
    printf("%d  ",sum);
    first=second;
    second=sum;
    counter++;
    }
getch();
}

Output :
Enter the term : 5
Enter First Number : 1

Enter Second Number : 3

Fibonacci Series : 1 3 4 7 11 18 29

To Display of message using function in C Programming

Program : To Display of message using function
#include<stdio.h>
void message(); //Prototype Declaration
void main()
{
message(); // Function Call
}

void message() // Function Definition
{
printf("Hi , How are you ? ");
}
Output :
Hi , How are you ?

C Program to Add two Numbers Using Function in C Programming

Add Two Numbers By Using Function : [ C Program to Add two Numbers Using Function in C Programming ]
#include<stdio.h>
#include<stdio.h>
#include<conio.h>
 void main()
 {
 int a,b,c;
 printf("nEnter the two numbers : ");
 scanf("%d %d",&a,&b);

 /* Call Function Sum With Two Parameters */
 c = sum(a,b);

 printf("nAddition of two number is : ");
 getch();
 }

 int sum ( int num1,int num2)
 {
 int num3;
 num3 = num1 + num2 ;
 return(num3);
 }
Output :
Enter the two numbers : 12 15
Addition of two number is : 27

C Program to calculate sum of numbers 1 to N using recursion

#include<stdio.h>
#include<conio.h>
int add(int);
//-------------------------------------
void main()
{
int i,num;
int sum;
clrscr();
printf("Input a number : ");
scanf("%d",&num);
sum=add(num);
printf("nSum of Number From 1 to %d :%d",num,sum);
}
//---------------------------------------
int add(int m)
{
int sum;
if(m==1)
    return(1);
else
   sum=m+add(m-1);
return(sum);
}

Output :
Input a number : 5
Sum of Number From 1 to 5 :15

C Program to Display same Source Code as Output

Program :
#include<stdio.h>

int main(){
    FILE *fp;
    char c;

    fp = fopen(__FILE__,"r");

    do{
         c= getc(fp);
         putchar(c);
    }
    while(c!=EOF);

    fclose(fp);

    return 0;
}
Output :
#include<stdio.h>

int main(){
    FILE *fp;
    char c;

    fp = fopen(__FILE__,"r");

    do{
         c= getc(fp);
         putchar(c);
    }
    while(c!=EOF);

    fclose(fp);

    return 0;
}
Explanation :
fp = fopen(__FILE__,"r");
[arrowlist]
  • __FILE__ is Standard Predefined Macros in C Programming.
  • This macro will expand to the name of current file path.
  • Suppose we have saved this source code at path -
[/arrowlist]
c://tc/bin/file1.c
then
fp = fopen(__FILE__,"r");
will be expanded as -
fp = fopen("c://tc/bin/file1.c","r");