首页 > 代码库 > 训练三:求任意整数的降序数

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

题目要求:

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

   算法提示:将整数的每一位分离到一维整形数组中,再将数组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】这样的做法