鱼C论坛

 找回密码
 立即注册
查看: 4114|回复: 7

求 -----输入年月日计算是一年中的第几天的代码

[复制链接]
发表于 2011-7-26 09:43:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
      这是小甲鱼留下的作业,我刚开始写了一个,但是发现了有很大的漏洞,一时不知思路在那里,所以,那位师兄上传一下代码来研究一下,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-26 09:45:43 | 显示全部楼层
本帖最后由 weixianlang 于 2011-7-26 09:50 编辑
  1. #include <IOSTREAM.H>

  2. typedef struct
  3. {
  4. int moon;
  5. int year;
  6. int day;
  7. }DATA;

  8. int today(int year,int moon,int day) //计算天数函数
  9. {
  10. int i,days = 0; //定义遍历变量i,和要存储计算结果的变量days
  11. for (i=1; i<=moon; i++) //开始循环,从1月开始知道参数moon月结束
  12. if (i<8 && i != 2) //如果月份是否大与8月且不等于2月
  13. switch (i%2) //计算是否是偶数月
  14. {
  15. case 0: days = days + 30;break; //如果是偶数月则加30天
  16. case 1: days = days + 31;break; //奇数月加31天
  17. }
  18. else if (i >= 8) //如果月份大于8
  19. switch (i%2) //判断奇偶数月份
  20. {
  21. case 0:days += 31;break; //偶数加31天
  22. case 1:days += 30;break; //奇数加30天
  23. }
  24. else //如果是2月份
  25. {
  26. if (year%4 != 0 && year%400 != 0) //如果不是闰年
  27. days += 29; //加29天
  28. else //如果是闰年
  29. days += 28; //加28天
  30. }
  31. days += day; //加上当月已过的天数
  32. return days; //返回最终结果
  33. }

  34. void main()
  35. {
  36. DATA one; //定义一个DATA结构体变量one
  37. int currntday; //定义一个接受结果数值的变量currntday
  38. cout<<"please input The data:\n";
  39. cin>>one.year>>one.moon>>one.day; //接收输入日期
  40. currntday = today(one.year,one.moon,one.day); //调用today函数,传递日期,并用currntday接收返回结果
  41. cout<<one.year<<"/"<<one.moon<<"/"<<one.day<<" 是此年的第"<<currntday<<endl; //输出结果!

  42. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-26 10:00:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-26 10:59:34 | 显示全部楼层
milorguan 发表于 2011-7-26 10:00
不好意思,我还没学到结构,等我学完结构体,我在回来看看这段代码

   不用结构体也可以啊,把结构体里的3个成员直接用3个变量代替即可!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-26 11:24:25 | 显示全部楼层
weixianlang 发表于 2011-7-26 10:59
不用结构体也可以啊,把结构体里的3个成员直接用3个变量代替即可!!

有几行代码是C++的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-26 11:48:21 | 显示全部楼层
milorguan 发表于 2011-7-26 11:24
有几行代码是C++的吧

       是啊,没多少呀,就cout,cin,你改成printf和scanf就可以了!如果你不用C++的话!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-26 12:31:10 | 显示全部楼层
  1. #include <stdio.h>//输入某一年月日,计算为一年的第几天

  2. void main()
  3. {
  4. int year,month,day,t=0,leap;
  5. printf("Please input time--year month day: ");
  6. scanf("%d%d%d",&year,&month,&day);
  7. switch(month)
  8. {
  9. case 12:t=t+30;
  10. case 11:t=t+31;
  11. case 10:t=t+30;
  12. case 9:t=t+31;
  13. case 8:t=t+31;
  14. case 7:t=t+30;
  15. case 6:t=t+31;
  16. case 5:t=t+30;
  17. case 4:t=t+31;
  18. case 3:t=t+28;
  19. case 2:t=t+31;
  20. case 1:t=t;
  21. }
  22. if((0==year%4&&year%100!=0||0==year%400)&&month>2) //判断是否为闰年,且时间所在月份是否同时大于2月,如是则补加1天(leap=1)
  23. {
  24. leap=1;
  25. }
  26. else
  27. {
  28. leap=0;
  29. }
  30. printf("This is NO.%-3d day!\n",t+day+leap);

  31. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-26 12:32:35 | 显示全部楼层
我也是菜鸟一只,不知以上代码那样编行不?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-24 05:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表