第一章
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
源代码如下:
#include<stdio.h>
int Totaldays(int year,int month,int day);
int runYear(int year); /*函数声明*/
int main()
{
int n,year,month,day;
int totalday;
totalday=Totaldays(year,month,day);
printf("请输入日期 year/month/day :\n");
scanf("%d/%d/%d",&year,&month,&day); /*输入日期*/
if(year<2010)/*判断日期格式是否正确*/
printf("年份过小,请重新输入!");
if(month<1||month>12)
printf("月份错误!");
if(day<0||day>31)
printf("日期错误!");
n=Totaldays(year,month,day);
switch(n)
{
case 0:printf("今天打鱼!\n");break; /*打印结果*/
case 1:printf("今天晒网!\n");break;
default:break;
}
return 0;
}
int runYear(int year)
{
if( (year%4==0 && year%100!=0) || (year%400==0) ) /*判断是否为闰年*/
return 1;
else
return 0;
}
int Totaldays(int year,int month,int day)
{
int d1=0,d2=0,d3=0,totalday=0,days; /*平均每月的天数*/
int i_month=1;
int data[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(runYear(year))
{
data[2]=29;
days=366;
}
else
days=365; /*计算从2010年至指定年的前一年共有多少天*/
d1=(year-2010)*days;
while (i_month < month) /*加上指定年中到指定日期的天数*/
{
d2 += data[i_month ++];
}
d3=day;
totalday=d1+d2+d3;
if(totalday%5==0||totalday%5==4) /*求余数*/
return 1;
else
return 0;
}
结果截屏:
程序流程图: