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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

提示: 该帖被管理员或版主屏蔽
回复 使用道具 举报
都是大神啊
回复 使用道具 举报
学习学习!
回复 使用道具 举报
lcx 中级黑马 2015-5-14 19:12:02
24#
cui0wei0 发表于 2015-5-10 22:25
这个是数学问题又不是编程问题. 我只是考虑一种算法可以减少计算量. 你算出总天数再%5, 365%5 = 0;
你找出 ...

哪里来的天才,代码太美观了。闰年个数表达发明出了新的花样,365%5=0是怎样一个高大上的编程思想,它把常量赋值给一个常量运算这种极具创造意义的表达式,到底有多天才才能发明出如此不被编程思想束缚的表达式?,自然人沟通思想也是非同凡响,我真不知道你这样的大神来这个论坛干嘛的?假装yy下感觉自己只是个技术人员?
在编程思想和自然沟通表达上让我见识了特色思维后又开始站在地域歧视高地上藐视众生?然后爆出我认识谁谁谁很牛叉,你这种谁谁谁怎么怎么虐你,典型的高富帅。
我非常好奇什么样的技术总监能和你这样的大神交流思想,这得多大的思维领悟能力。并且非常好奇从你说的这几句话如果是个未成年请好好学习,踏踏实实的做人。
回复 使用道具 举报
闰年计算的地方没看懂,继续等大神
回复 使用道具 举报
本帖最后由 cui0wei0 于 2015-5-15 01:22 编辑
lcx 发表于 2015-5-14 19:12
哪里来的天才,代码太美观了。闰年个数表达发明出了新的花样,365%5=0是怎样一个高大上的编程思想,它把 ...

我是说平年是365天就不用算了, 闰年算一天就好了, 一个月31天可以算作1天, 30天就不用算了. 你连这么简单的想法都理解错, 你干嘛还要敲代码? 365%5=0有错么? 按你看来1+1=2是不是也是错的? 学两天敲代码连小学数学都不会了?
你上班开会会跟老板计较老板的思维导图里少打个分号么? 你不是找抽呢.
天天把精力放在旁门左道上, 不学点正经的. 就你这样顶多糊弄糊弄急需招人的小作坊吧.
去看看 http://bbs.itheima.com/thread-195761-1-1.html, 看看人家都怎么解决问题的, 别老是固步自封了

回复 使用道具 举报
楼主考虑问题过于简单啊,比方说没有对输入的日期的正确行进行判断,比如偶数月份是是只有30天的,你的程序照样可以输入2006-4-31这个日期,这个不是对后面的整个结果都会有很大的影响,另外,建议使用一个结构体来表示日期
struct Date
{
    int year;
    int mouth;
    int day;
};
回复 使用道具 举报
#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) // 闰年的情况
    {
        // 如果是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天
        {
            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);
            }
            
        }
    }
    //
    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};
    // 判断是否为闰年
    if ((year % 4 == 0 && year % 100 == 0)|| year % 400 == 0)
    {
        // 判断是闰年,所以把数组中的28天改为29天
        m[2] = 29;
        // 计算年单位相差的天数
        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[i];
        }
        // 返回总的天数
        return day1+day2+day;
    }
    else // 不是闰年的情况
    {
        year = (year - 2006) * 365;
        for (int i = 0 ; i < mouth; i++)
        {
            day2 = day2 + m[i];
        }
        return day1+day2+day;
        
    }
   
}
回复 使用道具 举报
我表示看完这帖子后,我对我的智商和前景表示深深的担忧。这还是基础测试题而已。
回复 使用道具 举报
这个题目其实有一些问题
回复 使用道具 举报
lcx 中级黑马 2015-5-16 17:44:08
31#
cui0wei0 发表于 2015-5-15 01:11
我是说平年是365天就不用算了, 闰年算一天就好了, 一个月31天可以算作1天, 30天就不用算了. 你连这么简单 ...

因为1+1=2,所以你是对的,我是错的。
因为365%5==0所以你是对的我是错的。
因为老板的思维导图里少打了个分好,所以你是对的我是错的。
因为天天把精力放在旁门左道上,所以你是对的我是错的。
上面的都说对了,就最后句说错了。
就我这样的糊弄不了招人的小作坊,就只能糊弄糊弄装大神的水货。
回复 使用道具 举报
lcx 发表于 2015-5-16 17:44
因为1+1=2,所以你是对的,我是错的。
因为365%5==0所以你是对的我是错的。
因为老板的思维导图里少打了 ...

一般只有那种懂个判断闰年就觉得自己了不起, 动不动就说不会就让我来教你的水货才喜欢装大神.
我只是喜欢不懂就会去问大神, 所以人家愿意告诉我罢了.
回复 使用道具 举报
为了黑马币呀。。。。。
回复 使用道具 举报
lcx 中级黑马 2015-5-16 22:49:25
34#
本帖最后由 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 23:02:50
35#
本帖最后由 lcx 于 2015-5-16 23:31 编辑
cui0wei0 发表于 2015-5-16 21:24
一般只有那种懂个判断闰年就觉得自己了不起, 动不动就说不会就让我来教你的水货才喜欢装大神.
我只是喜欢 ...

我装大神是为了打水货的脸,告诉大家,有一群水货根本就不会敲代码,只会装逼,别被吓着了。
回复 使用道具 举报
lcx 发表于 2015-5-16 23:02
我装大神是为了打水货的脸,告诉大家,有一群水货根本就不会敲代码,只会装逼,别被吓着了。
另一层就是 ...

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

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

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

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

那你就去传承你的知识吧. 天天嚼别人剩饭一个月也就只能挣1万了. 希望你在黑马能多涨涨见识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马