习题 9.1 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
C程序设计(第四版) 谭浩强 习题9.1 个人设计
习题 9.1 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
代码块:
方法1:
#include <stdio.h>
#include <stdlib.h>
struct count_day
{
int year;
int month;
int day;
} dd={2018, 3, 28};
int main()
{
int i, m[12], sum;
for (i=0; i<6; i++)
i<=3 ? m[2*i]=31, m[2*i+1]=30 : m[2*i-1]=31, m[2*i]=30;
(!(dd.year%4)&&dd.year%100!=0)||!(dd.year%400) ? m[1]=29 : m[1]=28;
for (i=0, sum=0; i<dd.month-1; sum+=m[i++]);
printf("%d-%d-%d is No.%d days!\n", dd.year, dd.month, dd.day, sum+dd.day);
system("pause");
return 0;
}
方法2:
#include <stdio.h>
#include <stdlib.h>
struct Date{
int year;
int month;
int day;
};
void input(Date *d);
void print(Date *d);
int main()
{
Date *dd=(Date*)malloc(sizeof(Date));
input(dd);
print(dd);
system("pause");
return 0;
}
void input(Date *d)
{
printf("Please enter date: ");
scanf("%d %d %d", &d->year, &d->month, &d->day);
}
void print(Date *d)
{
int m[12], i, y, sum=0;
y=d->year;
(y%4==0&&y%100!=0)||y%400==0 ? m[1]=29 : m[1]=28;
for (i=0; i<12; i++){
if (i==1) continue;
else if (i==0||i==2||i==4||i==6||i==7||i==9||i==11) m[i]=31;
else m[i]=30;
}
for (i=0; i<d->month-1; sum+=m[i++]);
printf("The date is No.%d days!\n", sum+d->day);
}
还没有评论,来说两句吧...