是小狐狸啊 2016-05-19 13:34 采纳率: 63.6%
浏览 2525
已采纳

C++ 关于bool函数的一个小问题

图片说明

/*我写的这个程序是可以运行的,但我不清楚我写的bool函数是否符合题意,因为输入不符值后输出的是三串长长的数字...麻烦大神们帮我看一下需不需要改正~可以的话,可以详细讲讲bool函数的作用和用法吗?对这个函数还是不太熟悉...*/

    class CDate{
    public:
            bool set(unsigned int year,unsigned int month,unsigned day);
            void print();
    private:
            unsigned int m_nYear;
            unsigned int m_nMonth;
            unsigned int m_nDay;
    };
    bool CDate::set(unsigned int year,unsigned int month,unsigned day)
    {
            if((month>12)||(day>31))
                    return false;
            else
            m_nYear=year;
            m_nMonth=month;
            m_nDay=day;
            return true;
    }
    void CDate::print()
    {
            cout<<m_nYear<<" "<<m_nMonth<<" "<<m_nDay;
    }
    int main(int argc, char* argv[])
    {
            CDate today;
            today.set(2016,44,19);
            today.print();
        system("pause");
            return 0;
    }
  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-05-19 13:53
    关注

    1.输出一串很长的数是因为你没有初始化过,帮楼主加了一个构造函数
    2.set函数里else分支应该加上括号,虽然加不加结果是一样的
    3.既然set有返回值,就应该在main函数里接收该返回值,并且对于不同的返回值进行一些相应的处理
    4.bool参考:http://www.cnblogs.com/JarvisChu/archive/2011/07/03/2752472.html

    #include<iostream>
    using namespace std;
    class CDate{
    public:
        CDate():m_nYear(0),m_nMonth(0),m_nDay(0){}
        bool set(unsigned int year,unsigned int month,unsigned day);
        void print();
    private:
        unsigned int m_nYear;
        unsigned int m_nMonth;
        unsigned int m_nDay;
    };
    bool CDate::set(unsigned int year,unsigned int month,unsigned day)
    {
        if((month>12)||(day>31))
            return false;
        else
        {
            m_nYear=year;
            m_nMonth=month;
            m_nDay=day;
        }
    
        return true;
    }
    void CDate::print()
    {
        cout<<m_nYear<<" "<<m_nMonth<<" "<<m_nDay;
    }
    int main(int argc, char* argv[])
    {
        CDate today;
        bool set_res = today.set(2016,44,19);
        if(!set_res)
            cout << "set error" << endl;
        today.print();
        system("pause");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