有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1
不断重复这样的运算,经过有限步之后,一定可以得到1
牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1
#include <stdio.h>
int main() {
int n = 0;
int count = 0;
stare:
scanf("%d", &n);
if(n>0&&n<=100)
{
while( n != 1 )
{
if( n % 2 ==0 )
{
n = n / 2;
}
else
{
n = n * 3 + 1;
}
count++;
}
}
else {
printf("输入n值不在0~100以内,请重新输入:");
goto stare;
}
printf("%d",count);
return 0;
} /*思路 : 分两种情况,一种是偶数,一种是奇数
但是如果是奇数的话,进行乘3然后加1操作之后
还是偶数。
使用 count 来判断 进入循环多少次 就能得出计算了几步
*/
# include <stdio.h>
int main ()
{
int n = 0;
int count = 0;
scanf("%d",&n);
while (n!=1) //当n不为1的时候就一直进行循环
//当n为1的时候退出循环
/*一旦 n 变为 1,条件 (n != 1) 不再为真,循环就会结束。*/
{
if (n%2==0) //判断偶数
{
n=n/2;
}
else //判断奇数
{
n = (3*n)+1;
}
count++;// 无论 n 是奇数还是偶数,步数都加 1
}
printf("%d",count);
return 0;
} #include <stdio.h>
int main()
{
int a = 0;
int count = 0;
scanf("%d", &a);
do
{
if (a % 2 == 0)
{
a /= 2;
count++;
}
else
{
a = a * 3 + 1;
count++;
}
} while (a != 1); //a==1时跳出循环
printf("%d\n", count);
return 0;
} #include <stdio.h>
int main() {
int n, cnt = 0;
while (scanf("%d", &n) != EOF) {
while (n != 1) {
if (n % 2 == 0) {
n /= 2;
cnt++;
} else {
n = n * 3 + 1;
cnt++;
}
}
printf("%d\n", cnt);
}
return 0;
}
int main(){
int n,b=0;
scanf("%d",&n);
while(n!=1){
n%2==0?(n=n/2):(n=n*3+1);
b++;
}
printf("%d",b);
return 0;
}