【发布时间】:2021-03-09 18:58:21
【问题描述】:
问题:用 C 语言编写程序,使用函数获取数组的最大元素、最小元素、所有元素的总和以及所有元素的乘积。 (为四个计算创建四个不同的函数,并为用户给定的一个数组调用它们)。
我认为由于i 和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, 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;
}
【问题讨论】:
-
在“sum”和“mul”函数(以及“max”和“min”)中,您使用了两次
arr[0]。总和 不是arr[0] + arr[0] + arr[1] + ... + arr[n-1]. -
请注意,您的总和和(尤其是)乘积不会溢出。比如13! (阶乘)将溢出
int产品,但您可以拥有 100 个元素。