long long int 的输出 (输出位数不够时)

今天在oj上做题时一直不能全部正确

题目是:

long long int 的输出 (输出位数不够时)_第1张图片

 

long long int 的输出 (输出位数不够时)_第2张图片

错误信息如下:

Wrong answer on line 1 of output (corresponding to line 1 in answer file)
String tokens mismatch
Judge: "10000000000"
Team: "1410065408"

发现明显自己的结果位数不够,说明定义的变量类型不够大,或者类型够大了,但是没有完全输出!!

原始代码:

#include
int arr[100000];
int main()
{
    int n = 0,i;

    scanf("%d", &n);
    for ( i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    int max = arr[0], min = arr[0];
    int sum = 0;
    for ( i = 0; i < n; i++)
    {
        if (arr[i] < min)
            min = arr[i];
        if (arr[i] > max)
            max = arr[i];
        sum = sum + arr[i];
    }
    printf("%d %lld %d", min, max, sum);
    return 0;
}

 发现位数不够后,我直接把int改为long long类型,

但发现错误信息还是没有变化,这时我意识到是输出位数不够,于是我把%d改为%lld,

代码如下,最后直接编译通过了!!!

#include
long long arr[100000];
int main()
{
    long long n = 0,i;

    scanf("%lld", &n);
    for ( i = 0; i < n; i++)
    {
        scanf("%lld", &arr[i]);
    }
    long long max = arr[0], min = arr[0];
    long long sum = 0;
    for ( i = 0; i < n; i++)
    {
        if (arr[i] < min)
            min = arr[i];
        if (arr[i] > max)
            max = arr[i];
        sum = sum + arr[i];
    }
    printf("%lld %lld %lld", min, max, sum);
    return 0;
}

总结:当一道题的编译结果大部分都对时,要注意,这很有可能是你的位数不够,

建议把int改为long long 类型,

同时输入改为scanf("%lld",&a);

输出改为printf("%lld",a);

希望能帮到大家~

你可能感兴趣的:(c语言,gnu,开发语言)