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

小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)


#include<stdio.h>




int year_sumday(int y)
{
    int year_day;//按年算天数,但不包括当前年天数,当前年天数由月天数和日天数计算出
   
   
    if(y-2006>2)//从2008年才出现第一个润年
    {
        year_day = (y-2008)*365+(y-2008)/4;//按每年36天再加润年天数
    }
    else year_day = (y-2006)*365;
   
    return year_day;
}

int month_sumday(int m)//第一个参数为年,第二个参数为月
{
    int month_day = 0;////按月算天数
    int mon[12] = {31,28,31,30,31,30,31,31,30,31,30,31};//每月天数
    int i = 0;
   
   
    for (i=0; i<m-1; i++) //计算月天数
        {
        month_day = month_day+mon;
    }
   
    if(m>2)month_day=month_day+1;//计算当前日期时候包含润日
   
    return month_day;
}


int main()
{
    int year;//
    int month;//
    int day;//
    int sumday = 0;//
   
    printf("请输入当前年份:");
    scanf("%d",&year);
    printf("请输入当前月份:");
    scanf("%d",&month);
    printf("请输入当前日期:");
    scanf("%d",&day);
   
    int year_day = year_sumday(year);//年天数
    int month_day =month_sumday(month);//月天数
   
    sumday = year_day+month_day+day;//总天数
   
    if(sumday%3 ==0)
        {
                if(sumday%2 ==0)printf("这一天既认识了美女又认识了帅哥\n");
                else printf("这一天只认识了美女\n");
        }
    else if(sumday%2 ==0)printf("这一天只认识了帅哥\n");
    else printf("这一天既没认识美女也没认识\n");
   
    return 0;
   
}

本帖被以下淘专辑推荐:

49 个回复

正序浏览
看别人的代码总是能看懂  自己上手估计就不行了,学习了
回复 使用道具 举报
学习学习!!!!!
回复 使用道具 举报
lcx 发表于 2015-5-17 15:02
毕竟习主席还是我主席。你说得你这么自我感觉良好结果是个租房子还房贷的高富帅。
钱这个东西,层次不同的 ...

那些没失败过还不断尝试成功的人, 早就把你甩的没影了. 我在向这种人看齐. 你把我定义为爱装逼的人. 你看得见也好不愿意看也罢. 你愿意和要饭的比幸福没人会拦你. 因为你也就看得见要饭的是怎么生活的.
回复 使用道具 举报
lcx 中级黑马 2015-5-17 15:02:44
48#
本帖最后由 lcx 于 2015-5-17 15:49 编辑
cui0wei0 发表于 2015-5-17 13:17
哦 在TATA的微软给他4万他觉得太低了不想去. 在水利部的已经在三环买房子了. 在百度的原来挣4万, 现在辞职 ...

毕竟习主席还是我主席。你说得你这么自我感觉良好结果是个租房子还房贷的高富帅。
钱这个东西,层次不同的人理解就不一样。有些人生下来有钱没地用,沉迷一些心理变态的旁门左道。有些人觉得钱是实现自己可能性的一种工具。人生就是不断享受失败成功失败成功的一个过程,最后失败少了,成功多了,活着就无聊了。生活应该慢慢品味,我前天没饭吃,饿得慌,昨天吃了个馒头就能感觉很幸福,今天吃了包子很开心,明天吃了肯德基VeryGood,可是如果昨天就吃了满汉全席明天吃肯德基还会感觉幸福吗?有些人的成功就是车房女人。当然还有些人就没失败过,因为他就没想过要去努力尝试寻找成功。他就喜欢看着别人失败找乐子。我还真没见过世面,所以才能节约时间和你这样的天才扯半天。
回复 使用道具 举报
lcx 中级黑马 2015-5-17 14:41:20
47#
星空眼泪 发表于 2015-5-17 12:57
兄弟,我只能说你想多了,这个平台本来就是大家交流学习心得的,你不许人家说自己的意见,那还有什么意思 ...

敢于如此自我批评的态度让人敬佩,是我太敏感了,我的错,有机会互相学习。
回复 使用道具 举报
本帖最后由 cui0wei0 于 2015-5-17 13:20 编辑
lcx 发表于 2015-5-17 03:33
天才的同学我相信也是天才,毕竟互相吸引法则。
乱认大神脸被打肿了又开始意淫自己是万人迷了?
说说你同 ...

