逐渐打印整数的最后一位数字?

时间:2016-03-29 14:49:07

标签: c++ loops while-loop logic

我正在尝试打印用户输入的整数的最后一位数字。 例如,如果用户输入5432 我的输出是 2 32 432 5432。 我已经设法使用while循环编写代码,但是我不明白为什么我的循环没有终止,请帮我终止它?

void main()
{
    //declare variables
    int input, output, modulu = 10;
    //read input from user
    cout << "Please enter a number: ";
    cin >> input;
    int test = input % modulu;   // test checks if all the number has been printed
                                 //disect number
    while (test > 0);
    {
        output = input % modulu;
        modulu = modulu * 10;
        cout << endl << output << endl;
        test = input % modulu;
    }
}

4 个答案:

答案 0 :(得分:1)

test始终是&gt; 0表示任何输入&gt; 0

你可以通过不同的循环实现相同的目标:

int input, modulu = 1;
cout << "Please enter a number: ";
cin >> input;
do {
    modulu *= 10;
    cout << endl << (input % modulu) << endl;
} while ((input % modulu) != input);

答案 1 :(得分:0)

只需 test = input / modulu; 而不是test = input%modulu;

答案 2 :(得分:0)

对于初学者来说,在while语句后面有一个分号。

if($_SERVER["REQUEST_METHOD"]=="POST")
{

    $file=$_FILES["upload"]["name"];
    $folder='uploads/';
    $err=$_FILES["upload"]["error"];
    $target=$folder.$file;
    $temp=$_FILES["upload"]["tmp_name"];
    echo $err;
    move_uploaded_file($temp, $target);
}

因此,如果输入的数字的最后一位不等于0,则循环是无限的。

但是,如果删除分号,则条件无效,因为while (test > 0); ^^^ 仅在最后一位数等于0的情况下。

考虑到C ++中的test == 0具有返回类型main的帐户。

程序可以按以下方式查看

int

例如,如果要输入

#include <iostream>

int main()
{
    while ( true )
    {
        const unsigned int Base = 10;

        std::cout << "Please enter a non-negative number (0-exit): ";

        unsigned int x;

        if ( !( std::cin >> x ) || x == 0 ) break;

        unsigned int y = x;
        unsigned int modulo = 1;

        do
        {
            modulo *= Base;

            std::cout << x % modulo << std::endl;
        } while ( y /= Base );

        std::cout << std::endl;
    }
}    

然后输出看起来像

123456789
0

答案 3 :(得分:-1)

你的第一个问题是:

while (test > 0);

;终止while语句,代码将永远保留。换句话说 - 以下所有代码都不会被执行。删除;

你的第二个问题是你处理test的方式 - 不要采用模数而是除以10。像这样:

int main()
{
    //declare variables
    int input, output, modulu = 10;
    //read input from user
    cout << "Please enter a number: ";
    cin >> input;
    int test = input;  // <------------- Just make test equal to the input
    while (test > 0)   // <------------- The ; removed
    {
        output = input % modulu;
        modulu = modulu * 10;
        cout << endl << output << endl;
        test = test / 10;       // <----------- Divide by 10
    }

    return 0;
}

请注意,上面的代码在使用零时存在一些问题,例如: 1001会输出1 1 1 1001而不是1 01 001 1001

您可以使用string代替int

采用完全不同的方法来解决这个问题

像:

int main()
{
    //declare variables
    string input;

    //read input from user
    cout << "Please enter a number: ";
    cin >> input;
    cout << input << endl;
    int size = input.size();
    int tmp = size;
    while (tmp >= 0)
    {
        for (int t = tmp; t < size; t ++) cout << input[t];
        cout << endl;
        --tmp;
    }

    return 0;
}