黑马程序员技术交流社区

标题: 求答案 [打印本页]

作者: 张小景    时间: 2016-6-11 21:28
标题: 求答案
输入一个x 年x月x日 计算这一天是这一年的第多少天?该咋写
作者: 董立权    时间: 2016-6-11 21:43
  1. #include <stdio.h>
  2. int main(){
  3.     int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
  4.     printf("请输入要查询的年月日:(格式:2016-6-9)\n");
  5.     int year,month,day;
  6.     int dayOfYear=0;
  7.     scanf("%d-%d-%d",&year,&month,&day);
  8.     //判断是否是闰年
  9.     if((year%4 ==0 && year%100 !=0) || year%400 == 0){
  10.         arr[1] = 29;
  11.     }
  12.     for (int i = 0 ; i < month-1; i++) {
  13.         dayOfYear += arr[i];
  14.     }
  15.     dayOfYear += day;
  16.     printf("%d年%d月%d日是一年中的第%d天\n",year,month,day,dayOfYear);
  17.     return 0;
  18. }
复制代码

作者: vivi342863    时间: 2016-6-11 22:23
这个方法不错,,,比我那个好多了,,顶...
作者: dongkuan    时间: 2016-6-11 22:29
666666666666
作者: 张小景    时间: 2016-6-15 22:31
董立权 发表于 2016-6-11 21:43

哦比我的简单多了我用了一个switch语句
作者: 1871037345    时间: 2016-6-15 22:46
董立权 发表于 2016-6-11 21:43

亲,万一我要一不留神输入的是  2016-12-32   结果会怎么样     或者月份也超过了
作者: 董立权    时间: 2016-6-16 14:51
本帖最后由 董立权 于 2016-6-16 14:52 编辑
张小景 发表于 2016-6-15 22:31
哦比我的简单多了我用了一个switch语句
都一样,最后能得到想要的结果就好啦
作者: 董立权    时间: 2016-6-16 14:56
1871037345 发表于 2016-6-15 22:46
亲,万一我要一不留神输入的是  2016-12-32   结果会怎么样     或者月份也超过了 ...

可以在输入日期后面加上判断啊,判断年月日是否在正确的范围内,我是初学者,写程序的时候没有想的那么全面,有很多考虑不周的地方,请多多指正啊
作者: 史蒂芬库里    时间: 2016-6-16 20:46
我提供思路给你, 建议用switch case 倒序排列12,11,10....1.  用if关键字2月是28天,如果能被4整除并且不能被100整除,或者能整除400 2月就加一天. 基本就差不多了. 比如2016年3月2 日.首先多出来的2天+上1月31天加上2月28+1天就是结果.
作者: 1871037345    时间: 2016-6-17 11:43
董立权 发表于 2016-6-16 14:56
可以在输入日期后面加上判断啊,判断年月日是否在正确的范围内,我是初学者,写程序的时候没有想的那么全 ...

彼此彼此,我也是刚刚学,其实你写的比我好,多多交流。

作者: 1871037345    时间: 2016-6-17 11:48
董立权 发表于 2016-6-16 14:51
都一样,最后能得到想要的结果就好啦

这个真心不一样,当有很多的时候,实现的时间就很重要,用户体验感觉就不一样,我想这个大家肯定都深有体会,虽然我们现在还不怎么样,但是要有这种思想
作者: 董立权    时间: 2016-6-17 15:32
1871037345 发表于 2016-6-17 11:48
这个真心不一样,当有很多的时候,实现的时间就很重要,用户体验感觉就不一样,我想这个大家肯定都深有体 ...

目前来说,我只要能看到结果就很开心啦,算法的优化,需要花时间思考啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2