因此,此代码应该找到一个已排序的正数组的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=-1937029851
(我是初学者,知道我做错了什么吗?)
#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);
}