基本算法语句一、输入、输出语句和赋值语句 (1)输入语句 ①输入语句的一般格式②输入语句的作用是实现算法的输入信息功能;③“提示内容”提示用户输入什么样的信息,变量是指程序在运行时其值是可以变化的量;④输入语句要求输入的值只能是具体的常数,不能是函数、变量或表达式; ⑤提示内容与变量之间用分号“;”隔开,若输入多个变量,变量与变量之间用逗号“,”隔开。
(2)输出语句 ①输出语句的一般格式②输出语句的作用是实现算法的输出结果功能;③ “提示内容”提示用户输入什么样的信息,表达式是指程序要输出的数据;④输出语句可以输出常量、变量或表达式的值以及字符。
(3)赋值语句 ①赋值语句的一般格式②赋值语句的作用是将表达式所代表的值赋给变量;③赋值语句中的“=”称作赋值号,与数学中的等号的意义是不同的。
赋值号的左右两边不能对换,它将赋值号右边的表达式的值赋给赋值号左边的变量; ④赋值语句左边只能是变量名字,而不是表达式,右边表达式可以是一个数据、常量或算式;⑤对于一个变量可以多次赋值。
注意:①赋值号左边只能是变量名字,而不能是表达式。
如:2=X 是错误的。
②赋值号左右不能对换。
如“A=B ”“B=A ”的含义运行结果是不同的。
③不能利用赋值语句进行代数式的演算。
(如化简、因式分解、解方程等) ④赋值号“=”与数学中的等号意义不同。
5:条件语句(1)条件语句的一般格式有两种:①IF—THEN—ELSE语句;②IF—THEN语句。
①IF—THEN—ELSE语句IF—THEN—ELSE语句的一般格式为图1,对应的程序框图为图2。
图1②IF—THEN语句IF—THEN语句的一般格式为图36:循环语句循环结构是由循环语句来实现的。
对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。
即WHILE语句和UNTIL语句。
(1)WHILE语句①WHILE语句的一般格式是②当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止。
这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句。
因此,当型循环有时也称为“前测试型”循环。
(2)UNTIL语句①UNTIL语句的一般格式是对应的程序框图是②直到型循环又称为“后测试型”循环,从UNTIL 型循环结构分析,计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时,不再执行循环体,跳到LOOP UNTIL 语句后执行其他语句,是先执行循环体后进行条件判断的循环语句。
分析:当型循环与直到型循环的区别:(1)当型循环先判断后执行,直到型循环先执行后判断; (2)在WHILE 语句中,是当条件满足时执行循环体,在UNTIL 语句中,是当条件不满足时执行循环. 7:辗转相除法与更相减损术 (1)辗转相除法。
也叫欧几里德算法,用辗转相除法求最大公约数的步骤如下:①用较大的数m 除以较小的数n 得到一个商0S 和一个余数0R ; ②若0R =0,则n 为m ,n 的最大公约数;若0R ≠0,则用除数n 除以余数0R 得到一个商1S 和一个余数1R ;③若1R =0,则1R 为m ,n 的最大公约数;若1R ≠0,则用除数0R 除以余数1R 得到一个商2S 和一个余数2R ;……依次计算直至n R =0,此时所得到的1n R 即为所求的最大公约数。
(2)更相减损术①任意给出两个正数;判断它们是否都是偶数。
若是,用2约简;若不是,执行第二步。
②以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。
继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。
(3)辗转相除法与更相减损术的区别:①都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
②从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到8:秦九韶算法与排序(1)秦九韶算法概念:f(x)=a n x n+a n-1x n-1+….+a1x+a0求值问题f(x)=a n x n+a n-1x n-1+….+a1x+a0=(a n x n-1+a n-1x n-2+….+a1)x+a0=(( a n x n-2+a n-1x n-3+….+a2)x+a1)x+a0 =......=(...( a n x+a n-1)x+a n-2)x+...+a1)x+a0求多项式的值时,首先计算最内层括号内依次多项式的值,即v1=a n x+a n-1然后由内向外逐层计算一次多项式的值,即v2=v1x+a n-2 v3=v2x+a n-3 ...... v n=v n-1x+a0这样,把n次多项式的求值问题转化成求n个一次多项式的值的问题。
(2)两种排序方法:直接插入排序和冒泡排序①直接插入排序基本思想:插入排序的思想就是读一个,排一个。
将第1个数放入数组的第1个元素中,以后读入的数与已存入数组的数进行比较,确定它在从大到小的排列中应处的位置.将该位置以及以后的元素向后推移一个位置,将读入的新数填入空出的位置中.(由于算法简单,可以举例说明)②冒泡排序基本思想:依次比较相邻的两个数,把大的放前面,小的放后面.即首先比较第1个数和第2个数,大数放前,小数放后.然后比较第2个数和第3个数......直到比较最后两个数.第一趟结束,最小的一定沉到最后.重复上过程,仍从第1个数开始,到最后第2个数...... 由于在排序过程中总是大数往前,小数往后,相当气泡上升,所以叫冒泡排序.9:进位制(1)概念:进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。
可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n 进制。
现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。
对于任何一个数,我们可以用不同的进位制来表示。
比如:十进数57,可以用二进制表示为111001,也可以用八进制表示为71、用十六进制表示为39,它们所代表的数值都是一样的。
一般地,若k 是一个大于一的整数,那么以k 为基数的k 进制可以表示为:110()110...(0,0,...,,)n n k n n a a a a a k a a a k --<<≤<,而表示各种进位制数一般在数字右下脚加注来表示,如111001(2)表示二进制数,34(5)表 典型例题例1.判断下列给出的输入语句、输出语句和赋值语句是否正确?为什么?(1)输入语句 INPUT a ;b ;c (2)输出语句 A =4 (3)赋值语句 3=B(4)赋值语句 A =B =-2解析:(1)错,变量之间应用“,”号隔开; (2)错,PRINT 语句不能用赋值号“=”; (3)错,赋值语句中“=”号左右不能互换; (4)错,一个赋值语句只能给一个变量赋值。
例2.请写出下面运算输出的结果。
(1) dd PRINT cc d b a c b a ;""2/)(35=*=+=== (2) cb ac b a PRINT bc a b b a c b a ,,;",,"21===-+=+===(3)cb ac b a PRINT ac c b b a c b a ,,;",,"302010=========解析:(1)16;语句2/)(b a c +=是将a ,b 和的一半赋值给变量c ,语句c c d *=是将c 的平方赋值给d ,最后输出d 的值。
(2)1,2,3;语句b a c +=是将a ,b 的和赋值给c ,语句b c a b -+=是将b c a -+的值赋值给了b 。
(3)20,30,20;经过语句b a =后a ,b ,c 的值是20,20,30。
经过语句c b =后a ,b ,c 的值是20,30,30。
经过语句a c =后a ,b ,c 的值是20,30,20。
练习:1.已知变量a ,b 已被赋值,要交换a 、b 的值,采用的算法是( )A .a =b ,b =aB .a =c ,b =a ,c =bC .a =c ,b =a ,c =aD .c =a ,a =b ,b =c 2.下列给出的赋值语句中正确的是( )A 4M =B M M =-C 3B A ==D 0x y +=例3.写出求三个数a ,b ,c 的方差的程序。
解析:方差是在初中统计内容中学习过的知识,计算所有数的方差首先计算所有数的平均数x ,通过公式nx x x x x x s n 222212)(........)()(-++-+-=来计算。
算法步骤:第一步:计算平均数3cb a x ++=; 第二步:计算方差3)()()(2222a x a x a x s -+-+-=;第三步:得到的结果即为所求。
程序如下: INPUT a ,b ,c y=(a+b+c)/3S=((a -y)2+ (b -y)2+ (c -y)2)/3 PRINT S END例4.编写一个程序,要求输入的两个正数a 和b 的值,输出a b 和b a 的值。
程序1:INPUT “a,b :”;a ,b A=a^b B=b^aPRINT “a b =”;A ,“b a =”;B END例5.编写程序,输出两个不相等的实数a 、b 的最大值。
解:算法:第一步:输入a , b 的数值;第二步:判断a ,b 的大小关系,若a >b ,则输出a 的值,否则输出b 的值。
程序如下:(“IF—THEN —ELSE”语句) INPUT“a ,b”;a ,b IF a >b THEN PRINT a ELSEPRINT b END IF END例6.高等数学中经常用到符号函数,符号函数的定义为⎪⎩⎪⎨⎧<-=>=0,10,00,1x x x y ,试编写程序输入x 的值,输出y程序一:(嵌套结构) 程序框图:(右图) 程序语言: INPUT x IF x >0 THEN y =1 ELSEIF x =0 THEN y =0 ELSE y =-1 END IF END IF PRINT y END例7.设计一个计算1×3×5×7×…×99的算法,编写算法程序。
解析: 算法如下: 第一步:s =1; 第二步:i =3; 第三步:s =s×i; 第四步:i =i +2;第五步:如果i≤99,那么转到第三步; 第六步:输出s ; 程序如下:(“WHILE 型”循环语句) s =1 i =3WHILE i <=99 s =s*i i =i +2 WENDPRINT s END例8. 求三个数72,120,168的最大公约数. 解法1:用辗转相除法先求120,168的最大公约数,因为168120148,12048224,48242=⨯+=⨯+=⨯ 所以120,168的最大公约数是24. 再求72,24的最大公约数,因为72243=⨯,所以72,24的最大公约数为24, 即72,120,168的最大公约数为24.解法2:用更相减损术先求120,168的最大公约数,168-120=48,120-48=72,72-48=24,48-24=24 所以120,168的最大公约数为24. 再求72,24的最大公约数, 72-24=48,48-24=2472,24的最大公约数为24,即72,120,168的最大公约数为24.例9.用秦九韶算法求多项式5432()23456f x x x x x x =+++++在2x =时的值. 分析:先改写多项式,再由内向外计算.5432:()23456((((2)3)4)5)6f x x x x x x x x x x x =+++++=+++++解010*********,243114265576120v v v x v v x v v x v v x v v x ==+==+==+==+==+= 本题也可简写为下式:12345622822521144112657120例10.完成下列进制的转化(3)(10)(10)__________(8)(1)10202____(2)101==解: 420(3)(10)(1)10202132323101=⨯+⨯+⨯=(2)用8反复去除101,直到商为0止,所得的余数(从末位读起)就是十进制数101的8进制表示8101812581401余数 所以(10)(8)101145=一、选择题1 当2=x 时,下面的程序输出的结果是 ( )A 3B 7C 15D 17 2下边程序运行后输出的结果为( )A 50B 5C 25D 0二、填空题15()51a j WHILE j a a j MOD j j WENDPRINT aEND==<==+=+10411i s WHILE i s s x i i WEND PRINT I s U xE T N NP D==<==*+=+1.下面程序运行后输出的结果为_______________解析: 22,-222 三个数324,243,135的最大公约数是_________________解析:324243181,13581154,8154127,54272=⨯+=⨯+=⨯+=⨯.填27 三、解答题用秦九韶算法求多项式5432()34157678f x x x x x x =+-+++在2x =-时的值.543201021324354:()34157678((((34)15)76)7)83,421511769871898386f x x x x x x x x x x x v v v x v v x v v x v v x v v x =+-+++=+-+++==+=-=-=-=+==+=-=+=9.解520033,x y IF x THEN x y ELSE y y END IF PRINT x y y xEND==-<=-=+--。