C语言基础—小实例:三天打渔两天晒网

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

// 小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥
// 当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥
#include <stdio.h>
int isleapyear(int);                                            // 声明子函数,判断是否为润年。
int main()
{
    int year, month, day, days=0;                               // 定义用到的变量。
    printf("请依次输入2006年1月1日之后的年份、月份、和日期\n");
    scanf("%d%d%d",&year,&month, &day);                         // 输入年月日。
    int mondays[]={31,28,31,30,31,30,31,31,30,31,30,31};        // 将各月日期数放在数组,二月暂定28天。
    int nyear=year-2006;                                        // 得到年数。
    for( int i=0; i<=nyear; i++)                                // 遍历每一年。
    {
        if(isleapyear(2006+i) && i!=nyear)                      // 判断每一年是润年还是平年。
            days=days+366;                                      // 润年将总天数加上366天。
        else if( (!isleapyear(2006+i)) && i!=nyear )
            days=days+365;                                      // 平年将总天数加上365天。
        else if(i==nyear)                                       // 判断是否是最后一年。
        {
            mondays[1]=  isleapyear(2006+i) ? 29: 28 ;          // 判断最后一年是润年还是平年。
            for (int j=0 ; j<month-1; j++)
                days=days+mondays[j];                           // 将最后一年每月天数累加。
            days=days+day;                                      // 将最后一年的天数记在总天数内。
        }   
    }
    printf("总天数days=%d\n",days);                                // 输出总天数。
    int sex=days % (3+2);                                       // 取总天数除以5的余数。
    switch (sex)                                                // 对余数进行判断。
    {
    case 1: case 2: case 3:
            printf("%d年%d月%d日,小明结识的是美眉\n", year, month, day); // 如果是前三天,则结识美女。
            break;
    case 4: case 0:
            printf("%d年%d月%d日,小明结识的是帅锅\n",year, month, day); // 如果是后两天,则结识帅哥。
            break;
    }
    return 0;
}

int isleapyear(int year)                                        // 定义判断是否是润年的子函数。
{
    if((year%4==0 && year %100 !=0) || year %400==0)            // 能被四整除且不能被100整除,或者能够被400整除的是润年。
        return 1;                                               // 返回判断结果。
    else return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值