zoukankan      html  css  js  c++  java
  • 【c语言趣味编程100例】打鱼还是晒网

    问题 打鱼还是晒网

    编程思路:三天打鱼 两天晒网
    实现的思路主要是要求出输入的指定的时间和距离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
    ");
    	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;
    }
  • 相关阅读:
    【Unity学习笔记】Unity网络游戏开发实战(一)---网络编程的开端:Echo程序
    【DX11学习笔记】GerstnerWave波浪模拟(基于GPU计算着色器的实现)
    【DX11学习笔记】粒子系统--爆炸特效
    【设计模式】(二)观察者模式是什么?
    【设计模式】(一)工厂模式是什么?
    【C++笔记】C++中常见智能指针auto_ptr、unique_ptr、shared_ptr和weak_ptr的用法
    【C++笔记】C++关联容器set和map的概述和操作
    【C++笔记】C++函数模版与类模版
    【C++笔记】C++中vector、stack、deque、list的简易实际使用方法
    python之赋值、浅拷贝、深拷贝
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860869.html
Copyright © 2011-2022 走看看