大炸炸 发表于 2021-4-29 22:46:42

求助这段代码在牛客上输出的结果和在DEVC++上输出的结果怎么不一样

今天在牛客上做题
题目:链接:
有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1
不断重复这样的运算,经过有限步之后,一定可以得到1
牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1



我的代码:#include<stdio.h>
int main()
{
        int a,b,c,i;
        scanf("%d",&a);
        if(a!=1)
        {
                while(a>1)
                {
                        if(a%2==0)
                        {
                                a=a/2;
                                ++i;
                        }
                        else
                        {
                                a=a*3+1;
                                ++i;
                        }
                       
                }
        printf("%d",i);
        }
        else
        printf("1");
}
输入3时
在DEV上是7;
在牛客上的自测是8.
求问原因

洋洋痒 发表于 2021-4-30 06:54:17

整型不赋值    有的编译器默认值为0 或者null,有的是一个非常大的负值,或者是最小的一个数!一般都会定义的时候初始化下!!
你的整数 i 没有赋值,所以两种地方结果不一样
我猜是这样
你给 i 赋值0再试试结果

大炸炸 发表于 2021-5-4 20:00:31

洋洋痒 发表于 2021-4-30 06:54
整型不赋值    有的编译器默认值为0 或者null,有的是一个非常大的负值,或者是最小的一个数!一般都会定义 ...

ok这次对了,谢谢大佬
页: [1]
查看完整版本: 求助这段代码在牛客上输出的结果和在DEVC++上输出的结果怎么不一样