終于寫對了,歡迎借鑒
#include <stdio.h>
int main()
{
int year = 2008;
int month =8;
int day = 8;
int sum;
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;
case 13:sum = 365;break;
default:
printf("%s\n","一年當中有12個月");
break;?
}
if(year%4==0 && year%100!=0)
{
sum += (day+1);
}
else
{
sum += day;
}
printf("%d年%d月%d日是該年的第%d天\n",year,month,day,sum);
return 0;
}
2021-02-05
這樣更方便看些:
#include <stdio.h>
int years_month_day(int years,int months);
int days;
int main()?
{?
? ? /* 定義需要計算的日期 */
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? /*
? ? ?* 請使用switch語句,if...else語句完成本題
? ? ?* 如有想看小編思路的,可以點擊左側任務中的“不會了怎么辦”
? ? ?* 小編還是希望大家獨立完成哦~
? ? ?*/
int i,j;
int year_month_day=0; //記錄2008-8-8日所在該年的天數
for(i=1;i<month;i++) //8月前的天數(不包含8月)
{
years_month_day(year,i); //刷新days天數
year_month_day += days; //疊加月份天數
printf("%d月有%d天,現在疊加天數是%d天\n",i,days,year_month_day);
}
year_month_day += 8 ; //加上最后的8天
? ? printf("%d年%d月%d日是該年的第%d天\n",year,month,day,year_month_day);
? ??
return 0;
}
int years_month_day(int years,int months)
{
? ? //通過調用該函數來判斷該月的天數
? ? switch(months)
? ? {
? ? ? ? //將兩個特殊的月份提出來
? ? ? ? case 2:
? ? ? ? ? ? if( years%100==0 && years%400==0 || years%4==0 && years%100!=0) //判斷是否是閏年,閏年2月29天,平年28
? ? ? ? ? ? {days=29;}
? ? ? ? ? ? else
? ? ? ? ? ? {days=28;}
break;
? ? ? ? case 8:
? ? ? ? ? ? days=31;
break;
? ? ? ? //判斷其他月份天數,默認奇數為31天,偶數為30天
? ? ? ? default:
? ? ? ? ? ? if(months % 2 == 0) //該月份為偶數
? ? ? ? ? ? {days=30;}
? ? ? ? ? ? else
? ? ? ? ? ? {days=31;}
break;
? ? }
return 0;
}
2021-02-05
或者使用我的,能夠判斷年份來計算天數:
2020-12-19
#include <stdio.h>
int main()?
{?
? ? int year = 2008;
? ? int month = 8;
? ? int day = 8;
? ? int i,j;
? ? if(year%100==0&&year%400==0||year%4==0&&year%100!=0)i=1;
? ? else i=0;
? ? switch(month)
? ? {
? ? ? ? case 1:j=day;break;
? ? ? ? case 2:j=31+ day;break;
? ? ? ? case 3:j=31+ 28+ day;break;
? ? ? ? case 4:j=31+ 28+ 31+ day;break;
? ? ? ? case 5:j=31+ 28+ 31+ 30+ day;break;
? ? ? ? case 6:j=31+ 28+ 31+ 30+ 31+ day;break;
? ? ? ? case 7:j=31+ 28+ 31+ 30+ 31+ 30+ day;break;
? ? ? ? case 8:j=31+ 28+ 31+ 30+ 31+ 30+ 31+day;break;
? ? ? ? case 9:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ day;break;
? ? ? ? case 10:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ 30+day;break;
我的也對了
? ? ? ? case 11:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ 30+ 31+day;break;
? ? ? ? case 12:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ 30+ 31+ 30+ day;break;
? ? }
? ? if(i==1)j+=1;
? ? printf("%d年%d月%d日是該年的第%d天",year,month,day,j);
? ? return 0;
}