"if(!xx[i])"这句的意思是:如果xx[i]的值是假,那么执行括号后面的语句(程序中为跳出循环)。它的作用是判断当前for循环是否已经处理完了最后一个数,因为预先不知道具体有多少个数,只给个最大限200.
!表示逻辑非,即将真假值颠倒一下,if语句后面的括号中的值为真时执行括号后的语句,否则执行else后的(假如有else的话)。而括号内有!,所以感叹号后的表达式xx[i]值为假(也就是空值,在readdat函数中未赋值给它)时整个括号内值则为真,会执行括号后跳出循环的break语句.
“totpjz/=totcnt;”这句的意思是:totpjz=totpjz/totcnt.作用是计算题中第二问要求的平均值。因为这句之前是一个for循环块(对应花括号"{"就能看出来),每次循环中均会判断当前的xx[i]经过题中要求的处理后是否为满足条件的数,是的话有这两句totCnt++;
totPjz += xx[i];意思是满足条件的数的数目增一,并将这个数加到totpjz中去,能看出在循环中totpjz不是作为存储平均值的,而是暂时作为一个累加器,存储所有满足条件数的和,最后循环结束后除以个数totcnt,也就是执行 totpjz/=totcnt后才表示平均值。
就回答你那两个问题
!是非的意思,一般用于布尔变量
这里用!后负数和零会返回假,正数返回真。
/=是缩写。和+=一样
a/=10等价于 a=a/10
①教你一个方法
if(!XX)可以看成if(XX==0)
②A运算符=B
等价于
A=A运算符B
if(xx[i]==0) totpjz=totpjz/totcnt;