在c中输入大的no

时间:2018-02-18 14:40:23

标签: c long-integer

我们的初始数字是1,2,3,4和5。我们可以使用五个整数中的四个来计算以下总和:

如果我们总结除了1以外的所有东西,我们的总和是。 2 + 3 + 4 + 5;

和休息一样

如您所见,最小总和为min,最大总和为max。因此,我们将这些最小和最大和打印为一个新行上的两个以空格分隔的整数。

提示:注意整数溢出!使用64位整数。

这是我的问题但它未能测试一些值....我认为这是数据类型issut但我已经采取了最长的没有我可以

此输入失败: 769082435 210437958 673982045 375809214 380564127

帮助我。

int main()
{
     int n=5;
    long long  unsigned int *arr = malloc(sizeof(int) * n);

       long long  unsigned int ar[n],min=0,max=0,sum=0;


    for(int i=0;i<n;i++)
    {
    scanf("%lld",&arr[i]);
    }


    for(int i=0;i<n;i++)
    {
        sum= arr[i]+sum;
    }

    for(int i=0;i<n;i++)
    {

    ar[i] = sum -arr[i];

    }




    for(int i=0; i<n ;i++)
    {
            min=ar[0];

        if(min> ar[i])
           min =ar[i];

    }

     for(int i=0; i<n ;i++)
    {
            max=ar[0];

        if(max< ar[i])
           max =ar[i];

    }

    printf("%lld %lld",min,max);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您需要为正确类型的变量分配内存,即unsigned long long而不是int。要摆脱这些愚蠢的错误,你可以用这种简单的方法 -

long long  unsigned int *arr = malloc(sizeof *arr * n);

在这里,您不必担心所指向的类型。没有你明确提到它就确定了。

在for循环中,您一次又一次地将min设置为ar[0]。这个不对。在进入循环之前完成一次。 max变量也是如此。 for循环将是(类似于max变量)

unsigned long long min =ar[0];
for(int i=0; i<n ;i++)
{
    if(min > ar[i])
       min = ar[i];
}

答案 1 :(得分:0)

您正在分配错误的字节数:

pagename=some-page&custom_field=$matches[1]
pagename=some-other-page&custom_field=$matches[1]

你想创建一个long long unsigned int *arr = malloc(sizeof(int) * n); 数组,但你只需要分配 long long unsigned int n的空格。正确的ints电话将是

malloc

至于其他错误,coderredoc的答案会告诉你更多关于这些的信息,在这里重复它们没有意义。