I'm getting values but not as it should be



题目:用C语言编写程序,用函数求数组中最大元素、最小元素、所有元素的和以及所有元素的乘法。(为四种计算创建四个不同的函数,并为用户给出的一个数组调用它们)

我认为我得到错误,因为in

我是初学者,我不能一行一行地解释每件事。代码:
#include <stdio.h>  
// defined Max function int Max(int arr[], int); 
// defined Min function int Min(int arr[], int); 
// defined Sum function int Sum(int arr[], int); 
// defined Mul function int Mul(int arr[], int); 
int main() { 
int i, n, arr[100];
printf("Input the number of elements to be stored in the array : ");
scanf("%d",&n);
printf("Input %d elements in the array: n",n);
for (i=0; i<n; i++)
{
printf("element - %d : ",i);
scanf("%d", &arr[i]);
}
n = Max( arr, n);
printf("The largest element in the array is : %d", n);
n = Min( arr, n);
printf("nThe smallest element in the array is : %d", n);
n = Sum( arr, n);
printf("nThe sum of all the elements in the array is : %d", n);
n = Mul( arr, n);
printf("nThe multiplication of all the elements in the array is : %d", n);
return 0;
}
int Max(int arr[], int n)
{
int max = arr[0];
for (int i=0; i<n; i++)
{
if (max<arr[i])
max=arr[i];
}
return max;
}
int Min(int arr[], int n)
{
int min = arr[0];
for (int i=0; i<n; i++)
{
if (min>arr[i])
min=arr[i];
}
return min;
}
int Sum(int arr[], int n)
{
int sum = arr[0];
for (int i=0; i<n; i++)
{
sum += arr[i];
}
return sum;
}
int Mul(int arr[], int n)
{
int mul = arr[0];
for (int i=0; i<n; i++)
{
mul *= arr[i];
}
return mul;
}

正如一条评论所建议的那样,您的for应该从1开始,否则您将使用元素0两次,从而始终产生错误的结果。以下是与Mul函数相关的for应该如何出现,只需对其他函数应用相同的方法:

int mul = arr[0];
for(int i=1; i<n; i++)
{ 
mul *= arr[i];
}
return mul;

除了上面的问题,你的代码中还有另一个bug,那就是你使用变量n的方式。
据我所知,该变量存储了数组元素的数量。它是所有子例程的有效输入,但您不能用每个子例程的结果重新分配它。通过这种方式,就像您总是使用不同的数组大小调用子例程一样,当然您会得到意想不到的结果。

一个可能的解决方案是定义和使用另一个局部变量来保存每个子例程的结果。为了帮助你解决你的问题,我修复了你的代码,它现在工作得很好。给你:
#include <stdio.h>  
// defined Max function int Max(int arr[], int); 
// defined Min function int Min(int arr[], int); 
// defined Sum function int Sum(int arr[], int); 
// defined Mul function int Mul(int arr[], int); 
int main() { 
int i, n, op_res, arr[100];
printf("Input the number of elements to be stored in the array : ");
scanf("%d",&n);
printf("Input %d elements in the array: n",n);
for (i=0; i<n; i++)
{
printf("element - %d : ",i);
scanf("%d", &arr[i]);
}
op_res = Max( arr, n);
printf("The largest element in the array is : %d", op_res);
op_res = Min( arr, n);
printf("nThe smallest element in the array is : %d", op_res);
op_res = Sum( arr, n);
printf("nThe sum of all the elements in the array is : %d", op_res);
op_res = Mul( arr, n);
printf("nThe multiplication of all the elements in the array is : %d", op_res);
return 0;
}
int Max(int arr[], int n)
{
int max = arr[0];
for (int i=0; i<n; i++)
{
if (max<arr[i])
max=arr[i];
}
return max;
}
int Min(int arr[], int n)
{
int min = arr[0];
for (int i=0; i<n; i++)
{
if (min>arr[i])
min=arr[i];
}
return min;
}
int Sum(int arr[], int n)
{
int sum = arr[0];
for (int i=1; i<n; i++)
{
sum += arr[i];
}
return sum;
}
int Mul(int arr[], int n)
{
int mul = arr[0];
for (int i=1; i<n; i++)
{
mul *= arr[i];
}
return mul;
}

相关内容