所以这段代码应该找到正数排序数组的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);
}
通常,整数限制为 32 位(最大 2,147,483,647)。
您可以尝试使用 long long,它是 64 位(最大 9,223,372,036,854,775,807)。