当前位置:首页 » 《随便一记》 » 正文

【C++】日期类基础题

0 人参与  2024年10月16日 16:41  分类 : 《随便一记》  评论

点击全文阅读


                                个人主页:CSDN_小八哥向前冲~

                                 所属专栏:C++入门


一些C++基础题目,帮你巩固一下!

目录

关于内存问题

栈和堆基础问题

计算日期到天数的转换

日期差值

日期累加

打印日期


关于内存问题

答案:D     B

第一题:

classA构造了五次,但是代码是delete pclassa,而不是delete [ ]pclassa,只会析构一次,但往往会引发程序崩溃!

第二题:

由于是内置类型,delete 相当于free,所有并不会造成内存泄漏,但是如果是自定义类型,就会程序崩溃!所以不建议!

栈和堆基础问题

答案:C     D

第一题:

A.栈区主要存在局部变量和函数参数,其空间的管理由编译器自动完成,无需手动控制,堆区是自己申请的空间,在不需  要时需要手动释放

B.栈区先定义的变量放到栈底,地址高,后定义的变量放到栈顶,地址低,因此是向下生长的,堆区则相反.

C.频繁的申请空间和释放空间,容易造成内存碎片,甚至内存泄漏,栈区由于是自动管理,不存在此问题.

D.32位系统下,最大的访问内存空间为4G,所以不可能把所有的内存空间当做堆内存使用,故错误.

第二题:

A.堆大小受限于操作系统,而栈空间一般有系统直接分配

B.频繁的申请空间和释放空间,容易造成内存碎片,甚至内存泄漏,栈区由于是自动管理,不存在此问题

C.堆无法静态分配,只能动态分配

D.栈可以通过函数_alloca进行动态分配,不过注意,所分配空间不能通过free或delete进行释放

计算日期到天数的转换

题目:【牛客】日期到天数转换

思路:

比如日期:2012-12-31,我们可以将2012-1-01一直累加到2012-12-31,同时用变量记录差值,就能得到这个日期是这一年的第几天。

但是又有闰年平年的问题,所有我们可以用一个数组管理每个月的天数!

代码:

#include <iostream>using namespace std;int main() {int year = 0, month = 0, day = 0,sum=0;cin >> year >> month >> day;    int GetMonthday[13]={0,31,28,31,30,31,    30,31,31,30,31,30,31};    //判断闰年    if(year%4==0&&year%100!=0||year%400==0)        GetMonthday[2]=29;    //开始累加        for(int i=0;i<month;i++)        sum+=GetMonthday[i];    sum+=day;    cout<<sum;    return 0;}

日期差值

题目:【牛客】日期差值

思路:

给定了两个日期,让我们求它们之间的差值天数,我们可以将小的日期一直累加到大的日期,同时用变量记录差值,就能得到这个差值天数。

题目输入的是一串数字,我们可以用除和取模的方法得到年月日。

写一个日期类,重载减法,加加等函数。

代码:

#include <iostream>#include <iterator>#include <linux/limits.h>using namespace std;class Date{public:    friend Date DateCheck(int date);    Date(int year=0,int month=0,int day=0)        :_year(year)        ,_month(month)        ,_day(day)        {}    int GetMonthDay()    {        int MonthDay[13]={0,31,28,31,30,31,        30,31,31,30,31,30,31};        if(_month==2&&(_year%4==0&&_year%100!=0)||(_year%400==0))            return 29;        return MonthDay[_month];    }    bool operator==(Date d)    {        return _year==d._year&&_month==d._month&&_day==d._day;    }    bool operator!=(Date d)    {        return !(*this==d);    }    bool operator>(Date d)    {        if(_year>d._year) return true;        else if(_year==d._year)        {            if(_month>d._month) return true;            else if(_month==d._month)            {                if(_day>d._day) return true;            }        }        return false;    }    Date& operator++()    {        _day++;        if(_day>GetMonthDay())        {            _month++;            _day=1;            if(_month==13)            {                _year++;                _month=1;            }        }        return *this;    }    int operator-(Date d)    {        Date max=*this,min=d;        int sum=0,flage=1;        if(d>*this)         {            flage=-1;            max=d;            min=*this;        }        while(min!=max)        {            ++min;            sum++;        }        return sum;    }private:    int _year;    int _month;    int _day;};Date DateCheck(int date){    Date d;    d._year=date/10000;    d._day=date%100;    d._month=date/100%100;    return d;}int main() {    int date1,date2;    cin>>date1>>date2;    Date d1=DateCheck(date1);    Date d2=DateCheck(date2);    cout<<d2-d1+1;    return 0;}

日期累加

题目:【牛客】日期累加

思路:

给定一个日期,让其加一个天数,计算出新的日期,我们可以将这个日期的日加这个天数,再去将这个新日期计算成合法。

但是又有闰年平年的问题,所有我们可以用一个数组管理每个月的天数!

如果这个新的日期这个月的天数大于合法天数,那么就进行月进位,如果月进位到大于12,就进行年进位,重复操作,直到日期合法。

代码:

#include <iostream>using namespace std;int GetMonthDay(int year, int month) {    int MonthDay[13] = { 0, 31, 28, 31, 30, 31,                         30, 31, 31, 30, 31, 30, 31                       };    if (month == 2 && (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))        return 29;    return MonthDay[month];}int main() {    int m, year, month, day, k;    cin >> m;    while (m--) {        cin >> year >> month >> day >> k;        day += k;        while (day > GetMonthDay(year, month)) {            day -= GetMonthDay(year, month);            month++;            if (month == 13) {                year++;                month = 1;            }        }        if (month < 10 && day < 10)            cout << year << "-" << 0 << month << "-" << 0 << day<<endl;        else if (month < 10)            cout << year << "-" << 0 << month << "-" << day<<endl;        else if (day < 10)            cout << year << "-" << month << "-" << 0 << day<<endl;        else            cout << year << "-" << month << "-" << day<<endl;            }    return 0;}

打印日期

题目:【牛客】打印日期

思路:

给定一个年份和天数,计算这个年份的日期。

同样的道理,我们就是要将这个日期合法话而已,和上一道题异曲同工之处,不做过多介绍!

只要注意一下输出形式而已!

代码:

#include <iostream>using namespace std;int GetMonthDay(int year, int month) {    int MonthDay[13] = { 0, 31, 28, 31, 30, 31,                         30, 31, 31, 30, 31, 30, 31                       };    if (month == 2 &&((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)))            return 29;    return MonthDay[month];}int main() {    int year,n;    while (cin >> year >> n) {        int month = 1, day = n;        while (day > GetMonthDay(year, month)) {            day -= GetMonthDay(year, month);            month++;            if (month == 13) {                year++;                month = 1;            }        }        if (month < 10 && day < 10)            cout << year << "-" << 0 << month << "-" << 0 << day << endl;        else if (month < 10)            cout << year << "-" << 0 << month << "-" << day << endl;        else if (day < 10)            cout << year << "-" << month << "-" << 0 << day << endl;        else            cout << year << "-" << month << "-" << day << endl;    }    return 0;}

我们下期见哦!


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/172709.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1