新手求助
代码如下,求求解释以下运行原理,比如count++是是啥,计算的不是n的值吗?int main()
{
int n,count=0;
scanf("%d",&n);
while(n>1)
{
if(n%2==1)
n=n*3+1;
else
n/=2;
count++;
}
printf("%d\n",count);
return 0;
} 哦,是我搞错了。这里应该是一个类似于中学数学题的东西(做过类似的),就是一个程序按思路运算,如果n是单数,n=3n+1,不然n=n除以2,直到n=1为止。
结果输出进行了多少次运算,count是用来计数的,所以输出count 这个程序就是计算2的几次方等于n,c中除法运算都是地板除(向下取整),所以任何一个整数进行循环地板除2都会得到0。
count++等于count=count+1,每进行一次地板除,count就+1,最后count等于多少,n就是2的count次方(因为是地板除,所以结果只会是整数)
本帖最后由 大马强 于 2021-8-2 08:32 编辑
楼上正解
我试了试,输入不是2的幂集就会出现问题{:10_277:} 你可以试着把所有变量列出来,像这样,然后就会发现这出问题了哈哈哈
青出于蓝 发表于 2021-8-2 10:13
哦,是我搞错了。这里应该是一个类似于中学数学题的东西(做过类似的),就是一个程序按思路运算,如果n是 ...
是的 count++的意思是count=count+1.
这段代码的意思是你输入一个数n,如果n>1,就进行运算。如果n除以2的余数是1,就进行n=n*3+1的操作;如果不是,就进行n=n/2的操作。直到n<1停止。同时每运行一次count就加一,记录了一共运行了多少次。 .. 这种计算有什么意义吗?本质上是判断一个数被2除的次数,但余数为1,干嘛要n=n*3+1呢,这样做之后的数与与除2的商有什么关联呢?愿意请教大神, 这个题目好像是一个你无论输入什么值,最后都会变成1。count是用来计数的,一共经历多少步。
页:
[1]