今天是啥时候?

描述

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

输入

年月日

输出

当年第几天

输入样例 1 

2020 2 28

输出样例 1

59

输入样例 2 

2022 9 5

输出样例 2

248

代码一(如下):采用if判断语句和for循环语句

#include <iostream>
using namespace std;
struct Date
{int year;int month;int day;
}riqi;
int main()
{cin >> riqi.year >> riqi.month >> riqi.day;int i,sum=0;if ((riqi.year % 4 == 0&&riqi.year%100!=0)||riqi.year%400==0){for (i = 1; i < riqi.month; i++){if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12){sum += 31;}else if (i == 4 || i == 6 || i == 9||i==11){sum += 30;}else{sum += 29;}}}else{for (i = 1; i < riqi.month; i++){if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12){sum += 31;}else if (i == 4 || i == 6 || i == 9||i==11){sum += 30;}else{sum += 28;}}}sum = sum + riqi.day;cout << sum;return 0;
}

代码二(如下):采用switch语句

#include <iostream>
using namespace std;
struct Date
{int year;int month;int day;
}riqi;
int main()
{cin >> riqi.year >> riqi.month >> riqi.day;int i,sum=0;if ((riqi.year % 4 == 0&&riqi.year%100!=0)||riqi.year%400==0){switch (riqi.month){case 1:sum = riqi.day; break;case 2:sum = 31 + riqi.day; break;case 3:sum = 31 + 29 + riqi.day; break;case 4:sum = 31 * 2 + 29 + riqi.day; break;case 5:sum = 31 * 2 + 29 + 30 + riqi.day; break;case 6:sum = 31 * 3 + 29 + 30 + riqi.day; break;case 7:sum = 31 * 3 + 29 + 30 * 2 + riqi.day; break;case 8:sum = 31 * 4 + 29 + 30 * 2 + riqi.day; break;case 9:sum = 31 * 5 + 29 + 30 * 2 + riqi.day; break;case 10:sum = 31 * 5 + 29 + 30 * 3 + riqi.day; break;case 11:sum = 31 * 6 + 29 + 30 * 3 + riqi.day; break;case 12:sum = 31 * 6 + 29 + 30 * 4 + riqi.day; break;}}else{switch (riqi.month){case 1:sum = riqi.day; break;case 2:sum = 31 + riqi.day; break;case 3:sum = 31 + 28 + riqi.day; break;case 4:sum = 31 * 2 + 28 + riqi.day; break;case 5:sum = 31 * 2 + 28 + 30 + riqi.day; break;case 6:sum = 31 * 3 + 28 + 30 + riqi.day; break;case 7:sum = 31 * 3 + 28 + 30 * 2 + riqi.day; break;case 8:sum = 31 * 4 + 28 + 30 * 2 + riqi.day; break;case 9:sum = 31 * 5 + 28 + 30 * 2 + riqi.day; break;case 10:sum = 31 * 5 + 28 + 30 * 3 + riqi.day; break;case 11:sum = 31 * 6 + 28 + 30 * 3 + riqi.day; break;case 12:sum = 31 * 6 + 28 + 30 * 4 + riqi.day; break;}}cout << sum;return 0;
}

问题点:

①:用户可以自己声明的类型有结构体类型、共用体类型、枚举类型、类类型等,这些同称为用户自定义类型。

②:在一个组合项中包含若干类型不同(当然也可以相同)的数据项,这种数据类型称为结构体。struct是声明结构体类型时必须使用的关键字。

声明一个结构体类型的一般形式为

struct 结构体类型名

{成员表};

在声明一个结构体类型时必须对各成员都应进行类型声明,即

类型名 成员名;

每一个成员也称为结构体中的一个域。成员表又称为域表。成员名定名规则与变量名相同。

在C++中,结构体成员既可以包括数据(即数据成员),又可以包括函数(即函数成员),以适应面向对象的程序设计。

③:定义结构体类型变量的方法

1)先声明结构体类型再定义变量,如

struct Date{

int year;

int month;

int day;};

Date day1,day2;         //Date是结构体类型名,day1、day2是结构体变量名。

2)在声明类型的同时定义变量,如

