C语言 9.1定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。

  1. 方法一 switch 语句。
//9.1定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
#include <stdio.h>
struct
{
	int year;
	int month;
	int day;
}date;

int main()
{
	int days;
	printf("input year,month,day:\n");
	scanf("%d%d%d", &date.year, &date.month, &date.day);
	switch (date.month)
	{
		case 1:days = date.day; break;
		case 2:days = date.day+31; break;
		case 3:days = date.day + 59; break;
		case 4:days = date.day + 90; break;
		case 5:days = date.day + 120; break;
		case 6:days = date.day + 151; break;
		case 7:days = date.day + 181; break;
		case 8:days = date.day + 212; break;
		case 9:days = date.day + 243; break;
		case 10:days = date.day + 273; break;
		case 11:days = date.day + 304; break;
		case 12:days = date.day +334; break;
	}
	if (((date.year % 4 == 0 && date.year % 100 != 0) || (date.year % 400 == 0) )&& date.month >= 3)
	{
		days = days + 1;
	}
	printf("%d month %d day is the %dth day in %dyear.\n", date.month, date.day, days, date.year);
	return 0;
}

在这里插入图片描述
在这里插入图片描述

2.方法2 数组

#include <stdio.h>
struct 
{
	int year;
	int month;
	int day;
}date;
int main()
{
	int i, days=0;
	int day_tab[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	printf("input year month day :\n");
	scanf("%d%d%d", &date.year, &date.month, &date.day);
	for (i = 1; i < date.month; i++)
	{
		days = days + day_tab[i];
	}
	days = days + date.day;
	if (((date.year % 4 == 0 && date.year % 100 != 0)|| date.year % 400==0) && date.month >= 3)
	{
		days = days + 1;
	}
	printf("%d month %d day is the %dth day in %dyear.\n", date.month, date.day, days, date.year);
	return 0;
}

注意判断条件不能少等号啥的。4和100条件可括号起来也可不括号 但顺序不能变

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lihongli000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值