C语言经典100道(4)
C语言实例4
题目:输入某年某月某日,判断这一天是这一年的第几天?
#include<stdio.h>
int leap_year(int year);//判断是否是闰年的函数
int main(void)
{
int y, m, d, l;
int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int leap_days[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int sum = 0, s;
int alldays;
printf("输入今天的阳历日期:20XX(年).XX(月).XX(日)\n");
scanf("%d.%d.%d", &y, &m, &d);
l = leap_year(y);
if (l == 0)//不是闰年
{
for (s = 0; s < m-1; s++)
sum += days[s];
}
else
for (s = 0; s < m-1; s++)
sum += leap_days[s];
alldays = sum + d;
printf("今天是今年的第%d天\n", alldays);
return 0;
}
int leap_year(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return 1;
else
return 0;
}
或许我们可以那这个函数做一个简单的程序计算两个日期之间相差多少天,衍生出各种XX天纪念日?
#include<stdio.h>
int leap_year(int year);
int days(int year, int month, int day);
int days2(int year);
int main(void)
{
int y, m, d, l;
int by, bm, bd;
long alldays;
int nian, sum1=0, sum2;
printf("输入你出生的日子:XXXX(年).XX(月).XX(日)\n");
scanf("%d.%d.%d", &by, &bm, &bd);
printf("输入今天的年月日:XXXX(年).XX(月).XX(日)\n");
scanf("%d.%d.%d", &y, &m, &d);
if (y - by == 0)//就在同一年,只用两个日期在这一年的第多少天相见+1即可算出一共多少天
alldays = days(y, m, d) - days(by, bm, bd) + 1;
else if (y - by == 1)//中间没有差完整的一年,第一个日期的那一年总天数-第一个日期的天数+第二个日期的总天数+1;
alldays = days2(by) - days(by, bm, bd) + days(y, m, d) + 1;
else if (y - by >= 2)
{
nian = y - by - 1;
for (l = 1; l <= nian; l++)
{
sum2 = l + by;
sum1 += days2(sum2);
}
alldays = sum1 + 1 + days2(by) - days(by, bm, bd) + days(y, m, d);
}
printf("你在这个可爱的世界生活了%d天了!!!",alldays);
return 0;
}
int leap_year(int year)//判断是否是闰年的函数
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return 1;//是闰年
else
return 0;//不是闰年
}
int days(int year, int month, int day)//计算这一天是这一年第几天
{
int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int leap_days[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int sum = 0, s, l;
l = leap_year(year);
if (l == 0)
for (s = 0; s < month - 1; s++)
sum += days[s];
else
for (s = 0; s < month - 1; s++)
sum += leap_days[s];
return (sum + day);
}
int days2(int year)//某一年的总天数
{
int days = 365;
int leap_days = 366;
if (leap_year(year) == 1)
return leap_days;
else
return days;
}
惨烈的期末考试过去了,大学的第一个学期生活也结束了,充满迷茫的假期生活让我这个鸽子开始重新写博客了,c语言太菜了,必须加把劲欸over