gpt4 book ai didi

c - 为什么这个循环有效?

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:31 25 4
gpt4 key购买 nike

我希望有人能解释为什么这个程序有效。我是 C 的初学者。该程序以相反的方式返回用户输入的数字。(例如 1234 = 4321)。如果 reverse 初始化为零那么为什么第 7 行有意义?对不起标题,不知道怎么问。

int n, reverse=0, rem;
printf("Enter an integer: ");
scanf("%d", &n);
while(n!=0)
{
rem=n%10;
reverse=reverse*10+rem;
n/=10;
}

最佳答案

代码利用了使用整数运算符 %/和 * 的方法:

  • 获取数字最右边的小数位:1234 % 10 == 4
  • 删除数字最右边的小数位:1234/10 == 123
  • 在数字的右侧添加一个数字:123 * 10 + 4 == 1234

使用它们重复地从 n 中取出数字并将它们推到 reverse 上:

123 0
12 3
1 32
0 321

手动完成代码,它应该是有意义的。取初始值 n == "123"。

Is n zero? No, so go into the loop.
rem = n%10 == 123 % 10 == 3
reverse = reverse * 10 + rem == 0 * 10 + 3 == 3
n = n/10 == 123/10 == 12

Is n zero? No, so loop around.
rem = n%10 == 12 % 10 = 2
reverse = reverse * 10 + rem == 3 * 10 + 2 == 32
n = n/10 == 12/10 = 1

Is n zero? No, so loop around..
rem = n%10 == 1 % 10 = 1
reverse = reverse * 10 + rem == 32 * 10 + 1 == 321
n = n/10 == 1/10 = 0

Is n zero? Yes, so leave the loop.
reverse == 321

或者,从零输入重新开始:

Is n zero? Yes, so leave the loop.
reverse == 0

这个程序毫无意义,但值得一提的是,同样的原则也适用于其他基数,例如 16(十六进制)和 2(二进制)——如果您最终进行了某些类型的编程,那将很有用。

关于c - 为什么这个循环有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22177971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com