struct Date{

int year;

int month;

int day;}day1,day2;

这种形式的定义的一般形式为

struct 结构体名

{

成员表

}变量名表;

3)成员也可以是一个结构体变量,如

struct Date

{int year;

int month;

int day;

};

struct Student

{int num;

char name[20];

int age;

Date birthday;       //Date是结构体类型,birthday是Date类型的成员。

//(已声明的类型Date与其他类型(如int,char)一样可以用来定义成员的类型)

char addr[30];

}student1,student2;

④:结构体变量的初始化

和其他类型变量一样,对结构体变量可以在定义时指定初始值。如

struct Date

{int year;

int month;

int day;

}day1={2022,1,1};        //初始化

也可以采用声明类型与定义变量分开的形式,在定义变量时进行初始化。如

Date day1={2022,1,1}; 

⑤:引用结构体变量

1)可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。

2)可以引用一个结构体变量中的一个成员的值。如day1.year表示结构体变量day1中成员year的值。

引用结构体变量中成员的一般形式为   结构体变量名 . 成员名 

可以对变量中的成员赋值:day1.year=2022;

 . ”是成员运算符,它在所有的运算符中优先级最高,因此可以把day1.year作为一个整体来看待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL——sql文件导入

Windows方式&#xff1a; 进入PostgreSQL安装目录的bin&#xff0c;进入cmd 执行命令&#xff1a; psql -d 数据库名 -h localhost -p 5432 -U 用户名 -f 文件目录 SQL Shell: 执行命令&#xff1a; \i 文件目录(Windows下要加引号和双斜线)

STL 关于vector的细节,vector模拟实现【C++】

文章目录 vector成员变量默认成员函数构造函数拷贝构造赋值运算符重载函数析构函数 迭代器beginend size和capacityresizereserve[ ]push_backpop_backinserteraseswap vector成员变量 _start指向容器的头&#xff0c;_finish指向容器当中有效数据的下一个位置&#xff0c;_end…

自动化测试——环境

一、搭建环境 1、安装Slenium pip install selenium 2、安装浏览器驱动-》查询浏览器版本-》下载对应版本驱动-》在path路径中配置&#xff08;浏览器更新需要重新下载&#xff09; pip install webdriver -helper&#xff08;自动化&#xff09;python3.9以上 pip install 安…

【驱动开发day4作业】

头文件代码 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #…

使用python重命名指定目录文件

使用python重命名指定目录文件 1. [文件] 指定目录文件重命名 ~ 715B #Copyright 2012 wuyuangui.#www.iplaypy.com python教程import ospath F:\Python\open project\SGI\SGI_STL paths path.replace(\\, //) paths paths // print paths files os.listdir(paths) for i …

数据库数据恢复-Syabse数据库存储页底层数据杂乱的数据恢复案例

数据库恢复环境&#xff1a; Sybase版本&#xff1a;SQL Anywhere 8.0。 数据库故障&#xff1a; 数据库所在的设备意外断电后&#xff0c;数据库无法启动。 错误提示&#xff1a; 使用Sybase Central连接后报错&#xff1a; 数据库故障分析&#xff1a; 经过北亚企安数据恢复…

Android 面试题 应用程序结构 九

&#x1f525; 核心应用程序 Activity五个状态&#x1f525; Starting-> running-> paused-> stopped-> killed 启动状态&#xff08;Starting&#xff09;&#xff1a;Activity的启动状态很短暂&#xff0c;当Activity启动后便会进入运行状态&#xff08;Running…

数据库架构演变过程

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…

【JavaEE】博客系统前后端交互

目录 一、准备工作 二、数据库的表设计 三、封装JDBC数据库操作 1、创建数据表对应的实体类 2、封装增删改查操作 四、前后端交互逻辑的实现 1、博客列表页 1.1、展示博客列表 1.2、博客详情页 1.3、登录页面 1.4、强制要求用户登录&#xff0c;检查用户的登录状态 …

浏览器访问nginx转发打开oss上的html页面默认是下载,修改为预览

