问题不是什么大问题,但我不确定我是否缺乏理解给我的特定评论的知识。
这是我必须使用指针的作业的一部分。
我收到了我的导师关于函数 returnfunc
的一段代码的评论,其中使用了指针。
注释如下:“函数有什么输入/输出?只有判断点进来!”
我会要求进一步澄清,但讲师在接下来的 1-2 天内无法使用。
所以我没有等待,而是希望有人可以看一看,也许可以确定这是什么意思?
代码中突出显示的部分如下所示:
//function declaration
void returnfunc(float *low, float *average, float *high, float array[],int judges);
//calling function in the main function
returnfunc(&low, &average, &high, pointArray,judges);
//code for returnfunc function
void returnfunc(float *low, float *average, float *high, float pointArray[],int judges){
float small =pointArray[0];
float large =pointArray[0];
float total;
for(int i =0;i<judges;i++){
if(small>pointArray[i]){
small = pointArray[i];
}
if(large<pointArray[i]){
large = pointArray[i];
}
}
for(int i = 0;i<judges;i++){
total += pointArray[i];
}
*average = (total-(large+small))/(judges-2); //average without largest and smallest value
*high=large;
*low=small;
}
judges
是用户选择的判断数量。
pointArray
是一个数组,其中包含每个裁判给出的分数。
我对代码的解释是,输入是low
、high
和average
的地址以及pointArray
和 judges
。
然后输出将是 average
、high
和 low
的更新变量
你会说这是正确的吗?
最佳答案
是的。我的猜测是,您的导师希望您拥有三个独立的功能,一个用于查找最低分数,一个用于查找最高分数,一个用于查找没有最低和最高分数的平均值。这将允许每个函数直接返回一个结果。
void returnfunc(float *low, float *average, float *high, float pointArray[],int judges)
{
float small =pointArray[0];
float large =pointArray[0];
float total;
for(int i =0;i<judges;i++){
if(small>pointArray[i]){
small = pointArray[i];
}
if(large<pointArray[i]){
large = pointArray[i];
}
}
for(int i = 0;i<judges;i++){
total += pointArray[i];
}
*average = (total-(large+small))/(judges-2); //average without largest and smallest value
*high=large;
*low=small;
}
一个吹毛求疵的问题:为什么要遍历 pointArray
两次 for
当你可以在一个循环中完成所有事情时循环?
还有一个吹毛求疵的问题:虽然 small>pointArray[i]
与 pointArray[i] < small
含义相同,我认为后者更好地传达了代码的意图。
还有一个错误:你没有设置 total
在开始向其中添加内容之前将其归零。你可以设置 total
至 pointArray[0]
以及开始,然后从一个开始循环。
关于c - 我传递指针参数的方式有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56658056/