Imprimer un mois calendaire

Implémentez une fonction qui imprime le calendrier pour un mois et une année donnés. Tout d’abord, demandez à l’utilisateur:

Enter the month and year: 

Une fois que l’utilisateur a entré une entrée valide (deux entiers séparés par un espace), imprimez le calendrier dans un format similaire à celui de la commande UNIX. Par exemple, si l’utilisateur entre 03 2014 , le résultat devrait être:

J’ai besoin d’aide pour pouvoir demander à l’utilisateur la consortingbution spécifique que cette question demande. J’ai également du mal à créer du code capable d’imprimer différents mois en fonction de la saisie, car chaque mois commence un jour différent. Je ne peux pas utiliser quelque chose de trop complexe car je suis un cours d’initiation à la programmation.

Le code que j’ai jusqu’à présent pour n’imprimer que mars:

 #include  int main() { int k, rmd; printf(" March 2014\n"); printf(" Su Mo Tu We Th Fr Sa\n"); for(k = 1; k < 32; ++k) { if(k == 1){ printf(" %2d\n", k); } else if(k % 7 == 1) { printf(" %2d\n", k); } else { printf(" %2d", k); } } return 0; } 

 #include  int isLeapYear( int year ); /* True if leap year */ int leapYears( int year ); /* The number of leap year */ int todayOf( int y, int m, int d); /* The number of days since the beginning of the year */ long days( int y, int m, int d); /* Total number of days */ void calendar(int y, int m); /* display calendar at my */ int main(void){ int year,month; printf("Enter the month and year: "); scanf("%d %d", &month, &year); calendar(year, month); return 0; } int isLeapYear( int y ) /* True if leap year */ { return(y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0)); } int leapYears( int y ) /* The number of leap year */ { return y/4 - y/100 + y/400; } int todayOf( int y, int m, int d) /* The number of days since the beginning of the year */ { static int DayOfMonth[] = { -1/*dummy*/,0,31,59,90,120,151,181,212,243,273,304,334}; return DayOfMonth[m] + d + ((m>2 && isLeapYear(y))? 1 : 0); } long days( int y, int m, int d) /* Total number of days */ { int lastYear; lastYear = y - 1; return 365L * lastYear + leapYears(lastYear) + todayOf(y,m,d); } void calendar(int y, int m) /* display calendar at my */ { const char *NameOfMonth[] = { NULL/*dummp*/, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; char Week[] = "Su Mo Tu We Th Fr Sa"; int DayOfMonth[] = { -1/*dummy*/,31,28,31,30,31,30,31,31,30,31,30,31 }; int weekOfTopDay; int i,day; weekOfTopDay = days(y, m, 1) % 7; if(isLeapYear(y)) DayOfMonth[2] = 29; printf("\n %s %d\n%s\n", NameOfMonth[m], y, Week); for(i=0;i