使用阿里云盒OSS上传了html页面&#xff0c;在nginx里配置跳转访问该页面时&#xff0c;在浏览器里直接默认下载了该页面&#xff0c;现在想实现预览功能&#xff0c;只需在nginx里的location里修改消息头的Content-Disposition为inline即可 注意要隐藏头信息proxy_hide_header…

万年历【小游戏】(Java课设)

系统类型 Java实现的小游戏 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Idea或eclipse 运行效果 更多Java课设系统源码地址&#xff1a;更多Java课设系统源码地址 更多Java小游戏运行效果展示&#xff1a;更多Java小游戏运行效果展…

pytest——断言后继续执行

前言 在编写测试用例的时候&#xff0c;一条用例可能会有多条断言结果&#xff0c;当然在自动化测试用例中也会遇到这种问题&#xff0c;我们普通的断言结果一旦失败后&#xff0c;就会出现报错&#xff0c;哪么如何进行多个断言呢&#xff1f;pytest-assume这个pytest的插件就…

TiProxy 原理和实现

说明 在上篇《TiProxy 尝鲜》 中做了一些实验&#xff0c;比如加减tidb节点后tiproxy可以做到自动负载均衡&#xff0c;如果遇到会话有未提交的事务则等待事务结束才迁移。 本次主要研究这样的功能在tiproxy中是如何实现的&#xff0c;本次分享内容主要为以下几部分&#xff…

【 Python 全栈开发 - 人工智能篇 - 45 】决策树与随机森林

文章目录 一、概念与原理1.1 决策树1.1.1 概念1.1.2 原理特征选择分割方法 1.1.3 优点与缺点1.1.4 Python常用决策树算法 1.2 随机森林1.2.1 概念1.2.2 原理1.2.3 优点与缺点1.2.4 Python常用随机森林算法 1.3 决策树与随机森林的比较1.3.1 相同之处1.3.2 不同之处 二、决策树算…

嵌入式开发:单片机嵌入式Linux学习路径

SOC&#xff08;System on a Chip&#xff09;的本质区别在于架构和功能。低端SOC如基于Cortex-M架构的芯片&#xff0c;如STM32和NXP LPC1xxx系列&#xff0c;不具备MMU&#xff08;Memory Management Unit&#xff09;&#xff0c;适用于轻量级实时操作系统如uCOS和FreeRTOS。…

Vue基础-综合案例(基于vue2)

一、目标 能够知道如何使用vue-cli创建vue项目能够知道如何在项目中安装与配置element-ui能够知道element-ui中常见组件的用法能够知道如何使用axios中的拦截器能够知道如何配置proxy接口代理 二、目录 vue-cli组件库axios拦截器proxy跨域代理用户列表案例 vue-cli 1.什么…

利用mysqldump实现分库分表备份的shell脚本

一、信息摘要 linux版本&#xff1a;CentOS 7.9 mysql版本&#xff1a;MySQL 5.7.36 脚本实现功能&#xff1a;利用mysqldump工具实现对mysql中的数据库分库备份&#xff0c;和对所备份数据库中的表分表备份 二、shell脚本 #!/bin/bash ######################### #File n…

ARM和MIPS的区别

ARM和MIPS的区别主要有以下几方面&#xff1a; 指令集&#xff1a;ARM支持32位和64位指令&#xff0c;而MIPS同时支持32位和64位指令。除法器&#xff1a;MIPS有专门的除法器&#xff0c;可以执行除法指令&#xff0c;而ARM没有。寄存器&#xff1a;MIPS的内核寄存器比ARM多一…

gRPC-初识Protocol Buffers

简介 gRPC gRPC是一个高性能、开源和通用的 RPC 框架&#xff0c;面向移动和 HTTP/2 设计。gRPC 基于 HTTP/2 标准设计&#xff0c;带来双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好&#xff0c;更省电和节省空间占用。 特点…

[Linux]进程控制详解!!(创建、终止、等待、替换)

hello&#xff0c;大家好&#xff0c;这里是bang___bang_&#xff0c;在上两篇中我们讲解了进程的概念、状态和进程地址空间&#xff0c;本篇讲解进程的控制&#xff01;&#xff01;包含内容有进程创建、进程等待、进程替换、进程终止&#xff01;&#xff01; 附上前2篇文章…