循环内外的不同整数值

时间:2018-03-09 14:50:37

标签: c cs50

我想使用在循环内创建的整数,但是当我在循环外部使用它时,它提供的值与内部不同。我需要从整数中提取每个第二个数字:17121然后将其乘以2

在这种情况下,我通过数字72下面的循环提取,并乘以2,得到int sum = 414的值。

int cardNum = 17121;
int otherDigits;
int sum = 0;

do {
    otherDigits = cardNum % 100 / 10 * 2;
    cardNum = cardNum / 100;
    sum = otherDigits;
    printf("%i", sum);
} while (cardNum > 99);

当我尝试在循环外使用int sum;时出现问题,因为值int sum;变为14而不是414

下一步是将提取的数字添加为4 + 1 + 4,但是在循环之外,我只能添加值141 + 4的数字。 不明白为什么int sum;的值在循环内外是不同的。

3 个答案:

答案 0 :(得分:4)

在循环中,sum的值先是4,然后是14.打印时,这会给出字符串" 414"因为打印件之间没有空隙。这可能会让你觉得循环内部和外部的值不同,但实际上它是相同的。

答案 1 :(得分:2)

您得到输出414,因为您在循环内打印时没有任何类型的分隔符。

循环迭代两次:第一次打印4,然后第二次打印14。当那些一起运行时,你得到414

使用尾随换行符进行打印,您会看到它有效,在一行打印4,在另一行打印14

sum在循环的最后一次迭代内和循环之后的最终结果是14

答案 2 :(得分:1)

你需要将以前的数字“移动”到下一个数字之外:

do
{
  otherDigits = cardNum % 100 / 10 * 2;
  cardNum = cardNum / 100;
  if (otherDigits > 9)
    sum = sum * 100;
  else
    sum = sum * 10;
  sum = sum + otherDigits;
  printf("%i", sum);
}
while (cardNum > 99);