Код:

/* Ïîäñ÷åò êîëè÷åñòâà äíåé ìåæäó äâóìÿ äàòàìè */
#include <stdio.h>
int compare(int d, int m,int g,int d2,int m2,int g2);
int beginning(int day, int month, int year);
int ending(int day, int month, int year);
int days(int d,int d2);
int mes[]={31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int d=1,m=1,g=2004; //íà÷àëüíàÿ äàòà (äåíü, ìåñÿö, ãîä)
int d2=31,m2=12,g2=2006; //êîíå÷íàÿ äàòà (äåíü, ìåñÿö, ãîä)
int c;
c=compare(d,m,g,d2,m2,g2);
printf("%d\n",c);
}
int compare(int d, int m,int g,int d2,int m2,int g2){
int from,to,sum,year,dd,month;
sum=0;
if (g2>g)
{
from=beginning(d2,m2,g2);//îò íà÷àëà ãîäà
to=ending(d,m,g); // äî êîíöà ãîäà
sum=from+to;
for (year=g+1;year<g2;year++)
{
if (year%4!=0){
sum=sum+365;}
else {
sum=sum+366;}
}
return sum;
}
else if (g2<g)
{
from=beginning(d,m,g);//îò íà÷àëà ãîäà
to=ending(d2,m2,g2); // äî êîíöà ãîäà
sum=from+to;
for (year=g2+1;year<g;year++)
{if (year%4!=0){
sum=sum+365;}
else {
sum=sum+366;}
}
return sum;
}
else if (g2==g){
if (g%4!=0){
mes[1]=28;}
else {
mes[1]=29;}
if (m>m2){
for (month=m2+1;month<m;month++){
sum=sum+mes[month-1];
}
sum=sum+mes[m2-1]-d2;
sum=sum+d;
return sum;
}
else if (m<m2){
for (month=m+1;month<m2;month++){
sum=sum+mes[month-1];
}
sum=sum+mes[m-1]-d;
sum=sum+d2;
return sum;
}
else if (m==m2){
dd=days(d,d2);
return dd;
}
}
}
int days(int d,int d2){
int sum;
if (d2<d){
sum=d-d2;}
else if(d2>d){
sum=d2-d;}
else if (d2==d){
sum=0;}
return sum;
}
/*
if (g2<g){
ending(g);//îò íà÷àëà ãîäà
beginning(g2);// äî êîíöà
sum();
}
if (g2==g)
*/
/* Ñëó÷àé 1: íà÷àëüíàÿ äàòà ìåíüøå êîíå÷íîé
Òîãäà íàì íóæíî çíàòü, ñêîëüêî â 1 äàòå, äî êîíöà ãîäà
è ñêîëüêî âî 2 äàòå îò íà÷àëà ãîäà*/
int beginning(int day, int month,int year){
int ms=0;
if (year%4!=0){
mes[1]=28;}
else {
mes[1]=29;}
if (month!=1){
for (int j=0; j<month-1;j++){
ms=ms+mes[j];
}
ms=ms+day;
}
else {
ms=day;
}
return ms;
}
int ending(int day, int month, int year){
int ms=0;
if (year%4!=0){
mes[1]=28;}
else {
mes[1]=29;}
if (month!=12){
for (int j=11; j>=month;j--){
ms=ms+mes[j];
}
ms=ms+mes[j]-day;
}
else {
ms=mes[11]-day;
}
return ms;
}