以前做的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;
}
網站欄目:計算天數函數c語言 計算天數 函數
URL標題:http://vcdvsql.cn/article10/hpgpgo.html
成都網站建設公司_創新互聯,為您提供移動網站建設、品牌網站制作、建站公司、企業網站制作、手機網站建設、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