第7章 指针 第6题

2023-11-09

题目:

Julian历法是用年及这一年中的第几天来表示日期。

设计一个函数将Julian历法表示的日期转换成月和日,如Mar8(注意闰年的问题)。

函数返回一个字符串,即转换后的月和日。如果参数有错,如天数为第370天,返回NULL。


代码:

#include <iostream>
using namespace std;

int function(int year, int days, int *a);

int main()
{
	cout << "把Julian历法转换为年月日" << endl << endl;

	int year, days, a[8] = { 00000000 };

	cout << "请问今年的年份是:";
	cin >> year;
	cout << "请问今天是" << year << "年的第几天:";
	cin >> days;
		
	function(year, days, a);

	cout << endl << "今天的日期是:";
	for (int i = 0; i < 8; ++i) cout << a[i];
	cout << endl << endl;

	system("pause;");
	return 0;
}

int function(int year, int days, int *a)
{
	if (year < 0)
	{
		cout << "年份错误!";
		return NULL;
		system("pause;");
		return 0;
	}
	
	if (days < 1)
	{
		cout << "天数错误!";
		return NULL;
		system("pause;");
		return 0;
	}
	


	bool judge;

	if (year % 100 == 0)
	{
		if (year % 400 == 0) judge = true;
		else judge = false;
	}
	else
	{
		if (year % 4 == 0) judge = true;
		else judge = false;
	}



	if (judge == true)
	{
		if (days > 366)
		{
			return NULL;
			system("pause;");
			return 0;
		}

		int month = 0;
		for (int i : {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31})
		{
			month = month + 1;
			
			if (days < i)
			{
				int j;

				//年份(4位)
				for (j = 3; ; j--)
				{
					a[j] = year % 10;
					year = year / 10;
					if (year == 0) break;
				}

				//月份(2位)
				for (j = 5; ; j--)
				{
					a[j] = month % 10;
					month = month / 10;
					if (month == 0) break;
				}

				//日数(2位)
				for (j = 7; ; j--)
				{
					a[j] = days % 10;
					days = days / 10;
					if (days == 0) break;
				}

				break;
			}
			
			else days = days - i;
		}
	}

	else
	{
		if (days > 365)
		{
			return NULL;
			system("pause;");
			return 0;
		}

		int month = 0;
		for (int i : {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31})
		{
			month = month + 1;

			if (days < i)
			{
				int j;

				//年份(4位)
				for (j = 3; ; j--)
				{
					a[j] = year % 10;
					year = year / 10;
					if (year == 0) break;
				}

				//月份(2位)
				for (j = 5; ; j--)
				{
					a[j] = month % 10;
					month = month / 10;
					if (month == 0) break;
				}

				//日数(2位)
				for (j = 7; ; j--)
				{
					a[j] = days % 10;
					days = days / 10;
					if (days == 0) break;
				}

				break;
			}

			else days = days - i;
		}
	}
	
	return *a;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第7章 指针 第6题 的相关文章

随机推荐

  • 【操作系统】王道考研 p16 调度算法:时间片轮转、优先级调度、多级反馈队列调度算法

    视频 知识总览 时间片轮转 RR Round Robin 常用于分时操作系统 更注重 响应时间 因此此处不计算周转时间 算法思想 公平地 轮流地为各个进程服务 让每个进程在一定时间间隔内都可以得到相应 算法规则 按照各进程到达就绪队列的顺序
  • LTE上行SC-FDMA 下行采用OFDMA的原因

    LTE下行是OFDMASC FDMA Single carrier Frequency Division Multiple Access 单载波频分多址 是LTE的上行链路的主流多址SC FDMA是单波载 Single carrier 与O
  • 进程调度的过程以及进程与线程的区别

    一 什么是进程 进程是操作系统对一个正在运行的程序的一种抽象 换言之 可以把进程看作程序的一次运行过程 同时 在操作系统内部 进程又是操作系统进行资源分配的基本单位 注意以上的运行出来的可执行程序 这些程序就是 进程 二 那么操作系统是如何
  • 中国移动:《2020年区块链+边缘计算白皮书》 PDF文字版

    中国移动 2020年区块链 边缘计算白皮书 PDF文字版 下载 访问密码 168168 中国移动5G联合创新中心与中兴通讯 区块链技术与数据安全工业和信息化部重点实验室 北京大学新一代信息技术研究院合作 共同发布了 区块链 边缘计算白皮书
  • 低版本Mac OS安装合适xcode的方法

    在虚拟机上安装完Mac OS10 14 在Apple Store上准备安装xcode时出现 xcode 不能安装在 Macintosh HD 上 因为需要 OS X V10 14 3 或更高版本 导致无法安装Xcode 如图 解决方法 不在
  • Oracle sql 判断某个字段不等于某个值

    看着很简单的一个问题 直接写sql select from user where userName 张三 但是运行一下 就会发现 如果userName有null值 那null值的记录也查不出来了 就是这么神奇 正确的sql select f
  • 手机已经开启调试模式还提示This adb server‘s $ADB_VENDOR_KEYS is not setTry ‘adb kill-server‘ if that seems wrong

    手机已经开启调试模式还提示This adb server s ADB VENDOR KEYS is not set Try adb kill server if that seems wrong Otherwise check for a
  • WPS进行分类汇总计算,并且提取统计结果的详细步骤

    1 首先选中要进行分类统计的数据 2 选择 数据 选项 3 然后找到 分类汇总 选项 再次弹出对话框 选择按照那一列进行分类汇总 并选择统计的计算方法 点击确定 5 默认统计结果都会在每一组的下一行 点击 隐藏明细数据 选项 即可仅显示统计
  • java软件工程师工作业绩_java软件工程师的工作描述怎么写

    展开全部 1 负责研发62616964757a686964616fe4b893e5b19e31333365656636公司应用软件的模块设计 开发和交付 2 负责编码 单元测试 3 按照功能组件的详细设计 4 对其他软件工程师的代码进行审核
  • 【网络】nmcli 网络管理工具

    目录 nmcli 命令 前提 重启网络服务 重启网卡 实例 nmcli输出说明 3种网络配置方法 nmcli的命令参数 Tips ethtool 命令 IP命令 添加网卡到配置文件 Linux系统怎么查看网卡的UUID nmcli 命令 原
  • 4:Git的树对象

    树对象 tree object 它能解决文件名保存的问题 就是树对象有自己的名字 也允许我们将多个文件组织到一起 Git 以一种类似于 UNIX 文件系统的方式存储内容 所有内容均以树对象和数据对象 git 对象 的形式存储 其中树对象对应
  • 本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录

    文章目录 前言 1 安装宝塔 2 安装cpolar内网穿透 3 远程访问宝塔 4 固定http地址 5 配置二级子域名 6 测试访问二级子域名 转载自cpolar极点云文章 Linux安装宝塔 并实现公网远程登录宝塔面板 内网穿透 前言 宝
  • 【软件测试学习笔记】黑盒测试方法及案例

    文章目录 一 黑盒测试基本概念 二 黑盒测试的主要目的 三 优缺点 优点 缺点 四 黑盒测试的策略 五 黑盒测试方法 等价类划分 分类 划分方法 原则 等价类划分案例 边界值分析法 原则 边界值分析法案例 因果图法 四种因果关系 五种约束
  • 05

    1 Harbor简介 Harbor是由VMWare公司开源的容器镜像仓库 实际上 Harbor是在Docker Registry上进行相应的企业级扩展 从而获得了更加广泛的应用 组件 功能 harbor adminserver 配置管理中心
  • CentOS7安装MySQL5.7.26

    安装MySQL 在CentOS中默认安装有MariaDB 这个是MySQL的分支 但为了需要 还是要在系统中安装MySQL 而且安装完成之后可以直接覆盖掉MariaDB 下载并安装MySQL官方的 Yum Repository root l
  • django添加数据库字段进行数据迁移

    1 修改view py里面的变量 2 在model py新增字段 3 打开terminal并将环境切到项目所在环境 切换方式为 4 执行命令 python manage py makemigrations backend python ma
  • Redis(主从复制、哨兵模式、集群)概述及部署

    目录 引言 壹 Redis主从复制 一 Redis的高可用 二 Redis持久化 1 Redis 提供两种方式进行持久化 2 RDB 持久化 三 Redis主从复制 1 Redis主从复制的概念 2 Redis主从复制 四 Redis主从复
  • Linux系统删除文件夹下所有文件

    这篇文章来为大家介绍一下如何在 Linux 系统下删除文件 当 Linux 系统使用时间过长以后 难免会产生一些垃圾文件 这些文件除了会占用磁盘空间之外还会降低系统的运行效率 所以长时间运行后我们需要及时的清理一下这些垃圾文件 rm 是一个
  • 基于Hadoop的云盘系统上传和下载效率优化及处理大量小文件的解决方法

    基于任何平台实现的云盘系统 面临的首要的技术问题就是客户端上传和下载效率优化问题 基于Hadoop实现的云盘系统 受到Hadoop文件读写机制的影响 采用Hadoop提供的API进行HDFS文件系统访问 文件读取时默认是顺序 逐block读
  • 第7章 指针 第6题

    题目 Julian历法是用年及这一年中的第几天来表示日期 设计一个函数将Julian历法表示的日期转换成月和日 如Mar8 注意闰年的问题 函数返回一个字符串 即转换后的月和日 如果参数有错 如天数为第370天 返回NULL 代码 incl