C 使用函数查找数组中的最小值?
您好,所以目前我正在尝试一个项目,但我遇到了一个路障,我已经盯着这个代码看了好几个小时,不知道发生了什么 我的主要问题是找到用户输入的数组的最小值。。。我能够得到最大的值并输出它,但由于某种原因,我不能得到最小的值来输出正确的结果。我一直得到0.0C 使用函数查找数组中的最小值?,c,arrays,C,Arrays,您好,所以目前我正在尝试一个项目,但我遇到了一个路障,我已经盯着这个代码看了好几个小时,不知道发生了什么 我的主要问题是找到用户输入的数组的最小值。。。我能够得到最大的值并输出它,但由于某种原因,我不能得到最小的值来输出正确的结果。我一直得到0.0 #include <stdio.h> #include <stdlib.h> #define SIZE 5 double getValidRainfall() { double result; printf("\nEnter
#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您是编程新手,不知道如何找到导致问题的代码部分,请尝试逐行调试,并找到您的期望与输出不一致的地方。我希望您能听到我拍自己脑袋的声音,太棒了!