gpt4 book ai didi

c - Max/Min 方法不返回任何内容或返回不正确的数字

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:21 29 4
gpt4 key购买 nike

我需要将参数放入数组并使用方法获取数字的最大值/最小值和平均值。它不会返回预期的结果。我对此束手无策。如果有人能让我知道我做错了什么,我将非常感激。这是我在沮丧中造成的困惑。

#include<stdio.h>
#include <stdlib.h>

void getGrade(int argc, char *argv[]);
int findMaximum(int grade[]);
int findMinimum(int grade[]);
float calculateAverage(int grade[]);
void printResults(int maximum, int minimum, float average);

int argc;
int grade[50];
int main(int argc, char *argv[])
{

getGrade(argc,argv);
int max = findMaximum(grade);
int min = findMinimum(grade);
float avg = calculateAverage(grade);
printResults(max,min,avg);
return 0;
}
void getGrade(int argc, char *argv[]){
for(int i=1;i<=argc-1;i++)
grade[i-1]=atoi(argv[i]);
}
int findMaximum(int grade[]){
int max;
int size = argc-1;
for(int i=0;i<size;i++){
if(grade[i]>grade[0]){
max = grade[i];}
else{
max = grade[0];}
}
return max;
}
int findMinimum(int grade[]){
int min;
int size= argc-1;
for(int i=0; i<size;i++){
if(grade[i]<grade[0])
min=grade[i];
}
return min;
}
float calculateAverage(int grade[]){
float avg=0.0;
for(int i=0; i<=argc; i++)
avg= grade[i]+avg;
return avg/(argc-1);
}
void printResults(int maximum, int minimum, float average){
printf("Maximum Grade: %d\nMinimum Grade: %d\nAverage Grade: %.2f\n",maximum,minimum, average);
}

我是 C 语言的新手,所以请多多包涵,请原谅这已经变得一团糟。

最佳答案

在最大和最小函数中,您将列表的每个元素与列表的第一个元素进行比较

if(grade[i]>grade[0])

相反,您应该在循环之前将 max 设置为 grade[0],而不是与 max 进行比较。所以你的函数将变成:

int findMaximum(int grade[]){
int max = grade[0];
int size = argc-1;
for(int i=0;i<size;i++){
if(grade[i]>max){
max = grade[i];}
}
return max;
}

请注意,此函数假定列表中至少有一个元素。为避免这种情况,您可以将 max 设置为 INT_MIN,这样第一个元素将始终大于当前的 max

你也可以做同样的事情,只是切换到最小功能。

关于c - Max/Min 方法不返回任何内容或返回不正确的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470433/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com