【c語言趣味程式設計100例】打魚還是晒網
阿新 • • 發佈:2019-01-02
問題 打魚還是晒網
程式設計思路:三天打魚 兩天晒網
實現的思路主要是要求出輸入的指定的時間和距離1990 01 01這個時間的天數
我們知道年份有閏年和平年之分 閏年2月份是29天 平年2月份28天
因此 定義一個函式runyear()用來判斷程式是否是閏年,這個程式模組化的思想我們一定要有
這樣能從本質上將程式碼功能之間的耦合降低 實現低耦合
我們知道閏年,接著去定義一個函式 專門去計算總共的天數,
countDay();實現對天數的計算。用一個數組實現對月份的計算,陣列下標0 可以不用 直接用 1-12來儲存
每月的天數,因為2月的天數是不固定的,我們定義為28天,然後去判斷是否是閏年,如果是就加1操作
迴圈每年的天數,但是 從鍵盤上的輸入的這個年的的月份 也是應該加上,接著去判斷這個年份。
加上對應的月份 該月的天數,就實現對總天數的計算
程式的最後 就是對%5求餘數。1-3是打魚 4-5 晒網
#include<stdio.h> /* 程式:三天打魚 兩天晒網 實現的思路主要是要求出輸入的指定的時間和距離1990 01 01這個時間的天數 我們知道年份有閏年和平年之分 閏年2月份是29天 平年2月份28天 因此 定義一個函式runyear()用來判斷程式是否是閏年,這個程式模組化的思想我們一定要有 這樣能從本質上將程式碼功能之間的耦合降低 實現低耦合 我們知道閏年,接著去定義一個函式 專門去計算總共的天數, countDay();實現對天數的計算。用一個數組實現對月份的計算,陣列下標0 可以不用 直接用 1-12來儲存 每月的天數,因為2月的天數是不固定的,我們定義為28天,然後去判斷是否是閏年,如果是就加1操作 迴圈每年的天數,但是 從鍵盤上的輸入的這個年的的月份 也是應該加上,接著去判斷這個年份。 加上對應的月份 該月的天數,就實現對總天數的計算 程式的最後 就是對%5求餘數。1-3是打魚 4-5 晒網 **/ //定義一個結構體型別 年 月 日 typedef struct date{ int year; int month; int day; }DATE; int countDay(DATE ); int runyear(int ); void main(){ DATE today; int totalDay; int result; printf("請輸入指定日期 年月日 1991 01 02\n"); scanf("%d%d%d",&today.year,&today.month,&today.day); totalDay= countDay(today); result = totalDay%5; if(result>0&&result<4) printf("今天打魚"); else printf("今天晒網"); } //判斷這個年份是不是閏年 int runyear(int year){ if((year%4==0&&year/100!=0)||(year/400==0)) return 1; else return 0; } //計算這個年份總天數 int countDay(DATE currentDay){ int perMonth[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int totalDay = 0,year,i; for(year=1990;year<currentDay.year;year++) { if(runyear(year)) totalDay= totalDay+366; else totalDay = totalDay+365; } if(runyear(currentDay.year)) perMonth[2]+=1; for(i=0;i<currentDay.month;i++){ totalDay+=perMonth[i]; } totalDay+=currentDay.day; return totalDay; }