1.
表示不超过
的整数部分,如
,但当
是负数时极易出错,如
就是错误的,应为-2.
2.更相减损术的步骤:(1)任意给出两个正数,判断它们是否都是偶数.若是,用2约简;若不是,执行第二步.(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数.
(3)二分法求方程
在区间
内的一个近似解
的解题步骤可表示为
S1 取[
]的中点
,将区间
一分为二;
S2 若
,则
就是方程的根;否则判别根
在
的左侧还是右侧:
若
,
,以
代替
;
若
,则
,以
代替
;
S3 若
,计算终止,此时
,否则转S1.
1.算法设计思想:
(1)“韩信点兵-孙子问题”对正整数m从2开始逐一检验条件,若三个条件中有任何一个不满足,则m递增1,一直到m同时满足三个条件为止(循环过程用Goto语句实现)
(2)用辗转相除法找出
的最大公约数的步骤是:计算出
的余数
,若
,则
为
的最大公约数;若
,则把前面的除数
作为新的被除数,继续运算,直到余数为0,此时的除数即为正整数
的最大公约数.
5. 将100名学生的一门功课的成绩依次输入并计算输出平均成绩.
§ 13.3 算法案例
4.运行下面程序后输出的结果为
For I from 10 to 1 step -2
Print I
End for
End
3.伪代码描述的求T的代数式是
,求
的代数式是
.
Read n
![]()
![]()
For I from 1 to n
![]()
![]()
End for
Print T,S
2.运行下面的程序后输出的结果是 ,若将程序中的A语句与B语句的位置互换,再次执行程序后输出的结果为 .
![]()
![]()
While ![]()
′A语句
′B语句
End While
Print x,y
End
1. 下列的循环语句循环的次数为( )
For I from 1 to 7
For J from 1 to 9
Pint I+J
End for
End for
End
A.7次 B.9次 C.63次 D.16次
[例1] 下列程序的运行结果是 .
![]()
![]()
If
>5
Then ![]()
If
>4
Then ![]()
If
>3
Then ![]()
Print ![]()
错解:8+7=15
错因:误认为在一个程序中只执行一个条件语句,与在一个条件语句中只选择其中一个分支相混淆.If A Then B [Else C] 若满足条件A 则执行B,否则是执行C,B和C是这个条件语句的分支,而这个程序省略了Else部分.
正解:这里是有三个条件语句,各个条件语句是独立的,三个条件均成立,所以按顺序依次执行,结果为8+7+6+6=27.
[例2] 下面的伪代码的效果是
![]()
While
<10
![]()
End While
End
错解:执行10次循环
错因:将For语句和While语句混淆. For语句中有步长使循环变量不断变化,而While语句则无.
正解:无限循环下去,这是因为这里
始终为0,总能满足条件“
”,故是一个“死循环”.
点评:“死循环”是设计循环结构的大忌,此题可改变
的初始值或每一次循环
都增加一个值.
[例3]下面的程序运行时输出的结果是( )
While ![]()
![]()
![]()
![]()
![]()
End while
Print S
End
错解:第一次循环时,I被赋予2,S被赋予4;第二次循环时,I被赋予3,S被赋予4+
=13;第三次循环时,I被赋予4,S被赋予13+
=29;第四次循环时,I被赋予5,S被赋予
.由于此时
,故循环终止,输出S为54.
正解:由于
在循环内,每经过一次循环后S都被赋值0,因此,只要求满足条件的最后一次循环S的值,即当
时,
.
[例4]用语句描述求使
成立的最大正整数
的算法过程.
解: ![]()
![]()
While ![]()
![]()
![]()
End while
Print
点评:此题易错的是输出值,根据While循环语句的特征当
时跳出循环体,此时
的值是
时的最小的整数,则使
的最大整数应为
的前一个奇数即
.
[例5]已知当
时,
,当
时,
,当
时,
,设计一算法求
的值.
解: Read x
If
then
![]()
Else if
Then
![]()
Else
![]()
![]()
End if
End
点评:嵌套If语句可用如上的紧凑形式书写,要注意的是如不是采取紧凑形式,则需注意一个块If语句对应一个End If,不可省略或缺少.
[例6]设计一个算法,使得输入一个正整数
,输出1!+2!+3!+…+
!的值.写出伪代码.
解:思路一:利用单循环,循环体中必须包括一个求各项阶乘的语句以及一个求和语句.
Read n
![]()
For I from 1 to n
![]()
End For
Print S
思路二:运用内外双重循环,但尤其注意的是每一次外循环T的值都要从1开始.
Read n
![]()
For I from 1 to n
![]()
For J from 1 to I
End For
![]()
End For
Print S
2.“For”语句是在执行过程中先操作,后判断.而“While”语句的特点是“前测试”,即先判断,后执行.若初始条件不成立,则一次也不执行循环体中的内容.任何一种需要重复处理的问题都可以用这种前测试循环来实现.
湖北省互联网违法和不良信息举报平台 | 网上有害信息举报专区 | 电信诈骗举报专区 | 涉历史虚无主义有害信息举报专区 | 涉企侵权举报专区
违法和不良信息举报电话:027-86699610 举报邮箱:58377363@163.com