哦 在TATA的微软给他4万他觉得太低了不想去. 在水利部的已经在三环买房子了. 在百度的原来挣4万, 现在辞职单干了. 我挣得比他们少多了, 我现在住的房子房租4500. 我的车虽然烂, 但好歹也是京牌的888. 我们天天觉得钱不够花, 你毕业挣1万就幸福感不会再增加了. 你也不算算税后你到手多少钱.
我以前天天出差见过各种各样的人, 你这样的典型没见过世面. 我觉得想尽黑马的都是很努力的, 不管他是否智力有缺陷. 那你努力不努力关我屁事. 你也不会帮我还房贷.
回复 使用道具 举报
lcx 发表于 2015-5-16 22:49
楼主善于提问的态度是值得肯定的,你如果是要打我脸直接来,你的程序虽然做了验证,但是稳定性能不足,直 ...

兄弟,我只能说你想多了,这个平台本来就是大家交流学习心得的,你不许人家说自己的意见,那还有什么意思。我也很接受你的建议,第一个:多了一个点,肯定是我自己粗心,第二个:输-1的情况,因为我已经提示输入的格式,目前我的水平也仅仅只能是对按要求的输入做判断,能力还不够。第三个:很好的建议的,因为我真的没有想到7.8月份都是31天的情况,第四个,判断闰年的方法我已经知道了,只是这个题目是自己做的,所以就没有改回来。第五个,这个题目的我当时的第一想法是每三天一天认识一个一个美女,然后再过两天认识一个帅哥,一个一个帅哥,对题目的误解。第六个,下标。应该是m[2],不是m[1],因为如果是一月份那么增加的是0天,二月份增加的事整个一个月的31天,3月份如果是闰年的才增加的事一个月和二月份的和60天,按照下标的位置看,也应该是m[2]。第7个,又错了,应该是给day1不是给year.多多交流共同进步
回复 使用道具 举报
lcx 中级黑马 2015-5-17 03:57:09
44#
本帖最后由 lcx 于 2015-5-17 04:54 编辑
cui0wei0 发表于 2015-5-17 02:09
那你就去传承你的知识吧. 天天嚼别人剩饭一个月也就只能挣1万了. 希望你在黑马能多涨涨见识 ...

顺便说下,你继续装逼下去的结果就是帮我了解护短的底线在哪?到底是心理变态重要还是端稳自己饭碗重要。
回复 使用道具 举报
lcx 中级黑马 2015-5-17 03:36:26
43#
本帖最后由 lcx 于 2015-5-17 03:54 编辑
cui0wei0 发表于 2015-5-17 02:09
那你就去传承你的知识吧. 天天嚼别人剩饭一个月也就只能挣1万了. 希望你在黑马能多涨涨见识 ...

还嚼别人剩饭,到处放黑屁,恶心人。装逼一时爽小心仇恨拉太多你兜不住Ok?真是应了可怜之人必有可恨之处。
回复 使用道具 举报
lcx 中级黑马 2015-5-17 03:33:02
42#
本帖最后由 lcx 于 2015-5-17 04:55 编辑
cui0wei0 发表于 2015-5-17 00:01
对你而言都是人家, 对我而言都是我们. 人家当技术总监 ,那是我们同学. 你进一个拼智商的行业, 智商低被人 ...

天才的同学我相信也是天才,毕竟互相吸引法则。
乱认大神脸被打肿了又开始意淫自己是万人迷了?
说说你同学在哪高就月薪多少吧。顺便问下,同学是什么意思?你强行装逼到处放黑屁他无条件给你擦屁股?
你看你给我扣得什么帽子,我假定别人都不努力的出处是?我只是抽水货的脸而已。反而是你因为自卑一直假定我很努力。
后面因为1+1=2总结的双低神逻辑是怎么总结来的?因为害?

回复 使用道具 举报
lcx 发表于 2015-5-17 00:31
人有两种,有一种可以救,有一种不可救。
我突然有一种感觉,觉得你很可悲,不装逼,什么都没有,只能通过 ...

那你就去传承你的知识吧. 天天嚼别人剩饭一个月也就只能挣1万了. 希望你在黑马能多涨涨见识
回复 使用道具 举报
lcx 中级黑马 2015-5-17 00:31:03
40#
本帖最后由 lcx 于 2015-5-17 00:36 编辑
cui0wei0 发表于 2015-5-16 23:31
我上大学最大的感受就是智商是硬伤, 当你闷头苦学的时候自以为自己很努力, 半天做完一道题, 却不知别人半 ...

