黑马程序员技术交流社区

标题: 基础测试之小明的交际问题 [打印本页]

作者: cherrycool    时间: 2015-11-9 13:06
标题: 基础测试之小明的交际问题
小明从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;
}



作者: arhui    时间: 2015-11-9 15:53
666666666666666
作者: cherrycool    时间: 2015-11-25 08:54
arhui 发表于 2015-11-9 15:53
666666666666666

在论坛里面看到别人有写过,所以自己也用自己的思路写一下,可以开阔一下思路,对自学基础很有帮助
作者: lujia1010    时间: 2015-11-25 10:13
思路清晰,不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2