㈠ 」輸入某年某月某日,判斷這一天是這一年的第幾天「用c語言怎樣編程
#include<stdio.h>
voidmain()
{
intsumday(intmonth,intday);/*計算第多少天的函數聲明*/
intleap(intyear);/*判斷是否閏年的函數聲明*/
intmonth,day,days,year;
intdaytab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*一般年的12個月的天數組成一個數組*/
printf("Pleaseinputdate(year,month,day):");/*提示輸入年月日*/
scanf("%d-%d-%d",&year,&month,&day);/*輸入年月日*/
printf("%d/%d/%d\n",year,month,day);
days=sumday(month,day);/*計算天數的函數調用*/
if(leap(year)&&month>=3)/*調用判斷是否閏年的函數,並且月份大於等於3時天數加1*/
days=days+1;
printf("Todayisthe%ddayofthisyear.",days);/*顯示是第多少天的函數*/
}
intsumday(intmonth,intday)
{
intdaytab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
inti;
for(
i=0;i<month;i++)
day+=daytab[i];
return(day);
}
intleap(intyear)
{
intleap;
leap=(year%4==0&&year%100!=0||year%400==0);
return(leap);
}
㈡ C語言中輸入一個日期計算他是今年的第幾天
輸入年月日三個值,先累加該年之前各個月的每月天數,最後累加日期天數即可獲取結果。
一、演算法設計:
1、輸入年月日三個值;
2、為保證程序健壯性,可以對三個值的合法性進行判斷,只對合法數據進行操作;
3、累加之前各月天數;
4、累加當前日值;
5、輸出結果。
二、注意點:
可以使用數組存儲各個月份的天數,用循環累加。需要注意的是閏年的判斷。對於閏年,2月要多加一天。
三、參考代碼:
#include<stdio.h>
intmain()
{
intmdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};//十二個月的天數。
inty,m,d,r=0,i;
scanf("%d%d%d",&y,&m,&d);
if(y%400==0||(y%4==0&&y%100!=0))//閏年。
mdays[1]=29;//設置閏年二月值。
if(y<0||m<=0||m>12||d<=0||d>mdays[m-1])//輸入非法。
{
printf("輸入年月日不合法 ");//提示並退出。
return-1;
}
for(i=0;i<m-1;i++)//累加之前各個月。
r+=mdays[i];
r+=d;//累加日期值。
printf("%d ",r);//輸出結果。
return0;
}
㈢ c語言輸入年月日,算第幾天
日期比較容易算。星期幾可以用下面的公式來計算:
(年份-1) + (年份-1)/4 - (年份-1)/100 + (年份-1)/400 +第幾天
建立兩個數組,一個是每月天數的數組,一個是星期幾的數組。
程序如下:
#include<stdio.h>
voidmain()
{
inti,n=0,year,month,day,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
charb[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
scanf("%d/%d/%d",&year,&month,&day);
if((year%4==0&&year%100)||year%400==0)a[2]=29;
for(i=0;i<month;i++)
n+=a[i];n+=day;
printf("%d%s",n,b[((year-1)+(year-1)/4-(year-1)/100+(year-1)/400+n)%7]);
}