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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© peide0427 中级黑马   /  2015-11-7 23:03  /  1183 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)
// 还是有BUG的,就是当用户输入2017,2,29时候不会抱错。。。大家可以交流一下

#include <stdio.h>

int runOrPing(int Y);
int dayOfYear(int x);
int dayOfMonth(int x, int y);
void result(int sumDay);

int main(){

    printf("请输入2006-1-1之后的任意一天,年、月、日以逗号隔开,形式如:“2014,3,23”\n");//提示用户输入日期
    int x,y,z;
    scanf("%d,%d,%d",&x,&y,&z);//接受数据信息
    if (x<2006||y>12||y<1||z>31) {
        printf("请输入有效日期");
    }else {

        int daySum=dayOfYear(x)+dayOfMonth(x, y)+z;//调用函数
        result(daySum);
    }

    return 0;
}

int runOrPing(int Y){

    if ((Y%400==0)||((Y%4==0)&&(Y%100!=0)))

        {
            return 1;
        }else  return 0;//定义函数判断是否是闰年,如果是,返回值1;

}

int dayOfYear(int x){    //定义函数计算年份部分的日期

    int count=0;
    for(int i=2006;i<=x;i++)
    {
        if(runOrPing(i)){
            count++;
    }

        }

    return (x-count)*28+count*29+(x-2006)*337;

    }

int dayOfMonth(int x, int y)  //定义函数计算月部分的日期

        {
            char runMonth[]={31,29,31,30,31,30,31,31,30,31,30,31};
            char pingMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
            int sum=0;
            if(runOrPing(x)) {

                for (int i=0;i<y-1;i++){
                    sum=sum+runMonth;

                }

            }else{
                for (int i=0;i<y-1;i++){
                    sum=sum+pingMonth;
}
            }

            return sum;
        }
void result(int sumDay){// 判断最后的结果。
            if(sumDay%5<=3)
            {
                printf("今天小明见到的是美女!\n");
            }else
                printf("今天小明见到的是帅哥!\n");
        }



5 个回复

正序浏览
呵呵挺有意思的啊
回复 使用道具 举报
这题目有点意思
回复 使用道具 举报
感觉吊吊的
回复 使用道具 举报
他还有谁有没认识的情况呢
回复 使用道具 举报
%5<3,那等于0呢,是帅哥还是美女
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马