Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用函数查找数组中的最小值?_C_Arrays - Fatal编程技术网

C 使用函数查找数组中的最小值?

C 使用函数查找数组中的最小值?,c,arrays,C,Arrays,您好,所以目前我正在尝试一个项目,但我遇到了一个路障,我已经盯着这个代码看了好几个小时,不知道发生了什么 我的主要问题是找到用户输入的数组的最小值。。。我能够得到最大的值并输出它,但由于某种原因,我不能得到最小的值来输出正确的结果。我一直得到0.0 #include <stdio.h> #include <stdlib.h> #define SIZE 5 double getValidRainfall() { double result; printf("\nEnter

您好,所以目前我正在尝试一个项目,但我遇到了一个路障,我已经盯着这个代码看了好几个小时,不知道发生了什么

我的主要问题是找到用户输入的数组的最小值。。。我能够得到最大的值并输出它,但由于某种原因,我不能得到最小的值来输出正确的结果。我一直得到0.0

#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
double getValidRainfall() {
double result;

printf("\nEnter a rainfall amount: ");
scanf("%lf", &result);

while (result < 0.0) {
    printf("%.2lf is not a valid rainfall amount.", result);
    printf("\nEnter another rainfall amount: ");
    scanf("%lf", &result);
}
return result;
}
double calculateTotal(double rainfall[], int size) {
double result = 0.0;
int i;
for (i = 0; i < SIZE; i++) {
    result += rainfall[i];
}
return result;
}

double findLargest(double rainfall[], int size) {
double result = 0.0;
int i;
for (i = 0; i < size; i++) {
    if (rainfall[i] > result)
        result = rainfall[i];
}
return result;
}

double findSmallest(double rainfall[], int size) {
double result = 0.0;
int i;

for (i = 0; i < size; i++) {
    if (rainfall[i] < result) 
        result = rainfall[i];
}
return result;
}

main() {
double rainfall[SIZE], totalRainfall, averageRainfall;
double largestRainfall, smallestRainfall;
int i;

for(i = 0; i < SIZE; i++)
    rainfall[i] = getValidRainfall();

totalRainfall = calculateTotal( rainfall, SIZE );
averageRainfall = totalRainfall / SIZE;
largestRainfall = findLargest(rainfall, SIZE);
smallestRainfall = findSmallest(rainfall, SIZE);


// outputs
printf("\nThank you.\n");
printf("The total rainfall for these 5 days is: %.2lf\n", totalRainfall);
printf("The average rainfall is %.2lf\n", averageRainfall);
printf("The largest daily rainfall is %.1lf\n", largestRainfall);
printf("The smallest daily rainfall is %.1lf\n", smallestRainfall);

system("pause");
}
#包括
#包括
#定义尺寸5
双重getValidRainfall(){
双重结果;
printf(“\n输入降雨量:”);
扫描频率(“%lf”、&result);
而(结果<0.0){
printf(“%.2lf不是有效的降雨量。”,结果);
printf(“\n输入另一个降雨量:”);
扫描频率(“%lf”、&result);
}
返回结果;
}
双重计算总计(双重降雨量[],整数大小){
双结果=0.0;
int i;
对于(i=0;i结果)
结果=降雨量[i];
}
返回结果;
}
双FindSallest(双降雨量[],整数大小){
双结果=0.0;
int i;
对于(i=0;i
显然,所有降雨输入都大于
0.0
您需要将
结果
初始化为一个非常高的值,而不是零。

在下面的函数中,将
结果
指定为可能的最大值,或者从数组本身指定一个值,否则,它将给您错误的结果,因为
0.0
将始终小于数组中的任何值(考虑降雨量a+ve数值)&条件将始终为false

double findSmallest(double rainfall[], int size) {
    double result = DBL_MAX; // or double result = rainfall[0], if size >= 1;
    int i;

    for (i = 0; i < size; i++) {
        if (rainfall[i] < result) 
            result = rainfall[i];
    }
    return result;
}
double FindSallest(双降雨[],整数大小){
双结果=DBL_MAX;//或双结果=降雨量[0],如果大小>=1;
int i;
对于(i=0;i
您需要将结果变量初始化为数组中的第一个元素或高于所有值的值(第一种方法更有效)。由于您正在将其初始化为0.0,除非值为负值,否则它将保持为0.0。因此,我建议:

double result = rainfall[0];

请在
findsmalest()
中发布一个.In,
double result=0.0-->
double result=DBL\u MAX代码越长,人们帮助你的可能性就越小。正如@VittorioRomeo所说,您应该尝试只发布代码中似乎有问题的部分。Id您是编程新手,不知道如何找到导致问题的代码部分,请尝试逐行调试,并找到您的期望与输出不一致的地方。我希望您能听到我拍自己脑袋的声音,太棒了!