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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张小景 中级黑马   /  2016-6-11 21:28  /  1071 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输入一个x 年x月x日 计算这一天是这一年的第多少天?该咋写

11 个回复

倒序浏览
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
柳柳桑 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个方法不错,,,比我那个好多了,,顶...
回复 使用道具 举报
666666666666
回复 使用道具 举报

哦比我的简单多了我用了一个switch语句
回复 使用道具 举报

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

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

彼此彼此,我也是刚刚学,其实你写的比我好,多多交流。
回复 使用道具 举报
董立权 发表于 2016-6-16 14:51
都一样,最后能得到想要的结果就好啦

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

目前来说,我只要能看到结果就很开心啦,算法的优化,需要花时间思考啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马