正数之和是负数

问题描述 投票:0回答:1

所以这段代码应该找到正数排序数组的minimum_sum和maximum_sum([arr_elemnts-1]数字的总和)值(例如arr=[5,4,3,2,1] min_sum=1+2 +3+4=10 max_sum=5+4+3+2=14 )

它在大多数情况下工作正常,但是当我将数组的元素输入为 140537896 243908675 670291834 923018467 520718469 而不是返回 min=1575456874 max=2357937445 时,它返回 min=1575456874 max=-193702 9851(我是一个初学者,知道我做了什么错了?)

#include<stdio.h>
int sort(int n,long int arr[n])
{
    int aux;
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-1;j++)
        {
            if(arr[j+1]<arr[j])
            {
             aux=arr[j];
             arr[j]=arr[j+1];
             arr[j+1]=aux;
            }

        }
    }
    return 0;
}
void sum(int n ,long int arr[n])
{

    long int min_sum=0;
    long int max_sum=0;
    for(int i=0;i<n-1;i++)
    {
        min_sum=min_sum+arr[i];
    }
    printf("min sum is : %ld \n",min_sum);
    for(int i=n-1 ; i>0; i--)
    {
        max_sum=max_sum+arr[i];
    }
    printf("max sum is : %ld",max_sum);

}
int main()
{
    int n;
    printf("----MIN MAX---- \n");
    do{
    printf("Enter n : ");
    scanf("%d",&n);
    }while(n<=0);
    long int arr[n];
    for(int i=0;i<n;i++)
    {
        printf("Enter arr[%d]: ",i);
        scanf("%ld",&arr[i]);
    }
    sort(n,arr);
    sum(n,arr);
}
c sum
1个回答
0
投票

通常,整数限制为 32 位(最大 2,147,483,647)。

您可以尝试使用 long long,它是 64 位(最大 9,223,372,036,854,775,807)。

© www.soinside.com 2019 - 2024. All rights reserved.