整数类型的数据的逐个输出

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YL970302/article/details/79517347



对于一个整型数据来说要想逐个输出就要与10以及该整数除以10以后到底是取余数还是取商联系起来下面通过具体事例来解释:

将整型数据a = 1234按逆序输出:

解题步骤:1、用函数名为Digit的函数用count++计数求出a的位数

          2、PrintfReverse(int m )通过调用Digit函数通过for循环取模运算然后去尾输出所谓的去尾就是输出末位(m%10),但这就出现了这个数到底是负数呢还是正数,如果是整数可以直接输出,但经过判断后如果是负数就要在每次输出数字之前先输出一个负号;

  1. int PrintfOrder(int x)通过调用Digit函数得到整数的位数然后进行for循环得到10的倍数power然后进行while循环去头操作,所谓的去头就是去掉整数的第一位,然后进行power = power/10操作,再继续while循环直到power == 0为止正负号的问题同上

  2. 源代码如下:

    #include<iostream>
    using namespace std;
    
    int Digit(int n)
    
    {
    
    int count = 0, i = 0;
    
    do
    
    {
    
    n = n/10;                  
    
    count +=1;                  //  计算整数的位数
    
    }while( n != 0 );
    
    return count;
    
    }
    
    
    int PrintfReverse(int m )           //  逆序输出
    
    {
    
    int t = 0, count = 0;
    
    count = Digit(m);                  // 调用函数
    
    if( m < 0 )                        //// 判断整数是正数还是负数
    
    {
    
    m = - m;
    
    }
    
    for( int i = 0;i < count ; i++ )
    
    {
    
    t = m%10;                    // 取模求出最后一位 
    
        m = m/10;                    // 取商求出剩余的几位
    
        cout<<t<<" ";                // 添加负号逆序输出
    
    }
    
    cout<<endl;
    
    return 0;
    
    }
    
    
    int PrintfOrder(int x)
    
    {
    
    int i = 0, t = 0, count = 0, power = 1;
    
    count = Digit(x);                         // 调用函数
    
    if( x < 0 )                               // 判断整数的正负性
    
    {
    
    x = -x;
    
    }
    
    for( i = 0; i < count-1; i++)
    
    {
    
    power *= 10;
    
    }
    
    while( x != 0 )
    
    {
    
    t = x / power;                       
    
            x = x % power;                      // 去尾操作
    
    power = power/ 10; 
    
    cout <<t<< " ";
    
    }
    
    cout<<endl;
    
    return 0;
    
    }
    
    int main()
    
    {
    
    int a = 0;
    
    cin>>a;
    
     cout<<Digit(a)<<endl; 
    
      PrintfReverse(a);
    
      PrintfOrder(a);
    
    return 0; 
    }

猜你喜欢

转载自blog.csdn.net/YL970302/article/details/79517347