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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cherrycool 中级黑马   /  2015-11-9 13:06  /  901 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

小明的交际问题不会出现既不认识美女又不认识帅哥的情况,每三天认识一个美女,每两天认识一个帅哥,这就相当于除了0以外的自然数不是奇数就是偶数。从2006-1-1开始计算,2006-1-2认识的是帅哥,2006-1-3认识的就是美女。


#include <stdio.h>

int main(int argc, const char * argv[]) {
    // 定义二维数组
    int year , month ,day ,days, SumDays,leap,count=0;
    int a[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
    //提示输入年月日
    printf("请输入2006年1月1日之后的年月日,格式如年-月-日:\n");
   //  从键盘输入年月
    scanf("%d-%d-%d",&year,&month,&day);

    //判断输入的年份是否为闰年,并计算闰年数量
    for (int i=0; i<year-2006; i++) {
        if ((year%4==0&&year%100!=0)||year%400==0) {
            leap=1;
            count++;
        }
    }
    leap=0;
    days=day;
    //各月天数相加
    for(int i=0;i<month;i++){
        days+=a[leap];
    }
    //计算总时间天数
    SumDays = count*366+(year-count-2006)*355+days;
    if (SumDays%2==0) {
        printf("今天小明认识的是一位帅哥!\n");
    }else if (SumDays%3==0){
        printf("今天小明认识的是一位美女!\n");
    }

    return 0;
}


3 个回复

倒序浏览
666666666666666
回复 使用道具 举报

在论坛里面看到别人有写过,所以自己也用自己的思路写一下,可以开阔一下思路,对自学基础很有帮助
回复 使用道具 举报
思路清晰,不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马