**Problem :-**Write A C Program To Print A Calendar By Taking Input From User Using Loop Like Taking a Start Date From User

**Logic :-**In this problem we are taking number of days and start date as input start day are given below .

Monday -0

Tuesday -1

Wednesday -2

Thursday -3

Friday -4

Saturday -5

Sunday -6

Date Must Start With Given Days so we use a code 0 to 6 Monday to Sunday

Try Yourself C Program to Count Number of Digits of A Number (Integer)

Try Yourself C Program to Count Number of Digits of A Number (Integer)

**Solution :-**
#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

void main()

{

//Ghanendra Yadav

int i,j,k,day,dt=1;

printf("C Program to Print a Calendar With Start With Input Day\n\n");

printf("Enter Total Numbers of Days in a Month : ");

scanf("%d",&day);

printf("\n\nEnter First Day Start From <0-Mon....5-Sat & 6-Sun> End With Sunday : ");

scanf("%d",&k);

printf("\nMon \tTue \tWed \tThu \tFri \tSat \tSun \n\n");

printf(" _________________________________________________\n\n");

for(j=k;j>0;j--)

{

printf("\t");

}

while(dt<=day)

{

if(k!=0)

{

if(k%7==0)

printf("\n");

}

printf("%d\t",dt);

dt++;

k++;

}

getch();

}

**Output:-**

Hi Ghanendra,

ReplyDeleteI don't understand what following of your code means. I understand that you use this to structure the 7-days week and start with a new row after 7 days, but I could not encrypt your code-logic yet.

while(dt<=day)

{

if(k!=0)

{

if(k%7==0)

printf("\n");

}

printf("%d\t",dt);

dt++;

k++;

}

Thank you!

Best regards,

Carlos

Hi Carlos

Deletefor(j=k;j>0;j--)

{

printf("\t");

}

\\this loop is to leave the space and start date 1 from the exact day, for example lets say in 'k' you have put 2 which is "Wednesday"

while(dt<=day)

{

if(k!=0)

{

if(k%7==0)

printf("\n");

}

printf("%d\t",dt);

dt++;

k++;

}

here the while loop will run unless the 'dt' will be equal to the given 'day' value

now the if(k!=0) this function is only for the condition when the 'k' will be assigned with '0' no extra line will be left, you may remove this function.

now if(k%7==0) if condition then the day no will shift to new line to again start from Monday till Sunday.

printing the 'day' no and updating 'dt' & 'k' by +1 when 'dt' will be equal to 28||29||30||31 the loop will end and the calendar will be displayed.