黑马程序员技术交流社区
标题:
求思路
[打印本页]
作者:
canhotboy
时间:
2015-4-20 19:36
标题:
求思路
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)(C语言)
求思路。。。
作者:
丶小千
时间:
2015-4-20 19:51
你需要算出从2006年1月1日到指定时间的天数,这个很麻烦,算完年的算月的最后算日的,都是用%做判断条件的
作者:
傲弛天下
时间:
2015-4-20 21:55
第一步,定义一个函数判断是不是闰年;第二步,计算到2006年经过了多少天;第三步,用天数分别整除2和3.就是第二步难了点
作者:
lvzhehappy
时间:
2015-4-20 22:35
这个没有你想象中的这么难,因为2006.1.1就是一个最小值了,你输入的值,年份肯定不小于2006,月份也肯定小于1,日期也肯定不小于1.年份直接相减算出相差y年,月份直接想减算出相差m月,然后日期直接想减算出相差d天,在这相差的年份中遍历出有多少闰年,计数count次,在相差的月份中算出有多少个31天的大月,计数为t1,若月份跨度中出现2月,根据闰年情况减去2或者1,计数为t2,则计算的天数为:
y*365+m*30+d+count+t1-t2
作者:
lvzhehappy
时间:
2015-4-20 22:37
闰年判断方法
int isLeapYear(int year) //是否是闰年
{
if((year%100)==0)
{
if((year%4)==0)
{
return 1;
}
return 0;
}
else
{
if((year%4)==0)
{
return 1;
}
return 0;
}
}
作者:
canhotboy
时间:
2015-4-21 09:07
:handshake
作者:
itheima_llt
时间:
2015-4-21 15:11
这么好的帖子不顶就太对不起楼主了
作者:
itheima_llt
时间:
2015-4-21 20:44
我喜欢,请大家鼓掌支持,谢谢
作者:
itheima_llt
时间:
2015-4-21 23:59
谢谢楼主,好久没看到这么好的贴了
作者:
bibabo88
时间:
2015-4-22 00:05
木有思路
作者:
wuwuwu
时间:
2015-4-22 00:26
明眼一看就想到要算天数,难就难在怎么确定多少天吧,常识也有,怎么样确实是不是闰年什么的,其实把步骤以划分感觉就不是那么难了
作者:
canhotboy
时间:
2015-4-22 20:10
:handshake
作者:
owlwgmt7
时间:
2015-4-22 20:20
一看到这种题果断懵了
作者:
wwl0517
时间:
2015-5-15 09:48
这个题超赞
作者:
小小黑马很成器
时间:
2015-5-15 10:05
:victory::victory::victory::victory::victory::victory::victory::victory:
作者:
卖报的小画家
时间:
2015-5-15 11:24
[ 本帖最后由 卖报的小画家 于 2015-5-15 11:36 编辑 ]\n\n#include<stdio.h>
int leap(int a)
{
if(a%4==0&&a%100!=0||a%400==0) //判断闰年条件
return 1;
return 0;
}
int number(int year,int m,int d) //计算输入日期距离2006.1.1共有多少天
{
int sum=0,i,j,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
if(leap(year)==1)
for(i=0; i<m-1; i++)
sum+=b[i];
else
for(i=0; i<m-1; i++)
sum+=a[i];
for(j=2006; j<year;j++)
if(leap(j)==1)
sum+=366;
else
sum+=365;
sum+=d;
return sum;
}
void main()
{
int year,month,day,n;
printf("请输入正确年月日\n");
scanf("%d%d%d", &year,&month,&day);
n=number(year,month,day);
if((n%5)<4 && (n%5)>0)
printf("%d:%d:%d 帅哥\n", year,month,day);
else
printf("%d:%d:%d 美女\n", year,month,day);
}
作者:
zhangshuai
时间:
2015-5-23 06:57
卖报的小画家 发表于 2015-5-15 11:24
[ 本帖最后由 卖报的小画家 于 2015-5-15 11:36 编辑 ]\n\n#include
int leap(int a)
为啥要对 5求余,而不是3,或者2.
作者:
hi虚无缥缈
时间:
2015-5-23 21:52
看到这类问题头就有点大
作者:
fixer
时间:
2015-5-24 00:15
基本思路应该是%取余判断吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2