人有两种,有一种可以救,有一种不可救。
我突然有一种感觉,觉得你很可悲,不装逼,什么都没有,只能通过装逼活下去。
也许这是一个装逼的时代,很多人上了当。意识不到成功是99%的努力加1%的灵感,其中不缺乏一些奸诈可鄙的小人故意隐藏自己的努力神话自己的天赋。
说了这么多废话,多装一下逼。
知识就是一个积累,基础积累多了,学习起来就快。一个现代文盲你叫他用电脑上网,登陆一个qq他能问你20个问题,但是你让他学一种新的赌术,他能1个小时就掌握了。这就是基础的积累。因为他没有电脑基础,却有很好的赌博基础。
学习也是一样。记得哈弗气质课讲过当你意识到你晚了的时候恰恰正是最佳时机。基督山伯爵复仇记中,被关在牢笼中的伯爵只用了2年就习得了神父毕生的知识。在黑马训练营中,黑马学员经过4个月认真的学习,就能成为高薪一族,成为所谓的月薪超过一万幸福感就不会增加的存在。知识的传承和领悟是一个非常短暂的过程。问题是在这个过程中你有没有把心思用在思考别人都是天才,我是个智商有缺陷的人这样的自我质疑中。当然不排除这个社会有一股巨大的力量限制着做人有底线的人,那么为了理想就看自己有没有胆子做一个没有底线的人。
回复 使用道具 举报
lcx 发表于 2015-5-16 23:51
什么都是人家的,和你有什么半毛钱关系呢?和你不会敲代码被人质疑有什么关系呢?天天意淫别人都是loser ...

对你而言都是人家, 对我而言都是我们. 人家当技术总监 ,那是我们同学. 你进一个拼智商的行业, 智商低被人看不起很正常. 你假定别人都不努力, 那是你情商也低. 你双低还怎么在社会上混啊?
回复 使用道具 举报
lcx 中级黑马 2015-5-16 23:51:20
38#
cui0wei0 发表于 2015-5-16 23:31
我上大学最大的感受就是智商是硬伤, 当你闷头苦学的时候自以为自己很努力, 半天做完一道题, 却不知别人半 ...

什么都是人家的,和你有什么半毛钱关系呢?和你不会敲代码被人质疑有什么关系呢?天天意淫别人都是loser用不着自己努力,有这么多loser垫背装装逼就满足了?就一个智商是硬伤的人眼里的天才能高到哪里去?你最大的优势也就是吃饱了没事干可以到处放屁恶心人,有点理想的人都在忙自己的事,没空理你。
跟你这种天才很难交流,反正都是别人怎么怎么强,你看不惯的人怎么怎么弱,你这样的天才越多,说明官僚主义越严重,水份就越多,佐证了我的可能性越大。
回复 使用道具 举报
lcx 发表于 2015-5-16 23:02
我装大神是为了打水货的脸,告诉大家,有一群水货根本就不会敲代码,只会装逼,别被吓着了。
另一层就是 ...

我上大学最大的感受就是智商是硬伤, 当你闷头苦学的时候自以为自己很努力, 半天做完一道题, 却不知别人半小时已经用三种方法解出来了. 人家把你的保送北大的名额抢了以后, 嫌弃北大太low, 又去美国了. 你连北航都没考上. 当然我说的这些可能离你太遥远了.
确实有人没有你努力, 但是人家智力上碾压你. 我们班那个14岁上大学的小孩天天玩游戏, 我不会的题问他他全都做的很漂亮. 更可怕的是我们班人大附中那家伙在北京高考考671的, 天天不见人, 考什么都是满分.
你跟人比学习比了18年都没比过, 现在觉得多敲敲代码就能脚踩清华, 腚坐北大了? 人家半天所有的题都敲一边, 你三道题没做完. 人家敲代码比你漂亮百倍, 不给你看你说人家水, 给你看你还说人家装逼.  你进黑马是为赚钱养家糊口, 人家在国企不用上班腻得慌, 出来找找乐子, 还比你强. 你不睡觉都追不上人家, 还做梦想打谁的脸?
回复 使用道具 举报
lcx 中级黑马 2015-5-16 23:02:50
36#
本帖最后由 lcx 于 2015-5-16 23:31 编辑
cui0wei0 发表于 2015-5-16 21:24
一般只有那种懂个判断闰年就觉得自己了不起, 动不动就说不会就让我来教你的水货才喜欢装大神.
我只是喜欢 ...

我装大神是为了打水货的脸,告诉大家,有一群水货根本就不会敲代码,只会装逼,别被吓着了。
回复 使用道具 举报
lcx 中级黑马 2015-5-16 22:49:25
35#
本帖最后由 lcx 于 2015-5-16 23:28 编辑
星空眼泪 发表于 2015-5-15 11:25
#include
int dayCount(int year,int mouth, int day);
// 定义一个日期的结构体

楼主善于提问的态度是值得肯定的,你如果是要打我脸直接来,你的程序虽然做了验证,但是稳定性能不足,直接写一个1-就内存错误,直接死循环。算法比楼主还差了一点,具体错误就在代码注释了,有问题就问。

#include <stdio..h>                        // 多了个点
int dayCount(int year,int mouth, int day);
// 定义一个日期的结构体
struct Date
{
    int year;
    int mouth;
    int day;
};

