注册 登录
编程论坛 C语言论坛

PAT真题时提示有部分正确,问错误地方在哪?

沐涼 发布于 2020-02-10 18:04, 2178 次点击
PAT乙级真题:
#include <stdio.h>
int getTime(int n){
    int count = 0;
    while(n != 1){
        if(n%2 == 0){
            n /= 2;
        }else{
            n = (3*n+1)/2;
        }
        count++;
    }
    return count;
}

int main(int argc, char** argv) {
    int n;
    scanf("%d",&n);
    n = getTime(n);
    printf("%d",n);
    return 0;
}



#include<stdio.h>
int main(){
    int n,i=0;
    scanf("%d",&n);
    while(n>1&&n<1000){
        if(n%2!=0){
            n=(3*n+1)/2;
            i++;
        }
        if(n%2==0){
            n=n/2;
            i++;
        }
    }
    printf("%d",i);
}
只有本站会员才能查看附件,请 登录
3 回复
#2
叶纤2020-02-10 18:49
程序代码:
#include<iostream>
int cs()
{   int n=0;
    std::cin>>n;
    return n;
}
int as(int n)
{   int count=0;
    while(n!=1)
    {
        if(n%2==0)
        {   n= n/2;
        }
        else
        {   n=(3*n+1)/2;
        }
        ++ count;
    }
    std::cout<<count;
}
int main()
{   as(cs());
}
   

没仔细看你的代码,在我有限的认知里不应该存在两个主函数
#3
纯蓝之刃2020-02-10 19:21
程序代码:
#include<stdio.h>
int main()
{
    int n,i=0;
    scanf("%d",&n);
    while(n!=1)        //把循环条件改掉,否则假如你输入999,那么一次就退出循环了
    {
        if(n%2!=0)
        {
            n=(3*n+1)/2;
            i++;
        }
        if(n%2==0)
        {
            n=n/2;
            i++;
        }
    }
    printf("%d",i);
}

#4
沐涼2020-02-11 18:51
二楼,第二个是正确的。三楼,我知道了。
1