亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言怎么解決打魚還是曬網問題

發布時間:2022-03-24 09:21:46 來源:億速云 閱讀:221 作者:iii 欄目:開發技術

這篇文章主要講解了“C語言怎么解決打魚還是曬網問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言怎么解決打魚還是曬網問題”吧!

1. 問題描述

中國有句俗語叫 “ 三天打魚兩天曬網 ”。某人從 1990 年 1 月 1 日起開始 “三天打魚兩天曬網”,問這個人在以后的某一天中是 “打魚” 還是 “曬網”。

2. 題目分析

根據題意可以將解題過程分為 3 步:

(1) 計算從 1990 年 1 月 1 日開始至指定日期共有多少天。

(2) 由于 “打魚” 和 “曬網” 的周期為 5 天,所以將計算出的天數用 5 去除。

(3) 根據余數判斷他是在 “打魚” 還是在 “曬網”。

若余數為 1, 2, 3,則他是在 “打魚”,否則是在 “曬網”。

3. 算法設計

該算法為數值計算算法,要利用循環求出指定日期距 1990 年 1 月 1 日的天數,并考慮到循環過程中的閏年情況,閏年二月為 29 天,平年二月為 28 天。

判斷閏年的方法如下:

如果(能被 4 整除并且不能被 100 整除)或者(能被 400 整除)則該年是閏年;否則不是閏年。

提示:C語言中判斷能否整除可以使用求余運算符 %

4. 流程框架

C語言怎么解決打魚還是曬網問題

???? 求出指定日期距離

這里為整個算法的核心部分,經過分析可以得到:  (指定日期距離 1990 年 1 月 1 日的天數)totalDay = 1990 年到指定年的前一年共有多少天 + 指定年中到指定日期的天數。

由于每月天數不同,可以設置一個月份數組int perMonth[13],存放每月的天數。

程序利用年份作為循環變量,要判斷指定年份之前的每一年是否為閏年,若為閏年則執行totalDay=totalDay+366,否則執行 totalDay=totalDay+365;

對于指定年份,也要判定是否為閏年,然后根據月份數,將每月的天數累加到 totalDay 中。

perMonth 數組的初始化設置如下圖所示

C語言怎么解決打魚還是曬網問題

perMonth 數組設置含有 13 個元素,perMonth[0]元素并不使用。

原因在于這種設置可以使數組下標和月份對應,便于編程設置循環變量,數組中 2 月天數初始設置為 28,如果當前年份為閨年,則需要執行 perMonth[2]++ 操作。

設計一個函數int run Year(int year) 來判斷是否為閏年。

C語言怎么解決打魚還是曬網問題

求總天數函數int countDay(Date currentDay)的實現。

C語言怎么解決打魚還是曬網問題

5. 代碼實現

完整代碼????

#include <stdio.h>

//定義日期結構體
typedef struct DATE
{
	int year;
	int month;
	int day;
}DATE;

//判斷閏年函數
int runYear(int year)
{
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		return 1;
	else
		return 0;
}

//計算指定日期距離 1990 年 1 月 1 日的天數
int countDay(DATE currentDay)
{
	//定義一個每月天數的數組
	int perMonth[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

	int totalDay = 0;
	int i = 0;
	int year = 0;

	//求出指定日期之前的每一年的天數累加和
	for (year = 1990; year < currentDay.year; year++)
	{
		if (runYear(year))
		{
			totalDay = totalDay + 366;
		}
		else
		{
			totalDay = totalDay + 365;
		}
	}
	
	//如果為閏年,則2月份為29天
	if (runYear(currentDay.year))
	{
		perMonth[2]++;
	}

	//將本年內的天數累加到totalDay中
	for (i = 1; i < currentDay.month; i++)
	{
		totalDay += perMonth[i];
	}

	//將本月內的天數累加到totalDay中
	totalDay += currentDay.day;

	return totalDay;
}

int main()
{
	DATE today; //指定日期
	int totalDay; //指定日期距離1990年1月1日的天數
	int result; //totalDay對5取余的結果

	printf("請輸入指定日期,包括年,月,日,例如:1999 1 31\n");
	printf("請輸入>:");
	scanf("%d%d%d", &today.year, &today.month, &today.day);

	totalDay = countDay(today); //求出指定日期距離1990年1月1日的天數

	result = totalDay % 5; //天數%5 判斷是打魚還是曬網
	if (result > 0 && result < 4)
	{
		printf("今天打魚\n");
	}
	else
	{
		printf("今天曬網\n");
	}
}

運行結果????

我們怎么判斷出這個程序是正確的呢?  很簡單,因為題目是從 1990 年 1 月 1 日開始的,那么1,2,3日肯定是 “打魚” ;4,5日肯定是 “曬網”。

C語言怎么解決打魚還是曬網問題

C語言怎么解決打魚還是曬網問題

C語言怎么解決打魚還是曬網問題

C語言怎么解決打魚還是曬網問題

C語言怎么解決打魚還是曬網問題

感謝各位的閱讀,以上就是“C語言怎么解決打魚還是曬網問題”的內容了,經過本文的學習后,相信大家對C語言怎么解決打魚還是曬網問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尤溪县| 和田市| 桃源县| 环江| 东莞市| 建宁县| 临泽县| 罗山县| 嘉兴市| 黑水县| 丰台区| 黄梅县| 越西县| 南投市| 富阳市| 汝南县| 龙山县| 鄂州市| 清新县| 利川市| 唐河县| 九台市| 定州市| 苍溪县| 郓城县| 新乡市| 沛县| 德惠市| 阿克苏市| 刚察县| 修水县| 定结县| 乌兰察布市| 客服| 四川省| 长子县| 苍南县| 麻栗坡县| 柘荣县| 简阳市| 宁晋县|