int main()
{
    struct Date d;
    printf("请输入日期(输入格式:2006-1-1):");
    scanf("%d-%d-%d", &d.year, &d.mouth, &d.day);
    // 根据需求,必须输入2006年以后的日期
    while (d.year < 2006)
    {
        printf("请输入正确的年份(2006年以后的年份):");
        scanf("%d", &d.year);
    }
    // 对月份进行限制
    while (d.mouth < 1 || d.mouth > 12)
    {
        printf("请输入正确的月份(范围1-12):");
        scanf("%d", &d.mouth);
    }
    // 判断是否为闰年
    if (d.year % 4 == 0 || d.year % 400 == 0) // 闰年的情况  差一个&&year%100!= 0;
    {
        // 如果是2月份那么天数,不能超过29       ,号位置放错
        if (d.mouth == 2)
        {
            while (d.day < 1 || d.day > 29)
            {
                printf("请输入正确的日(范围1-29):");
                scanf("%d", &d.day);
            }
            
        }
        else if (d.mouth % 2 == 0) //如果是偶数月份,那么天数不应该超过30天  7月是31,8月也是31,逻辑错误。
        {
            while (d.day < 1 || d.day > 30)
            {
                printf("请输入正确的日(范围1-30):");
                scanf("%d", &d.day);
            }
            
        }
        else // 奇数月份天数不应该超过31天
        {
            while (d.day < 1 || d.day > 31)
            {
                printf("请输入正确的日(范围1-31):");
                scanf("%d", &d.day);
            }
            
        }
    }
    else // 不是闰年的情况
    {
        if (d.mouth == 2) // 不是闰年,那么2月份天数不超过28天
        {
            while (d.day < 1 || d.day > 28)
            {
                printf("请输入正确的日(范围1-28):");
                scanf("%d", &d.day);
            }
            
        }else if (d.mouth % 2 == 0)
        {
            while (d.day < 1 || d.day > 30)
            {
                printf("请输入正确的日(范围1-30):");
                scanf("%d", &d.day);
            }
            
        }else
        {
            while (d.day < 1 || d.day > 31)
            {
                printf("请输入正确的日(范围1-31):");
                scanf("%d", &d.day);
            }
            
        }
    }
    //这是什么算法?如果过了7、9、11天也认识美女?
    int n = dayCount(d.year, d.mouth, d.day) % 5;
   
    if (n == 1 || n == 2 || n == 3)
    {
        printf("%d-%d-%d认识的是美女", d.year, d.mouth, d.day);
        
    }else if (n == 4 || n == 0)
    {
        
        printf("%d-%d-%d认识的是帅哥", d.year, d.mouth, d.day);
        
    }
   
    return 0;
}
int dayCount(int year,int mouth, int day)
{
    // 定义两个变量,记录年单位和月单位与2006年1月1日之间相差的天数
    int day1 = 0,day2 =0;
    // 定义一个数组,数组存放的数据是按照月份大小需要增加的天数,例如1月份需要增加0天
    // 2月份需要累积再加31,3月份就加59天(不是闰年)
    int m[12] = {0, 31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31}; //12月不需要参与运算
    // 判断是否为闰年
    if ((year % 4 == 0 && year % 100 == 0)|| year % 400 == 0)  //逻辑错误,!=100而不是==100。
    {
        // 判断是闰年,所以把数组中的28天改为29天
        m[2] = 29;              //下标从0开始,应该写m[1]
        // 计算年单位相差的天数
        day1 = (year - 2006) * 366;
        // 计算月单位相差的天数,如果是1月份那么day2等于m[0]=0,
        // 如果是2月份,那么day2等于m[1]+m[0] = 31.
        for (int i = 0 ; i < mouth; i++)
        {
            day2 = day2 + m;
        }
        // 返回总的天数           只判断了一次是否是闰年,其他的闰年被无视了。
        return day1+day2+day;
    }
    else // 不是闰年的情况
    {
        year = (year - 2006) * 365;  //day1写成year 直接导致返回值day1为0
        for (int i = 0 ; i < mouth; i++)
        {
            day2 = day2 + m;
        }
        return day1+day2+day;  //day1=0;
        
    }
   
}


回复 使用道具 举报
为了黑马币呀。。。。。
回复 使用道具 举报
lcx 发表于 2015-5-16 17:44
因为1+1=2,所以你是对的,我是错的。
因为365%5==0所以你是对的我是错的。
因为老板的思维导图里少打了 ...

一般只有那种懂个判断闰年就觉得自己了不起, 动不动就说不会就让我来教你的水货才喜欢装大神.
我只是喜欢不懂就会去问大神, 所以人家愿意告诉我罢了.
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马