C语言 为什么用函数不能通过 不用函数却能AC?

P1035 [NOIP2002 普及组] 级数求和

yuncheyao11 @ 2022-12-12 19:58:50

函数代码

#include <stdio.h>

int Min(long long k)
{
    long long i;
    double sum=0.000000;

    for (i=1;;i++)
    {
        sum+=1.000000/i;

        if (sum>k)
            break;
    }   

    return i;
}

int main()
{
    long long i,k; 
    double sum=0.000000;

    scanf("%lld",&k);

    printf("%lld",Min(k));

    return 0;
}

in:1 put:27584015141699586

无函数代码

#include <stdio.h>

int main()
{
    long long i,k; 
    double sum=0.000000;

    scanf("%lld",&k);

    for (i=1;;i++)
    {
        sum+=1.000000/i;

        if (sum>k)
            break;
    }

    printf("%lld",i);

    return 0;
}

in:1 put:2

路过的大佬能帮帮蒟蒻吧orz


by XYukari @ 2022-12-12 20:01:58

函数类型写成 int 了吧?


by Loser_Syx @ 2022-12-12 20:02:18

@yuncheyao11 你的函数返回值是int,输出时是long long,不对应


by Terrible @ 2022-12-12 20:04:34

@yuncheyao11 上面的程序里函数类型对不上,读取变量时越界读取了,所以那个数字非常大。把%lld改成%d或者把int Min改成 long long Min


by yuncheyao11 @ 2022-12-13 12:10:46

@Terrible 谢谢!知道啦


by yuncheyao11 @ 2022-12-13 12:11:21

@Saint_ying_xtf 知道了 谢谢谢谢


by yuncheyao11 @ 2022-12-13 12:12:07

@yxu0528 现在知道了 之前以为只能写int类型orz


|