//法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;
}