• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
qyk123
博客园    首页    新随笔    联系   管理    订阅  订阅
C语言实验报告五

题目:定义一个结构体变量,包括年、月、日。计算该日在本年中是第几天?

要求及提示:

(1)写一个函数days,实现上面的计算。由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。

(2)注意闰年问题。

思路:

  1. 用户输入年、月、日。
  2. 使用一个循环累加到输入月份之前的每个月的天数。
  3. 加上输入的日数,得到该日期在本年中的天数。
  4. 如果是闰年,对天数进行修正。
  5. 输出用户输入的年月日以及计算得到的天数。

分析:

  1. 定义结构体:

    • struct data 定义了一个结构体,包括了年 (year)、月 (mon)、日 (day)。
  2. 全局变量:

    • d1 是结构体类型的全局变量,用于存储用户输入的年月日。
  3. 主函数 (main):

    • 用户通过输入获取年、月、日的值。
    • 使用一个数组 day_tab 存储每个月的天数,其中第一个元素为0(无效)。
    • 通过一个循环累加到输入月份之前的每个月的天数,加上输入的日数,得到 days 变量。
  4. 闰年判断:

    • 通过判断年份是否为闰年,对 days 进行修正。闰年的判断逻辑是:能被4整除但不能被100整除,或者能被400整除。
  5. 输出结果:

    • 输出用户输入的年月日以及计算得到的天数。

代码:

struct data
{
	int year;
	int mon;
	int day;

}d1;
int main()
{
	int i, days = 0;
	int day_tab[13] = { 0,31,28,31,30,31,30,31,30,31,30,31,30 };

	printf("input year,month,day:");

	scanf("%d %d %d", &d1.year, &d1.mon, &d1.day);

	for (i = 1; i < d1.mon; i++)
		days = days + day_tab[i];
	days = days + d1.day;

	if (d1.year % 4 == 0 && d1.year % 100 != 0 || d1.year % 400 == 0)
		days = days + 1;

	printf("%d %d %d  days=%d", d1.year, d1.mon, d1.day, days);
}
  • 代码中并未对用户输入的月份和日期的合法性进行检查,因此用户输入无效的日期可能导致不准确的计算。
  • 月份和日期的合法性检查可通过判断用户输入的值是否在合理范围内来实现。
posted on 2024-02-20 09:02  qiyukun  阅读(39)  评论(0)    收藏  举报  来源
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3