栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言习题】输入某年某月某日,判断这一天是这一年的第几天?【要求:用switch编程】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言习题】输入某年某月某日,判断这一天是这一年的第几天?【要求:用switch编程】

题目内容:输入某年某月某日,判断这一天是这一年的第几天?【要求:用switch编程】

输入样例:2021  12  10

输出样例:2021年12月10日是这一年的第344天!

输入样例:2020  12  10

输出样例:2020年12月10日是这一年的第345天!

个人解法如下:

#define _CRT_SECURE_NO_WARNINGS //防报错
#include 
#include 

int Days_M(int year, int month) //该函数用于获得当月月份的对应天数
{
	int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; //默认2月份为平年28天(0号位占位元素为0不影响计算)
	if ((year % 100 != 0 && year % 4 == 0) || month % 400 == 2)
		days[2] += 1; //闰年2月天数加1天
	return days[month];
}

int Days_SUM(int year, int month, int day) //该函数用于获得总天数
{
	int SUM = 0;
	if (year < 1) //年数报错
		return -1;
	if (month < 1 || month > 13) //月数报错
		return -2;
	if (day < 1 || day > Days_M(year, month)) //天数报错
		return -3;
	for (int i = 0; i < month; i++) //直到当月跳出循环(若int i=1会导致一月也进行一次循环)
	{
		SUM += Days_M(year, i); //获得本月以前的所有月份天数之和
	}
	return SUM + day; //返回值中加上本月当前天数
}

int main()
{
	int year, month, day;
	int SUM = 0;
	printf("请输入年月日(用空格隔开):n");
	scanf_s("%d %d %d", &year, &month, &day);
	SUM = Days_SUM(year, month, day); 
	switch (SUM)
	{
	case -1:
		printf("年份输入错误");
		break;
	case -2:
		printf("月份输入错误");
		break;
	case -3:
		printf("日子输入错误");
		break;
	default:
		printf("%d年%d月%d日是这一年的第%d天!", year, month, day, SUM);
		break;
	}
	return 0;
}

本人拙作,请大佬们点评。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号