c魚干し網の問題を解決する

2021 ワード

------------------------------------------------------------------------------
魚を打つか網を干すかの問題
-------------------------------------------------------------------------------
テーマ:渔师は渔をして、3日は渔をして2日ネットを干して、1990年1月1日から就业して、年月日を与えて、この日、渔をしますかそれともネットを干します.
考え方:この問題を見ても、考えがないかもしれないので、ゆっくり分析してください.
目標:1.その日に魚を打つか網を干すかの問題を解決するには、、、、、まずこの年が何日経ったかを知らなければなりません.このように%5で、簡単です.
         2.あなたが1年に何日を过ごしたかを解决するには、まずこの年が何日を过ごしたかを判断しなければなりません.さらに、1990年から今まで何年を过ごしたかを判断しなければなりません.残りは最も面倒な平年閏年の问题です.
         3.もう1つ追加しなければなりません.あなたの月は、この年の中で何ヶ月が過ぎたかを計算しなければなりません.これで何日か直接追加できます(平年2月28、閏年2月29、閏年平年を判断しなければなりません).
#include
bool leap(int year)//       
{
	if((year % 4 == 0 && year % 100 !=  0)||(year % 400 ==0))
	{
		return 1; 
	}
	else 
	{
		return 0;
	}
}
int monthly(int year,int month ,int day)//           
{
	int a[11] = {31,28,31,30,31,30,31,31,30,31,30};//             ,                ,  12 
	                                            //     ,     11      ,            ,       
	int rs = 0;//       
	if(leap(year)==1)   //            
	{
		a[1]= 29;
	}
	for(int i =0;i < month-1;i ++)//    0  ,            ,     month-1     month-1
	{                             //        
		rs = rs + a[i] ;
	}
	rs= rs +day;
   return rs;
}
int amont (int year,int month ,int day)//       ,      
{
	int i = 1990;
	int sum = 0;
	while(i < year)
	{
		if(leap(i)==1 )
		{
			sum = sum + 366;
		}
		else
		{
			sum = sum + 365;
		}
		i ++;
	}
	sum = sum +monthly (year,month,day);
	return sum;
}
bool fish_net(int year ,int month ,int day)//        
{
	int b = 0;
	
	b = amont( year,month,day ) % 5;//          ,          
	if(b == 0 || b == 4)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int main ()
{
	int y = 1993;
	int m =3;
	int d =1;
	if(y >= 1990)
	{
		if(fish_net(y,m ,d))
		{
			printf("  
"); } else if(fish_net(y,m ,d)==0) { printf("
"); } } else { printf(" !
"); } return 0; }
ok、コード終了!