请问: 对于一个7*7的矩阵,求其两个对角线中能被3整除的数的个数,以下两段代码为什么会有不同的结果?
代码1:
for i=1 to 7
for j=1 to 7
if i=j or i+j=8 and a(i,j) mod 3=0 then
counter=counter+1
end if
next j
next i
代码2:
for i=1 to 7
for j=1 to 7
if i=j or i+j=8 then
if a(i,j) mod 3=0 then
counter=counter+1
end if
end if
next j
next i
请编程高手帮帮忙!感谢!
追问:所以说代码2是正确的咯?
答案:逻辑不同
if i=j or i+j=8 and a(i,j) mod 3=0 then
是先计算and,后计算or
所以结果不一样
改为
if (i=j or i+j=8 )and a(i,j) mod 3=0 then
就跟后面的一样了
其他:在条件判断里,and比or优先,所以and两边的条件先被判断,再作为条件与or另一边判断,所以代码一里的条件变成当i=j时不需要整除3这个条件,counter也会加一。 1改成if (i=j Or i+j=8) and a(i,j)mod 3 =0 then
2正确
上一个:如何用纯代码代替Timer控件?
下一个:VB题目一道