使用 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)
Previous: do-while 循环
Next: continue 语句