算法与程序的常见错误

2013-10-23 01:16郑明武
高中生学习·高二版 2013年9期
关键词:程序框图错因语句

郑明武

一、程序框图中箭头位置错误

例1 画出求[S=1+22+32+…+102]的程序框图.

正解 若将判断框左上方箭头上移就正确了(图中标注①).

错因分析 这样的结果是,由于没有了判断框,故程序执行时没有终止,即程序框将[S=1+22+32+…]一直进行下去,循环始终运行,程序为死循环.

二、程序框图中变量的初始值出现错误

例2 设计流程图求1+2+…+100的值.

正解 为了不遗漏数“2”,通常需要改变始端赋值的数据或调整操作程序及末端输出条件而得正解.

解法1:将第二步“[i=2]”改为“[i=1]”而其他数据都不变.

解法2:将第三步与第四步互换,即先执行“[S=][S+i]”使“[S=1+2]”再执行“[i=i+1]”往下循环. 特别要注意此时判断框“[i<100?]”同时要改为“[i<101?]”,因为上一步的[i]到达100.

错因分析 这里先执行“[i=i+1]”使“[i=2]”变为“[i=3]”,再执行“[S=S+i]”使得一开始就是“[S=1+3]”,跳过了数2,最后求得的和实际为“[S=1+3+4+…+100]”的值.这就是循环结构出现变量的初始值出现错误.

三、程序框图中变量的输出出现错误

例3 设计求满足条件1+3+5+7+…+ >10000的最小整数的一个算法.

错因分析 因为要先检验条件“[S≤10000]”是否成立,如果成立,则重复循环体中的语句“[S=S+i],[i=i+2]”,只有当条件“[S≤10000]”不成立时,才结束循环.那么上述算法语句中的最后一次循环:“[S]的值大于10000,[i]的值仍然要增加2”,这样输出的[i]值会比所求的值大2.

四、程序框图中的控制条件出现错误

例4 设计流程图求[1×2×3×4×…×30]的值.

错因分析 判断框中应是“[i>29?]”,而不是“[i>30?]”,当“[i>30?]”时,输出[P]为“1×2×3×…×31”的值.

五、数学运算符与计算机运算符混淆

例5 某居民区的物业部门每月向居民收取卫生费,计费方法是:3人和3人以下的住户,每户收取5元;超过3人的住户,每超出1人加收1.2元.设计一个程序,根据输入的人数,计算应取的卫生费.

错解 设人数为[x],收费为[y]元,则[y=][5,03. ]

程序如下:

错因分析 计算机是无法识别“0

六、语法规则错误

例6 编写一个程序,对于函数[y=-x+1(x<0),0(x=0),x+1(x>0),]输入[x]的值,输出相应的函数的值.

正解 所以应在“PRINT y”前加一个“END IF”.

错因分析 条件语句的格式有两种,一个是只有一个“分支”的条件语句,它的格式见图一;一个是有两个“分支”的条件语句,它的一般格式见图二. 上述编写的程序实际上两次运用了两个分支的条件语句,但是第一个条件语句实际上并不完整,少了一个“END IF”.

猜你喜欢
程序框图错因语句
深究错因 把握本质
“顺势而下”破解程序框图
重点:语句衔接
反思错因正确解答
理清错因,让“幂”运算强起来
算法与程序框图常考类型
程序框图问题的精彩交汇
程序框图题盘点
如何搞定语句衔接题
作文语句实录