使用 do-while 循环翻转正整数数字顺序

使用 do-while 循环翻转正整数数字顺序

比如原来是 12345,转换后是 54321。

算法如下:

把这个数 12345,设 r = 0。

  • 12345 % 10 得 1234 余 5,然后让 r * 10 + 5 保存到变量 r
  • 1234 % 10 得 123 余 4,然后让 r * 10 + 4 得 54 保存到 r
  • 123 % 10 得 12 余 3,然后让 r * 10 + 3 得 543
  • 12 % 10 得 1 余 2,然后让 r * 10 + 2 得 5432
  • 1 % 10 得 0 余 1,然后让 r * 10 + 1 得 54321

当商为 0 的时候就停止循环。

#include <stdio.h>

int main(void)
{
    int number = 0;                      /* The number to be reversed */
    int rebmun = 0;                      /* The reversed number       */
    int temp = 0;                        /* Working storage           */

    /* Get the value to be reversed */
    printf("\n输入一个正整数: ");
    scanf(" %d", &number);

    temp = number;                       /* Copy to working storage  */

    /* Reverse the number stored in temp */
    do
    {
        rebmun = 10 * rebmun + temp % 10;    /* Add the rightmost digit    */
        temp = temp / 10;                    /* Remove the rightmost digit */
    }
    while (temp);                        /* Continue while temp > 0   */

    printf("\n这个数 %d 翻转后是 %d \n",
            number, rebmun );
    return 0;
}Code language: PHP (php)

这个程序 do-while 是最适合的,因为任何数都至少有一位数字。用取模运算符 % 除以 10 的余数,可以得到最右边的数字。

任何非零整数都会转换为 true,布尔值 false 对应 0。

#include <stdio.h>

int main(void)
{
    int number = 0;
    printf("\n输入一个正整数: ");
    scanf("%d", &number);

    int r = 0;
    int s = 0;
    do
    {
        s = number / 10;
        r = r * 10 + number % 10;
        number = s;
    } while(number != 0);

    printf("%d", r);

    return 0;
}Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注