在C中使用循环语句进行练习:使用do-while语句编写代码以反转数字

问题描述

我有一个任务(当前正在研究循环语句,所以我处于初学者阶段),它要求使程序反转整数,因此它必须具有 do语句。

输出应为(示例):

Enter a number: 4568
The reversal is: 8654

请记住,自从我关注本书以来,我已经学习并了解了非常基础的内容+选择和循环语句。我的选择非常有限,因此 no 数组。

这本书建议做一个do循环,将数字反复除以 10,直到达到 0,这就是我到目前为止所做的(代码未完成):

int main(void)
{
  int n,x;

  printf("Enter a number: ");
  scanf("%d",&n);

  printf("The reversal is: ");

  x = n % 10;

  printf("%d",x); /*outputs the last number digit in the first place*/ 

  do{



   ....
   n  /= 10;   /* for example if I divide the number 56222  by ten the output would come out as 
               5622 562 56 5*/
   ....

  }while (n!=0);



  return 0;
}

如您所见,我找到了一种将最后一位放在第一位的方法,但是 在这种非常有限的选择之后,我努力地想出如何将其余的数字除以10后再求反。

我应该在do语句中输入什么? 预先非常感谢。

解决方法


int main(void)
{
      
    int n,x;
    
    printf("Enter a number: ");
    scanf("%d",&n);
    
    printf("The reversal is: ");
    
    int rev = 0;     
    
    do{
      
        x = n % 10;
        rev = rev * 10 + x; 
        n  /= 10;
    
    }while (n!=0);
    
    printf ("%d",rev);
 
    return 0;
    
}

在这里,您需要一个新的整数rev,其初始值为0。让我们来 432的示例

n = 432

当您执行x = n%10 x = 2

因此,当您执行rev = rev * 10 + x rev为0且rev的值为2

n / = 10使n = 43

->所以在下一次迭代中

n = 43 x = n%10导致x = 3

rev值现在是2

所以rev = rev * 10 + x导致2 * 10 + 3

so rev = 23

n / = 10导致n = 4

->在上一次迭代中n = 4 x = n%10导致x = 4 rev值现在是23

so rev = rev * 10 + x导致23 * 10 + 4 so rev = 234

n / = 10导致n = 0

因此,当您打印rev时,您会得到432的234的答案