c语言实例--打渔晒网问题

标签: c语言 c语言基础 新手
8人阅读 评论(0) 收藏 举报
分类:

问题:中国有句俗语叫“三天打鱼两天晒网”。某人从2018年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

思路先行:

        第一步:先判断输入的年份是否为闰年,闰年366天,平年365天;

        第二步:计算从2018年1月1日起到以后某年的总天数;

                    2.1:先判断是否为闰年

                    2.2:再分别定义平年数组的月份和闰年数组的月份,再加上当年月的月份-1的天数;

                    2.3:接下来,在从2018年起,年份的个数;

                    2.4:最后,加上输入年份的日期个数。

        第三步:判断“三天打渔,两天晒网”的含义:1,2,3,4,5,6,7,8,9,10.....可以发现以5为周期,余数为1,2,3的为打渔,为0,4的是晒网。

代码如下:

#include <stdio.h>                                //引用头文件

int leap(int a)                                   //第一步:判断是否为闰年:能被4整除,但被100整除,或者能被400整除
{
	if(a%4==0 && a%100!=0 ||  a%400==0)
		return 1;                                 //是闰年返回1
	else
		return 0;									//平年返回0
}
												//第二步:
int number(int year,int month,int day)        //定义年月日和距离2018年1月1日的总数n
{
	int sum=0,int i,j;							//定义天数总和sum,变量i,j;
	int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};     //定义平年的12个月份
	int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};	//定义闰年的12个月份

	if(leap(year)==1)							//判断是否为闰年
		for(i=0;i<month-1;i++)					//是闰年,累加数组b前month-1个月份的天数
			sum +=b[i];				
	else
		for(i=0;i<month-1;i++)					//是平年,累加数组a前month-1个月份的天数
			sum +=a[i];
	for(j=2018;j<year;j++)					//从2018年1月1日起,开始计算总天数
		if(leap(j)==1)
			sum +=366;                       //是闰年,直接加上366天
		else  
			sum +=365;						//是平年,直接加上365天
		sum +=day;
	return sum;								//最后,加上天数分总和
}
                                              //第三步:
void main()                                      
{
	int year,month,day,n;								
	printf("请输入您想判断的年月日:");	
	scanf("%d%d%d",&year,&month,&day);					//输入年月份
	n=number(year,month,day);
	if((n%5)>0 && (n%5)<4)								//注意:1,2,3,4,5,6,7,8,9,....每三天打一次渔,两天晒一次网,循环天数为5,并且余数为1,2,3的为打渔,4,5的为晒网
		printf("%d年%月%d日:打渔\n",year,month,day);
	else
		printf("%d年%d月%d日:晒网\n",year,month,day);
}

输出结果如下:


查看评论

C语言那些事儿

-
  • 1970年01月01日 08:00

三天打渔两天晒网c语言程序

中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言实现程序解决问题。 基本要求:1.程序风格良好(...
  • zjl2289923890
  • zjl2289923890
  • 2017-03-15 21:52:45
  • 270

三天打渔,两天晒网(C语言)

#include #include int main() {  int year,month,day;  int Add=0,j=0;  int Startyear;  int a[12...
  • Tibet_Huang
  • Tibet_Huang
  • 2017-03-15 21:34:27
  • 1010

打鱼还是晒网C++

中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。 *问题分析与算法设计 根据题意可以将解题过程分为三步:...
  • Z_zhangyinqian
  • Z_zhangyinqian
  • 2015-10-27 09:53:52
  • 536

C语言 打渔晒网

题目:中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”?#include#include#includeconst...
  • impk1211
  • impk1211
  • 2011-04-13 15:45:00
  • 1462

C/C++程序题之三天打渔两天晒网

俗话说三天打渔两天晒网,某人从2010年1月1日开始打三天鱼,然后晒两天网,然后再打三天鱼,再晒两天网,周而复始,输入任意一天,求该天是打渔还是晒网...
  • yang_teng_
  • yang_teng_
  • 2015-08-18 17:56:25
  • 621

打渔晒网问题(难度:1颗星)

问题描述:如果1个渔夫从2011年1月1日开始每3天打一次渔,两天晒一次网,编程实现当输入2011年1月1日之后的任意1天,输出该渔夫是在打渔还是在晒网。输入样例 2011 5 5输出样例 晒网参...
  • yi_ming_he
  • yi_ming_he
  • 2017-05-27 15:56:23
  • 10560

c语言程序——打渔还是晒网

  • 2014年03月18日 23:31
  • 7KB
  • 下载

三天打渔,俩天晒网(C++实现)

#include using namespace std; int leap (int a) {     if (a%4==0%a%100!=0||a%400==0)     {    ...
  • hello_myhome
  • hello_myhome
  • 2015-08-14 11:25:45
  • 697

Java 实现选择排序

选择排序: 原理:依次从数组最左边取一个元素,与之后的位置上的元素比较,如果大于/小于(取决于需要升序排还是降序排),则保存较大/较小元素的索引 当一轮比较后,将保存的较大/较小元素的索引与 这轮开始...
  • jjwwmlp456
  • jjwwmlp456
  • 2014-10-16 10:37:42
  • 953
    个人资料
    等级:
    访问量: 29
    积分: 60
    排名: 163万+
    c语言
    用c语言的实例,实现一个个小小的实验。
    文章分类
    文章存档