分析:此图形共5行,每行的个数为奇数变化,且依次增加,每行的首个位置依次左移一个位,由此很多学生首先认可的程序设计代码为:
For i = 1 To 5
Print Tab(6 - i);
For j = 1 To 2 * i - 1
Print Str(i);
Next j
Print
Next I
然而,这个程序运行后的结果图形为图4。
这个“错位”的图形出来后,学生一片哗然,我让学生进行分析,大部分学生认为:在循环结构中,数据“i”和“j”这两个循环变量的变化范围有问题。但是当我提示学生把“Str(i)”改为“*”时,图形又变成了如图5
这种图形形式与结果图形很相似了,至此学生也知道了不是循环变量的问题,那么剩下的就是数据类型的问题了。最后,教师写出正确代码为:
For i = 1 To 5
Print Tab(6 - i);
For j = 1 To 2 * i - 1
Print mid(Str(i),2,1);
Next j
Print
Next I
解释程序:由于Str()函数在把数值型数据转换为字符型数据时,会在前面加一个空格,这就是我们会产生错位图形的原因。至此,学生对此知识点产生深刻印象,此后学生再遇上类似问题就很少再出错了。