gpt4 book ai didi

c - 如何从 void 函数中检索数组并传递给 Main 中的其他函数?

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

我是C初学者

我有一个问题,我正在将一组成绩传递给 main 并且需要将这些成绩转换为 int 并找到它们的最小最大值和平均值。

规范是

  • void getGrade(int argc, char *argv[])
  • int findMaximum(grade[])
  • int findMinimum(grade[])
  • float calculateAverage(grade[])
  • 打印结果(最大值、最小值、平均值)

而且这些都必须在main函数中依次调用。

我想弄清楚如何访问在 getGrade 中操作的数组“等级”,以便能够将它传递给 main 中的其他函数。

int main(int argc, char *argv[]){
getGrade(argc, argv)
int max = findMaximum(grade);
int min = findMinimum(grade);
float avg = calculateAverage(grade);
print results(max, min, avg);
return 0;
}

void getGrade(int argc, char *argv[]){
int i;
int grade[argc - 1];
for(i=0, i<argc -1; i++){
grade[i] = atoi(*(argv + i + 1));
}
}

最佳答案

grade数组是getGrade中的局部变量,所以当函数退出时,变量及其内容丢失。

您必须在调用此函数之前创建数组并将数组及其到函数的长度。您将需要修改函数以也接受长度:

void getGrade(grade, size_t len, char **argv);
int findMaximum(int *grade, size_t len);
int findMinimum(int *grade, size_t len);
float calculateAverage(int *grade, size_t len);
printResults(max, min, avg);


void getGrade(grade, size_t len, char **argv)
{
for(size_t i = 0, i < len; i++)
grade[i] = atoi(argv[i+1]);
}

int main(int argc, char **argv)
{
int grades[argc - 1];
size_t len = argc - 1;

getGrade(grades, len, argv);

int max = findMaximum(grades, len);
int min = findMinimum(grades, len);
float avg = calculateAverage(grades, len);
print results(max, min, avg);

return 0;
}

关于c - 如何从 void 函数中检索数组并传递给 Main 中的其他函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48758176/

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