训练三:求任意整数的降序数

题目要求:

   对一个五位的任意整数,求出琦降序数

   算法提示:将整数的每一位分离到一维整形数组中,再将数组a的元素按照降序排列,最后输出数组元素值,

   试建立一个NUM类,完成上述操作

#include<iostream>
using namespace std;

class NUM
{
        public:
                NUM(int x);//定义一个带参数的构造函数
                void NUM_fengjie();
                void NUM_paixu();
                void NUM_display();

        private:
                int a[5];
                int n;
};

NUM::NUM(int x)
{
        int i;
        for(i = 0;i<5;i++)
                a[i] =0;
        n = x;//分解数值

}

void NUM::NUM_fengjie()
{
        int i=0,j;
        int x = n;
        while(x)//分解数值的算法
        {
                a[i] = x%10;
                x = x/10;
                i++;
        }
}

void NUM::NUM_paixu()
{
        for(int i = 0;i<5;i++)//冒泡法排序
                for(int j = i;j<4;j++)
                {
                        if(a[j]>a[j+1])
                        {
                                int m;
                                m = a[j];
                                a[j]= a[j+1];
                                a[j+1] = m;
                        }
                }
}


void NUM::NUM_display()
{
        for(int i = 0;i<5;i++)
                cout<<a[i]<<"  ";
}
int main()
{
        int x;
        cout <<"please input the num:";
        cin >>x;//用户想输入的数值
        NUM num(x);//初始化变量
        num.NUM_fengjie();
        num.NUM_paixu();
        num.NUM_display();

        return 0;
}
View Code

程序调试中遇到的bug

错误:15行出现游离的‘ ,这个是程序输入时候多输入了 ’

错误:63是忘记打分号,错误45:是if语句中忘记输入()的一边

 

这个程序要学习的地方是

【1】带参数的构造函数,这个比较重要:构造函数可以携带参数,

  比如程序中出现的 NUM(int x);因此在定义NULL  num这类的时候

  要变成 NULL num(5)初始化,

  例如要想动态改变,可以初始化中加入变量,比如NULL num(x)

  其中x由用户键盘输入

【2】构造函数不能被用户调用,因此构造函数中我还没发现有cin这东西,

   大概是系统调用构造函数的时候是在创立对象的一瞬间,因此,在需要

   人为改变对象中的数值的时候,往往采用方式【1】这样的做法

 

posted @ 2014-08-05 10:17  跨七海的风  阅读(324)  评论(0编辑  收藏  举报