定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。
typedef struct days {
int year;
int month;
int day;
}Days;
//计算该日在当年是第几天,实现函数
第一种方法
int days(Days a);
int days(date dat)
{int a[12] = {0,31,59,90,120,151,181,212,243,273,304,334};
int day = 0;
BOOL isTrue ; // 用于判断该年是否为闰年
// 判断该年是否为闰年
if (dat.year % 400 == 0 || (dat.year % 4 == 0 && dat.year % 100 != 0)) {
isTrue = 1; // 如果该年是闰年,令isTrue 为 1
} else {
isTrue = 0;
}
day += a[dat.month - 1] + dat.day;
day += isTrue && dat.month >= 3 ? 1 : 0;
第二种方法
int days(Days a) {//这里的Days表示的是形参的数据类型为Days,从而在main.m中必须定义和Days相同的数据类型
int sum = 0;
int i = a.month;
if (a.year % 400 == 0 || (a.year % 4 == 0 && a.year % 100 != 0)) {
switch (i - 1) {
case 12:
printf("输入错误");
case 11:
sum += 30;
case 10:
sum += 31;
case 9:
sum += 30;
case 8:
sum += 31;
case 7:
sum += 31;
case 6:
sum += 30;
case 5:
sum += 31;
case 4:
sum += 30;
case 3:
sum += 31;
case 2:
sum += 29;
case 1:
sum += 31 ;
break;
default:
printf("输入错误");
break;
}
sum += a.day;
} else {
switch (i - 1) {
case 12:
printf("输入错误");
case 11:
sum += 30;
case 10:
sum += 31;
case 9:
sum += 30;
case 8:
sum += 31;
case 7:
sum += 31;
case 6:
sum += 30;
case 5:
sum += 31;
case 4:
sum += 30;
case 3:
sum += 31;
case 2:
sum += 28;
case 1:
sum += 31 ;
break;
default:
printf("输入错误");
break;
}
sum += a.day;
}
Days calcuDay = {2001, 10, 28};
printf("%d", days(calcuDay));