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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/**
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)(C语言)
*/
#include<stdio.h>
//计算公元2006年到输入年份有多少个闰年,返回闰年个数
int getLeapyear(int year)
{
        int leap,leap1;
        leap = year/4 - 3*year/400;
        leap1= 2006/4 - 3*2006/400;
        return (leap-leap1);
}
//获取2006年1月1日到输入月份的天数
int getDayNum(int year,int month,int day)
{
        int months[]={31,28,31,30,31,30,31,31,30,31,30,31};
        int leapMonths[]={31,29,31,30,31,30,31,31,30,31,30,31};
        int days = 0;
        int num;                        //存储过去整年内的天数
        int years;
        int leap = getLeapyear(year);        //获取经过几个闰年
        years = year - 2006;                //经过几年
        if(year%4 == 0 && year%100 != 0 || year%400 == 0)
        {
                num = 365 * years + leap -1;//过去整年的天数
                for(int i = 0;i < month - 1;i++)
                {
                        days += leapMonths[i];//累加过去正月的天数
                }
                days = num + days + day;//总天数
        }
        else
        {
                num = 365 * year + leap;//过去整年的天数
                for(int i = 0;i < month - 1;i++)
                {
                        days += months[i];//累加过去正月的天数
                }
                days = num + days + day;//总天数
        }
        return days;
}
void getFriendNum(int days)
{
        int grilFriend = days / 3;        //女性朋友个数
        int boyFriend = days /2;        //男性朋友个数
        printf("female friends Number is %d\n");
        printf("male friends Number is %d\n");
}
int main()
{
        int year,month,day;
        //输入年份
        printf("enter year,the year >= 2006: ");
        scanf("%d",&year);
        while(year < 2006)
        {
                printf("输入错误,年份不应小于2006,请重新输入\n");
                scanf("%d",&year);
        }
        //输入月份
        printf("enter montth,the month > 0 and month <= 12: ");
        scanf("%d",&month);
        while(month <= 0 ||month > 12)
        {
                printf("输入错误,月份不应大于0小于13,请重新输入\n");
                scanf("%d",&month);
        }
        //输入日期并判断
        if(month == 2 && year%4 == 0 && year%100 != 0 || year%400 == 0)
        {
                printf("本月为闰年2月份,请输入天数,天数应 <= 29: ");
                scanf("%d",&day);
                while(day>29)
                {
                        printf("输入错误,天数应<=29,请清新输入\n");
                        scanf("%d",&day);
                }
        }
        else if(month == 2)
        {
                printf("本月为平年2月份,请输入天数,天数应 <= 28: ");
                scanf("%d",&day);
                while(day>28)
                {
                        printf("输入错误,天数应<=28,请清新输入\n");
                        scanf("%d",&day);
                }
        }
        else if(month == 4 || month == 6 || month == 9 || month == 11)
        {
                printf("%d月份应 <= 30,请输入天数: ",month);
                scanf("%d",&day);
                while(day>30)
                {
                        printf("输入错误,天数应<=30,请清新输入\n");
                        scanf("%d",&day);
                }
        }else
        {
                printf("%d月份应 <= 31,请输入天数: ",month);
                scanf("%d",&day);
                while(day>31)
                {
                        printf("输入错误,天数应<=31,请清新输入\n");
                        scanf("%d",&day);
                }
        }
        getFriendNum(getDayNum(year,month,day));
}

1 个回复

倒序浏览
本帖最后由 fanxing 于 2015-6-25 19:03 编辑

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

#include <stdio.h>
int main(){
    printf("请输入年月日用空格隔开:");
    int n = 0;
    int y = 0;
    int r = 0;
    scanf("%d%d%d", &n, &y, &r);
    int count = 0;
    int month = 11;
    int day = 0;
        int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
        for(int i = 2006; i <= n; i++){
                days[1] += (i % 100) && !(i & 3) || !(i % 400);
        if(n == i) month = y;
            for(int m = 0; m <= month - 1; m++){
                        day = days[m];
                        if(n == i && m == y - 1) day = r;
            for (int d = 1; d <= day; d++) count += 1;
        }
                days[1] -= (i % 100) && !(i & 3) || !(i % 400);
        }
        printf("%d ", count);
        if(count % 2 == 0){
        printf("帅哥");
        }
    else if(count % 3 == 0){
        printf("美女");
    }
        return 0;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马