试图反转整数中的数字顺序,显示额外的数字

时间:2012-02-08 18:13:29

标签: c

首先,这是一个家庭作业,我对C语言编程很陌生。我想要完成的是用户输入一个整数,然后该整数的每个数字都打印在一个新行上,如下所示:

Enter integer: 1234
The digits are:
1
2
3
4

我的问题是,无论你输入什么整数,由于某种原因,最后会添加7和4。下面是我的代码和问题的一个例子:

#include <stdio.h>
#define Success 0

int main()
{ int integer;
  int reverse;
  int digit;

  printf("Enter Integer: ");
  scanf("%d", &integer);

  /* Reverse the numbers in the integer */
  while (integer != 0) { 
    digit = integer%10;
    reverse = (reverse * 10) + digit;
    integer = integer / 10;
    }

  /* Print the numbers of the reverse integer, in reverse order */
  while (reverse != 0) {
    digit = reverse%10;
    printf("%d\n", digit);
    reverse = reverse / 10;
    }

return Success;
}

问题示例:

Enter Integer: 12345
1
2
3
4
5
7
4

任何人都有任何关于可能导致这种结果的想法?通过打印reverse我已将其缩小到第一个while循环的问题。

6 个答案:

答案 0 :(得分:4)

未初始化反向。这意味着当您开始触摸该变量时,该变量中可能存在任何值。声明后将其设置为0,看看会发生什么。

答案 1 :(得分:3)

一个问题是reverse需要初始化:

reverse = 0;

答案 2 :(得分:2)

提示:digitreverse的值始终是您期望的值吗?尝试每次迭代打印出来,这样你就可以看到。或者,更好的是,学习使用平台的调试器,然后单步执行它。


剧透:你可能会通过上面的提示自己解决这个问题。 但是......在开始之前你没有将reverse初始化为零。那将是一个好主意。

答案 3 :(得分:1)

检查reverse的初始值(提示:没有一个)。现在它开始是垃圾。

答案 4 :(得分:1)

我实际上会将int打印到字符串中,并以相反的顺序迭代字符串来反转它。有关详细信息,请参阅sprintf。

答案 5 :(得分:0)

我会将整数扫描成一个字符串,使用strlen函数确定其长度,然后向后遍历它。