类和对象相关题

news2024/11/7 11:40:33

文章目录

      • 1. 求1+2+3+...+n
      • 2. 计算是这一年的第几天
      • 3. 求两个日期之间的天数
      • 4. 算出第n天是几月几号
      • 5. 计算一个日期加上若干天后是什么日期


1. 求1+2+3+…+n

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

数据范围: 0 < n <= 200

class func{
public:
    static int i;
    static int sum;
    func(){
        sum+=i;
        ++i;
    }
};

int func::i = 1;
int func::sum = 0;

class Solution {
public:
    int Sum_Solution(int n) {
        func* p = new func[n];
        return func::sum;
    }
};

2. 计算是这一年的第几天

根据输入的日期,计算是这一年的第几天。

保证年份为4位数且日期合法。

#include <iostream>
using namespace std;

class Date{
public:
    int year;
    int month;
    int day;
    Date(){};
    
 	// 声明友元
    friend istream& operator>>(istream& in, Date& d);
	
    // 判断闰年
    bool isLeapYear(int year) const{
        return((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
    }
	
    // 获得日期
    int Getday(int year, int month) const{
        static const int Getdays[] =  {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if(month == 2 && isLeapYear(year))
            return 29;
        return Getdays[month - 1];
    }
	
    // 计算是这一年的第几天
    int my_sum(int year, int month, int day) const{
        int sum = 0;
        for(int i = 1;i < month; ++i){
            sum += Getday(year, i); 
        }
        sum += day;
        return sum;
    }
};

// >> 操作符重载
istream& operator>>(istream& in, Date& d){
    in >> d.year >> d.month >> d.day;
    return in;
}

int main()
{
    Date d;
    while(cin >> d){
        cout << d.my_sum(d.year, d.month, d.day) << endl;
    }
    return 0;
}

3. 求两个日期之间的天数

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天

#include <bits/stdc++.h>
using namespace std;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int leap(int year){
	if((year%4==0 && year%100!=0) || year%400==0) return 1;
	return 0;
}

int main(){
	int day1,day2,mon1,mon2,year1,year2;
	scanf("%4d%2d%2d",&year1,&mon1,&day1);
	scanf("%4d%2d%2d",&year2,&mon2,&day2);

	int sum1=0,sum2=0;
	for(int yy=0;yy<year1;yy++){
		if(leap(yy)) sum1+=366;
		else sum1+=365;
	} 
	if(leap(year1)) day[2]=29;
		else day[2]=28;
	for(int mm=1;mm<mon1;mm++){
		sum1+=day[mm];
	}
	sum1+=day1;
	
	for(int yy=0;yy<year2;yy++){
		if(leap(yy)) sum2+=366;
		else sum2+=365;
	} 
	if(leap(year2)) day[2]=29;
		else day[2]=28;
	for(int mm=1;mm<mon2;mm++){
		sum2+=day[mm];
	}
	sum2+=day2;
	cout<<abs(sum1-sum2)+1<<endl;
	return 0;
}

4. 算出第n天是几月几号

给出年分m和一年中的第n天,算出第n天是几月几号。

#include <iostream>
using namespace std;

class Date {
  public:
    // 判断是否为闰年
    bool isLeapYear(int year) const {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
            return true;
        return false;
    }

    // 获取某年某月的天数
    int GetMonthDay(int year, int month) const {
        static const int GetMonthDay[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
        if (month == 2 && isLeapYear(year))
            return 29;
        return GetMonthDay[month - 1];
    }

    // 构造函数
    Date(int year, int x) {
        this->year = year;
        if (x <= 31) {
            month = 1;
            day = x;
        } else {
            x -= 31;
            month = 2;
            for (int i = 2; x > GetMonthDay(year, i); ++i) {
                ++month;
                x -= GetMonthDay(year, i);
            }
                day = x;
        }  
    }


  private:
    int year;
    int month;
    int day;

    friend ostream& operator<<(ostream& out, const Date& d);
};

// << 运算符重载
ostream& operator<<(ostream& out, const Date& d) {
    if (d.month < 10 &&d.day < 10)   out << d.year << "-0" << d.month << "-0" << d.day << endl;
    else if (d.month < 10)   out << d.year << "-0" << d.month << "-" << d.day <<endl;
    else if (d.day < 10)   out << d.year << "-" << d.month << "-0" << d.day << endl;
    else   out << d.year << "-" << d.month << "-" << d.day << endl;
    return out;
}

int main() {
    int year, x;
    while (cin >> year >> x){
        Date d(year, x);
        cout << d;
    }

        return 0;
}

5. 计算一个日期加上若干天后是什么日期

设计一个程序能计算一个日期加上若干天后是什么日期。

#include <iostream>
using namespace std;

class Date {
public:
    // 判断是否为闰年
    bool isLeapYear(int year) const {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
            return true;
        return false;
    }

    // 获取某年某月的天数
    int GetMonthDay(int year, int month) const {
        static const int GetMonthDay[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
        if (month == 2 && isLeapYear(year))
            return 29;
        return GetMonthDay[month - 1];
    }

    // 日期天数递增一天
    void incrementDate() {
        ++day;
        if (day > GetMonthDay(year, month)) {
            day = 1;
            ++month;
            if (month > 12) {
                month = 1;
                ++year;
            }
        }
    }

// 后置++运算符重载
    Date& operator++(){
        Date tmp = *this;
        incrementDate();
        return *this;
    }

    Date(int year, int month, int day): year(year), month(month), day(day) {}


private:
    int year;
    int month;
    int day;

    friend ostream& operator<<(ostream& out, const Date& d);
};

// << 运算符重载
ostream& operator<<(ostream& out, const Date& d) {
    if (d.month < 10 && d.day < 10)   out << d.year << "-0" << d.month << "-0" << d.day << endl;
    else if (d.month < 10)   out << d.year << "-0" << d.month << "-" << d.day <<endl;
    else if (d.day < 10)   out << d.year << "-" << d.month << "-0" << d.day << endl;
    else   out << d.year << "-" << d.month << "-" << d.day << endl;
    return out;
}

int main() {
    int n;
    int y, m, d, x;
    cin >> n;
        for (int i = 0; i < n; ++i) {
            cin >> y >> m >> d >> x;
            Date d1(y, m, d);
            while(x--){
                ++d1;
            }
            cout << d1;
        }

    return 0;
}

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

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

相关文章

hf_transformers

强者自定义&#xff0c;弱者用默认&#xff0c;傻逼不看说明书 1. 2.在 model.generate()里填参数&#xff0c;默认为20个新token generated_ids model.generate(**model_inputs, max_new_tokens50) 3. 默认情况下&#xff0c;除非在GenerationConfig文件中指定&#xff0…

Sigrity Power SI 3D-EM Inductance Extraction模式如何进行电感的提取操作指导(一)

Sigrity Power SI 3D-EM Inductance Extraction模式如何进行电感的提取操作指导(一) Sigrity Power SI使用3D-EM Inductance Extraction模式可以进行电感的提取,以下图为例 2D 视图 <

学习记录:js算法(八十七):单词搜索

文章目录 单词搜索思路一思路二 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其…

应急救援无人车:用科技守护安全!

一、核心功能 快速进入危险区域&#xff1a; 救援无人车能够迅速进入地震、火灾、洪水等自然灾害或重大事故的现场&#xff0c;这些区域往往对人类救援人员构成极大威胁。 通过自主导航和环境感知技术&#xff0c;无人车能够避开危险区域&#xff0c;确保自身安全的同时&…

辩论赛——动态IP与静态IP的巅峰对决

尊敬的各位观众&#xff1a; 大家好&#xff01;欢迎来到今天的演说舞台&#xff0c;我是主持人小蝌蚪。今天&#xff0c;我们将见证一场精彩绝伦的辩论&#xff0c;辩论的双方是动态IP和静态IP。他们将围绕各自的优缺点展开激烈的辩论&#xff0c;为我们揭示代理IP世界中的奥…

红米k70怎么设置「短信通知」在锁屏时隐藏内容,不锁屏时不隐藏内容

红米 K70 设置短信通知在锁屏时隐藏内容、不锁屏时不隐藏内容&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开手机设置&#xff1a;在主屏幕上找到并点击 “设置” 图标&#xff0c;进入手机设置页面。进入通知与控制中心&#xff1a;在设置页面中&#xff0c;找到并点…

【计算机网络】零碎知识点(易忘 / 易错)总结回顾

一、计算机网络的发展背景 1、网络的定义 网络是指将多个计算机或设备通过通信线路、传输协议和网络设备连接起来&#xff0c;形成一个相互通信和共享资源的系统。 2、局域网 LAN 相对于广域网 WAN 而言&#xff0c;局域网 LAN 主要是指在相对较小的范围内的计算机互联网络 …

Python 在PDF中绘制形状(线条、矩形、椭圆形等)

在PDF中绘制图形可以增强文档的视觉效果。通过添加不同类型的形状&#xff0c;如实线、虚线、矩形、圆形等&#xff0c;可以使文档更加生动有趣&#xff0c;提高读者的阅读兴趣。这对于制作报告、演示文稿或是教材特别有用。本文将通过以下几个示例介绍如何使用Python 在PDF中绘…

三菱MR-J4伺服绝对位置检测系统

发生[AL.25 绝对位置丢失]或[AL.E3 绝对位置计数器警告]时&#xff0c;必须再次进行原点设定。否则可能会因此发生预料之外的动作。 概要 常规运行时&#xff0c;编码器由检测1转内位置的编码器和检测转数的旋转累计计数器构成。 绝对位置检测系统与伺服系统控制器电源…

程序员行业会因此受到什么冲击?

床铺再次当选&#xff0c;会对两家关系产生深远影响。在此篇博客中&#xff0c;我们将探讨床铺的政策对我们外贸、就业、留学以及特别是互联网产业和我们程序员职业的潜在影响。 关系趋紧&#xff1a;摩擦可能会更多 床铺在其任期期间对我们施加了诸多贸易税&#xff0c;采取…

Edge浏览器打开PDF无法显示电子签章

Edge浏览器打开PDF无法显示电子签章 直接说处理方式 直接说处理方式 浏览器地址栏&#xff0c;输入 edge://flags/搜索&#xff1a;pdf禁用&#xff1a;New PDF Viewer效果如下

02- 模块化编程-006 ADC0808数码显示对比

1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备&#xff0c;包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…

计算机体系结构之多级缓存、缓存miss及缓存hit(二)

前面章节《计算机体系结构之缓存机制原理及其应用&#xff08;一&#xff09;》讲了关于缓存机制的原理及其应用&#xff0c;其中提出了多级缓存、缓存miss以及缓存hit的疑问。故&#xff0c;本章将进行展开讲解&#xff0c; 多级缓存、缓存miss以及缓存hit存在的意义是为了保持…

scala set训练

Set实训内容&#xff1a; 1.创建一个可变Set&#xff0c;用于存储图书馆中的书籍信息&#xff08;假设书籍信息用字符串表示&#xff09;&#xff0c;初始化为包含几本你喜欢的书籍 2.添加两本新的书籍到图书馆集合中&#xff0c;使用操作符 3.删除一本图书馆集合中的书籍&…

linux驱动-i2c子系统框架学习(1)

可以将整个 I2C 子系统用下面的框图来描述&#xff1a; 可以将上面这一 I2C 子系统划分为三个层次&#xff0c;分别为用户空间、内核空间和硬件层&#xff0c;内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层&#xff0c; 本篇主要内容就是介绍 I2C 子系统框架中…

鸿蒙系统崛起:开发者如何把握机遇、应对挑战并打造卓越应用体验?

在当今科技发展的浪潮中&#xff0c;鸿蒙系统&#xff08;HarmonyOS&#xff09;如一颗璀璨之星&#xff0c;正以迅猛之势崛起。随着其持续发展&#xff0c;鸿蒙系统在全球操作系统市场中已然崭露头角&#xff0c;呈现出与安卓&#xff08;Android&#xff09;和iOS分庭抗礼的态…

Scala入门基础(17)Set集

Set的定义Set的代码结构不可变与可变Set的区别Set常见操作 一.Set的定义 Set:集合 Set的特点&#xff1a;唯一&#xff08;元素不相同&#xff09; 二.Set的代码结构 val 变量名 Set[类型]&#xff08;元素1&#xff0c;元素2...&#xff09; &#xff08;演示&#xff09…

基于单片机的燃气报警阀门系统

本设计基于单片机的燃气报警阀门系统&#xff0c;燃气报警阀门系统采用STM32主控制器为核心芯片&#xff0c;外围电路由燃气传感器、OLED液晶显示模块、按键模块、蜂鸣器报警模块、电磁阀以及SIM800模块等模块组成。燃气传感器模块负责采集燃气浓度数据&#xff0c;采集完成由S…

揭秘云计算 | 2、业务需求推动IT发展

揭秘云计算 | 1、云从哪里来&#xff1f;-CSDN博客https://blog.csdn.net/Ultipa/article/details/143430941?spm1001.2014.3001.5502 书接上文&#xff1a; 过去几十年间IT行业从大型主机过渡到客户端/服务器&#xff0c;再过渡到现如今的万物互联&#xff0c;IT可把控的资…

qt QItemSelectionModel详解

1、概述 QItemSelectionModel是Qt框架中提供的一个功能强大且灵活的项选择模型类。它主要用于在用户界面中管理和操作用户选定的项&#xff0c;是实现交互式和响应式应用程序的重要组件。QItemSelectionModel能够帮助开发者创建用户友好和高效的多选列表、表格数据选择等应用场…