#include <iostream>
int main() {
int nr;
std::cin>>nr;
while (nr > 0) {
int digit = nr % 10;
nr /= 10;
std::cout<<digit;
}
return 0;
}
有人可以解释这个程序的工作流程,基本上输入“32”输出“23”,这很好,这就是我的目标,我的问题是,为什么它说“23”而不是“2” “,如果我只说”cout digit“,为什么最后会添加”3“。我得到“3”来自“nr / = 10”,但是为什么它会在“2”附近输出以回答“23”的答案?
答案 0 :(得分:1)
我得到了&#34; 3&#34;来自
nr /= 10
在程序进入打印3之前,它会打印2,这是将32除以10后得到的余数。
这种划分的结果确实是3.接下来的循环迭代将其拾取并打印出来,因为3 % 10
是3。
答案 1 :(得分:1)
while进行两次迭代。它测试条件是否为真,执行内部的操作。数字取值2,nr变为3,输出2.然后第二次迭代,nr仍大于0,因此数字变为3,nr变为0,输出3.条件不再满足,因此退出循环。 (使用23作为输入,即)
答案 2 :(得分:0)
您的代码如下工作(假设您已输入数字32,因此变量 nr 为32)。
while(32 > 0)
结果:是真的。
由于余数(%)操作,int digit = nr % 10;
结果 数字现在包含值 2 。
nr /= 10;
结果: nr 现在包含值 3 ,因为 32/10 会产生 3.2 这是一个浮点数,但是因为你要分配它 数字为整数 隐式转换 为数字 3 。
std::cout<<digit;
结果: 2(变量数字自余数操作 2后仍未受影响。)
while(3 > 0)
结果: true(再次调用while循环中的条件,变量 nr 3 )。
int digit = nr % 10;
结果: 数字现在包含值 3 ,因为 3%10 = 3 。
nr /= 10;
除了while循环将终止之外,对流程的任何更改都不再相关。
std::cout<<digit;
结果: 3(因为数字变量现在 3 )。 因此,完整输出将 23 。
答案 3 :(得分:0)
因为while循环意味着重复循环中的代码,直到不再满足条件。因此,对于两位数字,print语句将执行两次。