【无标题】PAT作业1001 害死人不偿命的(3n+1)猜想

在这里插入图片描述
题目要求简要概述:输入一个小于1000的正整数,如果该正整数为奇数,进行2/n的运算,如果为偶数,进行(3n-1)/2的运算,反复进行计算,直至n=1后,输出运算的次数。

解题方法:
1,定义两个整形变量,分别用于输入n,记录运算次数(int n,index=0),最终输出的即为index。
2,注意在n=0或1的情况下,要分开讨论。
(1)定义bool类型,用于充当循环条件。
(2)循环开始,并判断n=1,0的情况。
(3)再判断n为奇数或偶数的情况,依据题意进行运算,并记录运算次数。
3,打印运算次数(输出答案)
4,结束函数

代码:

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int n, index = 0;    //定义两个int变量,分别用于输入样例与输出次数
    scanf("%d",&n);
    bool flag = false;    //定义变量,用与while函数的条件判断
    if(n!= 0)flag = true;     //对n=0进行判断
    while(flag=true&&n!=1){    //对n=0,1进行判断    
        if(n%2==0){      //运用if函数对n的不同情况进行判断,这里是在n为偶数情况下进行运算
            n=n/2;
            index++;
        }
        else{       //n在奇数情况下进行运算
            n=(3*n+1)/2;
            index++;
        }
    }
    printf("%d",index);     //输出运算次数
    return 0;
}

在这里插入图片描述
这样我们就完成了,有更好的方法欢迎评论,有错误希望大家指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值