C语言---给定年、月、日,输出其为这一年的第几天(多版本)

//法1. 基本

#import <Foundation/Foundation.h>

int main(int argc,const char * argv[])

{

    int year =0;//

   int month = 0;//

   int day = 0;//

   int totalDays = 0;//总天数

    printf("请输入合法的日期:\n");

   scanf("%d%d%d", &year, &month, &day);

   BOOL condition1 = (year > 0 && year < 2015 && month > 0 && month < 32 && day > 0 && day < 32);//判断是否为合法的日期的条件

   BOOL condition2 = (year % 400 == 0|| (year % 4 == 0 && year % 100 != 0));//判断是否为闰年的条件

   if (condition1) {

       int daysOfMonth[12] = {31,28, 31, 30, 31, 30,31, 31, 30, 31, 30,31};//每月的天数(平年情况)

       if (condition2) {

            daysOfMonth[1] =29;//满足条件c2则为闰年

        }

       switch (month) {

           case 4:

           case 6:

           case 9:

           case 11:

               if (day == 31) {

                   printf("日期不合法\n");

                }else {

                   for (int i =0; i < month - 1; i++) {

                        totalDays += daysOfMonth[i];

                    }

                    totalDays += day;

                   printf("总天数为:%d\n", totalDays);

                }break;

           default:

               for (int i =0; i < month - 1; i++) {

                    totalDays += daysOfMonth[i];

                }

                totalDays += day;

               printf("总天数为:%d\n", totalDays);

               break;

           case 2:

               if (day >= 30) {

                  printf("日期不合法\n");

                }else {

                   for (int i =0; i < month - 1; i++) {

                        totalDays += daysOfMonth[i];

                    }

                    totalDays += day;

                   printf("总天数为:%d\n", totalDays);

                }break;


        }

    }else {

        printf("您输入的日期不对\n");

    }

   return 0;

}







//法2. 函数

#import <Foundation/Foundation.h>

int printTotalDays(int month,int day, int daysOfMonth[]);

int printTotalDays(int month,int day, int daysOfMonth[])

{

   int totalDays = 0;//总天数

   for (int i =0; i < month - 1; i++) {

        totalDays += daysOfMonth[i];

    }

    totalDays += day;

   return totalDays;

}

void days(int year,int month, int day);

void days(int year,int month, int day)

{

   BOOL condition1 = (year > 0 && year < 2015 && month > 0 && month < 32 && day > 0 && day < 32);//判断是否为合法的日期的条件

   BOOL condition2 = (year % 400 == 0|| (year % 4 == 0 && year % 100 != 0));//判断是否为闰年的条件

   if (condition1) {

       int daysOfMonth[12] = {31,28, 31, 30, 31, 30,31, 31, 30, 31, 30,31};//每月的天数(平年情况)

       if (condition2) {

            daysOfMonth[1] =29;//满足条件c2则为闰年

        }

       switch (month) {

           case 4:

           case 6:

           case 9:

           case 11:

               if (day == 31) {

                   printf("日期不合法\n");

                }else {

                   printf("总天数为:%d\n",printTotalDays(month, day, daysOfMonth));

                }break;

           case 2:

               if (day >= 30) {

                   printf("日期不合法\n");

                }else {

                   printf("总天数为:%d\n",printTotalDays(month, day, daysOfMonth));

                }break;

           default:

               printf("总天数为:%d\n",printTotalDays(month, day, daysOfMonth));

               break;

        }

    }else {

        printf("您输入的日期不对\n");

    }

}

int main(int argc,const char * argv[])

{

   int year = 0;//

   int month = 0;//

   int day = 0;//

    printf("请输入合法的日期:\n");

   scanf("%d%d%d", &year, &month, &day);

   days(year, month, day);

   return 0;

}

//法3.函数 + 结构体

#import <Foundation/Foundation.h>

struct date {

    int year;

    int month;

    int day;

};

typedef struct date Date;

int printTotalDays(Date date,int daysOfMonth[]);

int printTotalDays(Date date,int daysOfMonth[])

{

    int totalDays = 0;//总天数

    for (int i = 0; i < date.month - 1; i++) {

        totalDays += daysOfMonth[i];

    }

    totalDays += date.day;

    return totalDays;

}

void days(Date date);

void days(Date date)

{

    BOOL condition1 = (date.year > 0 && date.year < 2015 && date.month > 0 && date.month < 32 && date.day > 0 && date.day < 32);//判断是否为合法的日期的条件

    BOOL condition2 = (date.year % 400 == 0|| (date.year %4 == 0 && date.year %100 != 0));//判断是否为闰年的条件

    if (condition1) {

        int daysOfMonth[12] = {31,28, 31, 30, 31, 30,31, 31, 30, 31, 30,31};//每月的天数(平年情况)

        if (condition2) {

            daysOfMonth[1] =29;//满足条件c2则为闰年

        }

        switch (date.month) {

            case 4:

            case 6:

            case 9:

            case 11:

                if (date.day == 31) {

                   printf("日期不合法\n");

                }else {

                   printf("总天数为:%d\n",printTotalDays(date, daysOfMonth));

                }break;

            case 2:

                if (date.day >= 30) {

                   printf("日期不合法\n");

                }else {

                   printf("总天数为:%d\n",printTotalDays(date, daysOfMonth));

                }break;

            default:

                printf("总天数为:%d\n",printTotalDays(date, daysOfMonth));

                break;

        }

    } else {

        printf("您输入的日期不对\n");

    }

}

int main(int argc,const char * argv[])

{

    Date date;

    printf("请输入合法的日期:\n");

    scanf("%d%d%d", &date.year, &date.month, &date.day);

    days(date);

    return 0;

}

欢迎大神吐槽= =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值