编程题,for循环中if else的误点

当挨个查找对象时,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连用是逻辑上的错误;且子函理解运用不到位

猜你喜欢

转载自blog.csdn.net/yooppa/article/details/112006801
今日推荐