c語言輸入日期計算天數
1. c語言;輸入一個年份,輸出該年各月份天數以及總天數。
#include <stdio.h>
main()
{
int i,year,month[12] ={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&year);
if((year%4==0)&&(year%100!=0)||(year%400==0))month[1]++;year=0;
for (i=0;i<12;i++)
printf("month[%d]:day[%d] ",i+1,month[i]),year+=month[i];
printf("year:[%d]days ",year);
}
2. c語言:用自定義函數來實現任意輸入一個日期,結果輸出其星期幾
c語言中,通過編寫自定義函數,可以輕松地計算任意輸入日期對應的星期幾。這需要考慮閏年以及每個月的天數。計算方法是累加前幾個月的天數加上當前月的天數。具體實現時,需要定義一個函數來判斷是否為閏年,並根據年份和月份輸入來計算天數。
首先,定義一個數組來存儲每個月的天數。同時,定義一個變數來記錄是否為閏年。接著,使用for循環累加前幾個月的天數,根據輸入的月份調整累加的范圍。最後,將當前月的天數加到累計天數上,得到最終的天數。為了簡化計算,可以使用自定義函數來判斷是否為閏年,從而正確計算2月份的天數。
下面是一個簡單的實現示例:
int mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int leap_year(int year) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return 1;
}
return 0;
}
int main() {
int mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int y, m, d, days, leap;
scanf("%d%d%d", &y, &m, &d);
leap = leap_year(y);
for (int i = 1, days = 0; i < m; i++) {
if (i == 2 && leap) {
days += 29;
} else {
days += mon[i];
}
}
days += d;
printf("days=%d\n", days);
return 0;
}
通過上述代碼,可以准確地計算出輸入日期對應的天數。進一步地,可以結合星期幾的計算公式,實現計算星期幾的功能。這不僅有助於加深對c語言的理解,還能提高編程技巧。
3. 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;
}