C語言 · 黑色星期五


算法訓練 黑色星期五  
時間限制:1.0s   內存限制:512.0MB
    

問題描述
  有些西方人比較迷信,如果某個月的13號正好是星期五,他們就會覺得不太吉利,用古人的說法,就是“諸事不宜”。請你編寫一個程序,統計出在某個特定的年份中,出現了多少次既是13號又是星期五的情形,以幫助你的迷信朋友解決難題。
  說明:(1)一年有365天,閏年有366天,所謂閏年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用戶輸入的年份肯定大於或等於1998年。
  輸入格式:輸入只有一行,即某個特定的年份(大於或等於1998年)。
  輸出格式:輸出只有一行,即在這一年中,出現了多少次既是13號又是星期五的情形。
輸入輸出樣例
樣例輸入
1998
樣例輸出
3
 
 1 #include <stdio.h>     
 2 int AllWeek(int year){  
 3     //已知1998年1月1日是星期四  
 4     int i=1998,week=3;  
 5     int days=0;  
 6     for(i=1998;i<year;i++)  
 7     {  
 8         if(i%400==0||(i%4==0&&i%100!=0))  
 9             days+=366;  
10         else  
11             days+=365;  
12     }      
13     return (days+week)%7;  
14 }  
15 void ShowFd(int year){  
16     int day[2][12]={{31,28,31,30,31,30,31,31,30,31,30},{31,29,31,30,31,30,31,31,30,31,30}};  
17     int week=AllWeek(year);
18     int flag=year%400==0 || (year%4==0&&year%100!=0) ? 1:0;  
19     int times=0,i,days=0;  
20       
21     //遍歷12個月   
22     for(i=0;i<12;i++){ 
23         //判斷每個月13號是否是黑色星期五   
24         if((days+12+week)%7==4)
25             times++;
26         days+=day[flag][i]; 
27     }
28     printf("%d",times);
29 }   
30   
31 int main(){  
32     int year;  
33     scanf("%d",&year);  
34     ShowFd(year);  
35     return 0;  
36 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM