当挨个查找对象时,for循环中设置选择结构if else;不能将else所含语句放入循环体,会使for循环做第一循环时if后语句为假直接执行else语句,不能实现挨个查找,得出错误结果;
针对此情况将另一种情况return -1;置于循环体外;
此段代码是整个程序的中的一个子函:
float aver(int pStu[TOTAL_STU][7], int stuNo)
{
double sum=0;
int j,i,l;
for(j=0;j<TOTAL_STU;j++)
{
if(pStu[j][0]==stuNo)
{
for(l=1;l<7;l++)
sum=sum+pStu[j][l];
return (float)(sum/6);
}
else
return -1;
}
}
这段子函代码的作用是把第一列的所有数相加
如果else语句再for循环中就不能实现把整列的数相加;
为此做出改进:代码如下
float aver(int pStu[TOTAL_STU][7], int stuNo)
{
double sum=0;
int j,i,l;
for(j=0;j<TOTAL_STU;j++)
{
if(pStu[j][0]==stuNo)
{
for(l=1;l<7;l++)
sum=sum+pStu[j][l];
return (float)(sum/6);
}
}
return -1;
}
因为j<TOTAL_STU可以跳出循环,作用类似。
去除for循环中的else为使整列数相加,误将else在for循环中与if连用是逻辑上的错误;且子函理解运用不到位