题目:中国有句俗话叫“三天打渔,两天晒网”,某人从2010年1月1日期开始“三天打渔,两天晒网” 问这个人在以后的某一天是“打渔”还是“晒网”。用C或着C++语言实现程序解决问题。

一:题目:中国有句俗话叫“三天打渔,两天晒网”,某人从2010年1月1日期开始“三天打渔,两天晒网” 问这个人在以后的某一天是“打渔”还是“晒网”。用C或着C++语言实现程序解决问题。

二: 在我的程序,主要是先输入年月日,就算在一年中在几月之前一共有多少天,就比如说在1月之前有0天,2月之前有31天,以此类推。这里要注意的是,2月在平年和闰年的天数是不一样的,先假设是平年,2月有28天,然后判断所输入的年份至2010年间是否有闰年,有一个闰年就再加1天。

最后计算出所输入的日期距2010年1月1日一共多少天,总的天数对5求余。求得的余数1、2、3表示“今天该打渔”,0、4表示“晒网”。

程序代码:

#include<stdio.h>

#include<math.h>

int  main()

{

  int year,month,day;

  int i,j;

  int days;

  int sum=0;                                       

  printf("please input year: ");                 //输入年月日

  scanf("%d",&year);

  printf("please input month: ");

  scanf("%d",&month);

  printf("please input day: ");

  scanf("%d",&day);                   

switch(month)

{

    case 1  :days=0;break;                 //一年中在1月之前有0天

    case 2  :days=31;break;

    case 3  :days=59;break;

    case 4  :days=90;break;

    case 5  :days=120;break;

    case 6  :days=151;break;

case 7  :days=181;break;

case 8  :days=212;break;

    case 9  :days=243;break;

    case 10 :days=273;break;

    case 11 :days=304;break;

case 12 :days=334;break;

    default :printf("输入格式有误: \n");

break;

}

for(i=2010;i<year;i++)                     //输入的月份从2010年开始

{

if(i%400==0||(i%4==0&& i%100!=0))

    days+=366;                               //闰年366天

else

    days+=365;                                //平年365天

}

if((year%4==0&&year%100!=0)||year%400==0)

if(month>2)

sum=days+day+1;

else

sum=days+day;

else

sum=days+day;

printf("sum= %d\n",sum);

j=sum%5;             //求模,1、2、3代表打渔,0,、4代表晒网

switch(j)

{

case 1:printf("今天该打渔\n");break;

case 2:printf("今天该打渔\n");break;

case 3:printf("今天该打渔\n");break;

case 0:printf("今天该晒网\n");break;

case 4:printf("今天该晒网\n");break;

}

return 0;

}


这次的程序设计,总的来说只能算的上是还行,程序基本能达到普通要求,但提高要求远远达不到,遇到很多困难,有的已经解决了,但是还并不完美,程序设计过程中参考了李军民老师主编的<<C/C++语言程序设计同步进阶经典100例与习题指导>>,这本书给予我很大的帮助。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值