C语言经典100道(4)

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值