c語言日期求星期
Ⅰ 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語言的理解,還能提高編程技巧。
Ⅱ C語言 給日期算星期幾
補充一個錯誤,下面回答同理
case3:if(d>32){b=1printf("dayiserror.
")};break;
case4:if(d>31){b=1printf("dayiserror.
")};break;
case5:if(d>32){b=1printf("dayiserror.
")};break;
case6:if(d>31){b=1printf("dayiserror.
")};break;
case7:if(d>32){b=1printf("dayiserror.
")};break;
case8:if(d>32){b=1printf("dayiserror.
")};break;
case9:if(d>31){b=1printf("dayiserror.
")};break;
case10:if(d>32){b=1printf("dayiserror.
")};break;
case11:if(d>31){b=1printf("dayiserror.
")};break;
case12:if(d>32){b=1printf("dayiserror.
")};break;這一段代碼if後面的條件全部大了1,限制值應該是31和30,除非你改成>=
Ⅲ c語言計算日期為星期幾
#include<stdio.h>
int isRn(int num){
if((num%4==0&&num%400!=0)||num%400==0){
return 1;
}else{
return 0;
}
int monthDay(int year,int month){
if(month==1||month==3||month==5
||month==7||month==8||month==10
||month==12){
return 31;
}else if(month==4||month==6||month==9
||month==11)
{
return 30;
}else if(month==2){
if(isRn(int num)==1){
return 29;
}else{
return 28;
}
}
}
void main(){
int sum=0,year,month,day,i,temp,j;
printf("請輸入年份:");
scanf("%d",&year);
while(year<1900){
printf("年份必須從1900年開始!\n\n");
printf("請輸入年份:");
scanf("%d",&year);
}
printf("請輸入月份:");
scanf("%d",&month);
while(month<1||month>12){
printf("月份必須是1到12之間!\n\n");
printf("請輸入月份:");
scanf("%d",&month);
}
printf("請輸入日:");
scanf("%d",&day);
while(day>monthDay(year,month)||day<1){
printf("日必須從1開始,並且不能大於該月的天數!\n\n");
printf("請輸入日:");
scanf("%d",&day);
}
temp=month;
temp-=1;
for(i=1900;i<=year;i++){
for(j=1;j<=12;j++){
if(i==year&&j==temp){
break;
}
sum+= monthDay(year,j);
}
}
sum+=day;
printf("%d年%d月%d日,是星期",year,month,day)
if(sum%7==0){
printf("日。\n");
}else if(sum%7==1){
printf("一。\n");
}else if(sum%7==2){
printf("二。\n");
}else if(sum%7==3){
printf("三。\n");
}else if(sum%7==4){
printf("四。\n");
}else if(sum%7==5){
printf("五。\n");
}else if(sum%7==2){
printf("六。\n");
}
}
Ⅳ C語言編程序實現如下功能:輸入任意一個日期的年、月、日的值,求出是星期幾並輸出。
#include <stdio.h>
void main ()
{
int y,m,d,c,s,w;
printf("請輸入8位年月日,以空格隔開:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31+d;
else if (m==3) c=31+28+d;
else if (m==4) c=31+28+31+d;
else if (m==5) c=31+28+31+30+d;
else if (m==6) c=31+28+31+30+31+d;
else if (m==7) c=31+28+31+30+31+30+d;
else if (m==8) c=31+28+31+30+31+30+31+d;
else if (m==9) c=31+28+31+30+31+30+31+31+d;
else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
if (m>2)
{if (y%100==0) {if (y%400==0) c=c+1;}
else if (y%4==0) c=c+1;}
s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
w=s%7;
switch (w)
{
case 0: printf("星期日");break;
case 1: printf("星期一");break;
case 2: printf("星期二");break;
case 3: printf("星期三");break;
case 4: printf("星期四");break;
case 5: printf("星期五");break;
case 6: printf("星期六");break;
printf("\n");
}
}
