A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

输入某年某月某日,判断这一天是这一年的第几天?

6 个回复

倒序浏览
顶!!!!!!!
回复 使用道具 举报
这些问题比较简单,自己研究吧
回复 使用道具 举报
自己写的 觉得有用 就给点分吧 哈哈

  1. //
  2. //  main.c
  3. //  Test_03
  4. //
  5. //  Created by 蒋伟 on 16/5/19.
  6. //  Copyright (c) 2016年 itheima. All rights reserved.
  7. //

  8. #include <stdio.h>

  9. /**
  10. *  返回改年月日是该年的多少天
  11. *
  12. *  @param year  年
  13. *  @param month 月
  14. *  @param day   日
  15. *
  16. *  @return 该年的多少天
  17. */
  18. int days(int year, int month, int day);

  19. int main(int argc, const char * argv[]) {
  20.     int year,month,day;
  21.     printf("请输入年,月,日:");
  22.     scanf("%d%d%d",&year,&month,&day);
  23.     printf("%d年%d月%d日是%d年的%d天!",year,month,day,year,days(year,month,day));
  24.     return 0;
  25. }

  26. /**
  27. *  返回改年月日是该年的多少天
  28. *
  29. *  @param year  年
  30. *  @param month 月
  31. *  @param day   日
  32. *
  33. *  @return 该年的多少天
  34. */
  35. int days(int year, int month, int day){
  36.     int erYue = (year%400 == 0 || (year%4 == 0 && year%100 != 0))?29:28;
  37.     switch(month){
  38.         case 1:
  39.             return day;
  40.         case 2:
  41.             return 31+day;
  42.         case 3:
  43.             return 31+erYue+day;
  44.         case 4:
  45.             return 31*2+erYue+day;
  46.         case 5:
  47.             return 31*2+30+erYue+day;
  48.         case 6:
  49.             return 31*3+30+erYue+day;
  50.         case 7:
  51.             return 31*3+30*2+erYue+day;
  52.         case 8:
  53.             return 31*4+30*2+erYue+day;
  54.         case 9:
  55.             return 31*5+30*2+erYue+day;
  56.         case 10:
  57.             return 31*5+30*3+erYue+day;
  58.         case 11:
  59.             return 31*6+30*3+erYue+day;
  60.         case 12:
  61.             return 31*6+30*4+erYue+day;
  62.         default:
  63.             return 0;
  64.     }
  65. }
复制代码
回复 使用道具 举报
muyan091115 发表于 2016-5-19 09:08
自己写的 觉得有用 就给点分吧 哈哈

赞!
不过给你个建议,是否可以简化代码?尽管逻辑梳理起来很麻烦,并且相对来说很耗内存,不过建议你尝试下。
回复 使用道具 举报
Simpon 发表于 2016-5-19 09:39
赞!
不过给你个建议,是否可以简化代码?尽管逻辑梳理起来很麻烦,并且相对来说很耗内存,不过建议你尝 ...

这样可以吗? 会不会好点

  1. //
  2. //  main.c
  3. //  Test_03
  4. //
  5. //  Created by 蒋伟 on 16/5/19.
  6. //  Copyright (c) 2016年 itheima. All rights reserved.
  7. //

  8. #include <stdio.h>

  9. /**
  10. *  返回改年月日是该年的多少天
  11. *
  12. *  @param year  年
  13. *  @param month 月
  14. *  @param day   日
  15. *
  16. *  @return 该年的多少天
  17. */
  18. int days(int year, int month, int day);

  19. int main(int argc, const char * argv[]) {
  20.     int year,month,day;
  21.     printf("请输入年,月,日:");
  22.     scanf("%d%d%d",&year,&month,&day);
  23.     printf("%d年%d月%d日是%d年的%d天!",year,month,day,year,days(year,month,day));
  24.     return 0;
  25. }

  26. /**
  27. *  返回改年月日是该年的多少天
  28. *
  29. *  @param year  年
  30. *  @param month 月
  31. *  @param day   日
  32. *
  33. *  @return 该年的多少天
  34. */
  35. int days(int year, int month, int day){
  36.     int erYue = (year%400 == 0 || (year%4 == 0 && year%100 != 0))?29:28;
  37.     int date[] = {31,erYue,31,30,31,30,31,31,30,31,30,31};
  38.     int sum = 0;
  39.     for(int i = 0; i< month-1; i++){
  40.         sum += date[i];
  41.     }
  42.     return sum+day;
  43. }
复制代码
回复 使用道具 举报
Simpon 中级黑马 2016-5-20 11:47:44
7#
muyan091115 发表于 2016-5-19 23:59
这样可以吗? 会不会好点

我其实还想看你能怎么写 哈哈哈 已经很好了 加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马