重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
以前做的C语言实习作业......
长葛网站建设公司创新互联,长葛网站设计制作,有大型网站制作公司丰富经验。已为长葛上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的长葛做网站的公司定做!
要把年、月、日分开来求...
#include stdio.h
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; /*储存12个月的天数*/
void main()
{
int spec_year(int);
void scan(int *year,int *month,int *day);
long com_year(int y1,int y2);
int com_month(int y1,int m1,int y2,int m2);
int com_day(int y1,int m1,int d1,int y2,int m2,int d2);
int year1,month1,day1;
int year2,month2,day2;
long sum=0;
int k=0;
/*输入两个日期,做合法性检查*/
printf("Enter the first date,like 1988 11 30:");
scan(year1,month1,day1);
printf("Enter the second date,like 1988 11 30:");
scan(year2,month2,day2);
/*当输入的第一个日期比第二个日期大时,将二者对换*/
if((year1year2)||((year1==year2)(month1month2))||((year1==year2)(month1==month2)(day1day2)))
{
int temp;
temp=year1;year1=year2;year2=temp;
temp=month1;month1=month2;month2=temp;
temp=day1;day1=day2;day2=temp;
}
/*计算两个日期之间的天数*/
sum+=com_year(year1,year2); /*计算两个年份之间的天数*/
sum+=com_month(year1,month1,year2,month2); /*计算两个月份之间的天数*/
sum+=com_day(year1,month1,day1,year2,month2,day2); /*计算两天之间的天数*/
/*输出*/
printf("There are %ld days between them.\n",sum);
}
void scan(int *year,int *month,int *day) /*输入日期函数,合法性判断*/
{
int k=0;
do
{
if(k!=0)
printf("\nWrong date!\n");
k++;
/*printf("Please write down the day,like 1988 11 30:");*/
scanf("%d%d%d",year,month,day);
if(spec_year(*year))
mon[1]=29;
}while(*daymon[*month-1]||*month13||*year1900||*year3000);
mon[1]=28;
}
long com_year(int y1,int y2) /*计算两个年份之间的天数*/
{
int i;
long sum=0;
for(i=y1+1;iy2;i++)
{
if(spec_year(i))
sum+=366;
else
sum+=365;
}
return sum;
}
int com_month(int y1,int m1,int y2,int m2) /*计算两个月份之间的天数*/
{
int i;
int sum=0;
if(y1!=y2)
{
if(spec_year(y1))
{
mon[1]=29;
}
if(m1!=m2)
{
for(i=m1;i12;i++)
{
sum+=mon[i];
}
mon[1]=28;
if(spec_year(y2))
{
mon[1]=29;
}
for(i=0;im2-1;i++)
{
sum+=mon[i];
}
mon[1]=28;
}
else
{
for(i=m1-1;i12;i++)
{
sum+=mon[i];
}
mon[1]=28;
if(spec_year(y2))
{
mon[1]=29;
}
for(i=0;im2-1;i++)
{
sum+=mon[i];
}
mon[1]=28;
}
}
else
{
if(spec_year(y1))
{
mon[1]=29;
}
for(i=m1;im2-1;i++)
{
sum+=mon[i];
}
mon[1]=28;
}
return sum;
}
int com_day(int y1,int m1,int d1,int y2,int m2,int d2) /*计算两天之间的天数*/
{
int i;
int sum=0;
if(m1!=m2)
{
if(spec_year(y1))
{
mon[1]=29;
}
sum+=(mon[m1-1]-d1);
sum+=d2;
mon[1]=28;
}
else
{
sum+=d2-d1;
}
return sum;
}
int spec_year(int year) /*判断是否为闰年*/
{
if((year%400==0)||((year%4==0)(year%100!=0)))
return 1;
else
return 0;
}
【程序1】:
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",year,month,day);
switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1month2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
#includestdio.h
int main()
{
int yyyy,mm,dd,a,b;
scanf("%d/%d/%d",yyyy,mm,dd);
a=31*(mm1)+28*(mm2)+31*(mm3)+30*(mm4)+31*(mm5)+30*(mm6)+31*(mm7)+31*(mm8)+30*(mm9)+31*(mm10)+30*(mm11)+dd;
b=((yyyy%4==0)*(yyyy%100!=0)+(yyyy%400==0))*(mm2);
printf("%d\n",a+b);
return 0;
}