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

题目要求:

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

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

程序调试中遇到的bug

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

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

这个程序要学习的地方是

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

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

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

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

  其中x由用户键盘输入

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

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

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

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

时间: 2024-10-28 15:59:46

训练三:求任意整数的降序数的相关文章

C++程序设计实践指导1.3求任意整数降序数改写要求实现

改写要求1:动态生成单链表存储 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode { int data; struct LinkNode *next; }; class NUM { int n; public: NUM(int x) { n=x; } struct LinkNode * descrease(); void show(LinkNode* pHead) { LinkNo

递归求任意整数的根

如题,各位数字相加,不断加,加到一个数为止. 如24的根是6 39的根是3 代码: #include <iostream> #include <string> #include <cmath> using namespace std; int gen(int n) { if(n<10) { return n; } else { int x=0; do { x+=n%10; n=n/10; } while(n>0); return gen(x); } } in

28.求任意一个整数的十位上的数字

#include<iostream> using namespace std; int main() { int i,j,n; cout<<"please input an number :"<<endl; cin>>n; if(n/10<1) { cout<<0; }else { i=n/10; j=i%10; cout<<j; } return 0; } 28.求任意一个整数的十位上的数字

求任意多边形的面积(转)

原文地址:http://blog.csdn.net/sun_shine_/article/details/18799739 给定多边形的顶点坐标(有序),让你来求这个多边形的面积,你会怎么做?我们知道,任意多边形都可以分割为N个三角形,所以,如果以这为突破点,那么我们第一步就是把给定的多边形,分割为数个三角形,分别求面积,最后累加就可以了,把多边形分割为三角形的方式多种多样,在这里,我们按照如下图的方法分割: 图1 S点作为起始点(点1),a->e依次作为点2,3…….一个三角形的面积是怎样的呢

【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)

32.(数组.规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序:要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小.例如: var a=[100,99,98,1,2,3];var b=[1,2,3,4,5,40]; 首先,目标一定是先找到n个数字,使得数字和比总和的一半小,但是最接近. 思路一:开始看这道题跟之前学的动态规划很像,就想用动态规划来解.但是....做不出来........... 必须要选一半的数字让我头都大了. 思路二:

FLOyd算法 求任意最短路

此算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表在"Communications of the ACM"上.同年Stephen Warshall(史蒂芬·沃舍尔)也独立发表了这个算法.Robert W.Floyd这个牛人是朵奇葩,他原本在芝加哥大学读的文学,但是因为当时美国经济不太景气,找工作比较困难,无奈之下到西屋电气公司当了一名计算机操作员,在IBM650机房值夜班,并由此开始了他的计算机生涯. 作者:ahalei来源:51CTO博客|2014-03-26

[微软]有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小_利用排列组合思路解决_python版

(原题出自微软公司面试题)问题如下:有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小.例如:a=[100,99,98,1,2, 3]b=[1, 2, 3, 4,5,40] 题目是看到QQ群友发的,网上也百度了下目前已经有好几种解法了.写了半天有点晕,后面忽然想到中学时候数学里面的排列组合的方法.方法对于较短的list可行,长list组合情况太多,可能耗时太长或溢出. 1 from itertools im

求一个整数中二进制1的个数

题目:求一个整数二进制表示1的个数 第一版: 思路:如果一个整数与1做与运算,结果为1,那么该整数最右边一位是1,否则是0: int NumberOf1(int n) { int count = 0; while (n) { if (n&1)//如果一个整数与1做与运算的结果是1,表示该整数最右边是1,否则是0: { count++; } n = n>>1; } return count; } 缺点:因为代码当中有右移,当是负数的时候,要考虑符号位:如果一个正数,右移之后在最左边补n个

最短路径--弗洛伊德算法[求任意一对顶点间的最短路径]

转自大神:https://www.cnblogs.com/wangyuliang/p/9216365.html !!!!!!!!!!!!!!!!!!!!!!!!!注意             迪杰斯特拉算法和弗洛伊德算法(求最短路径) 都是有向图!!!!单边的 暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程. 上图中有4个城市8条公路,公路上的数字表示这条公路的长短.请注意这些公路是单向