问题 打鱼还是晒网
编程思路:三天打鱼 两天晒网
实现的思路主要是要求出输入的指定的时间和距离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;
}